Announcement

Collapse
No announcement yet.

GLib 2.58 Is Looking Good With Portability Improvements, Efficient Process Launching

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • GLib 2.58 Is Looking Good With Portability Improvements, Efficient Process Launching

    Phoronix: GLib 2.58 Is Looking Good With Portability Improvements, Efficient Process Launching

    The GLib low-level GNOME library while being quite mature is seeing a significant update with its version 2.58 release due out this September for GNOME 3.30...

    http://www.phoronix.com/scan.php?pag...eatures-Coming

  • #2
    Typo:

    Originally posted by phoronix View Post

    Comment


    • #3
      This is all good and nice, as long as they don't drop autotools support. meson is a horrible mess, especially when you need cross compilation

      Comment


      • #4
        Originally posted by Redfoxmoon View Post
        This is all good and nice, as long as they don't drop autotools support. meson is a horrible mess, especially when you need cross compilation
        Agree. I don't know what they were thinking there.

        Comment


        • #5
          Originally posted by Redfoxmoon View Post
          This is all good and nice, as long as they don't drop autotools support. meson is a horrible mess, especially when you need cross compilation
          Why? I haven't tried before, but I just did with a test project, and it's pretty simple. You just describe the host platform (the platform the binary gonna run on) in a file, and start the build. Like:

          Code:
          $ cat cross-compile.ini 
          [binaries]
          cpp = '/usr/bin/i686-w64-mingw32-g++'
          ar  = '/usr/bin/i686-w64-mingw32-ar'
          
          [host_machine]
          system = 'windows'
          cpu_family = 'x86'
          cpu = 'i686'
          endian = 'little'
          
          $ meson cross-build --cross-file cross-compile.ini
          The Meson build system
          Version: 0.47.0
          Source dir: /home/constantine/Projects/meson-test
          Build dir: /home/constantine/Projects/meson-test/cross-build
          Build type: cross build
          Project name: foo
          Project version: 0.1.0
          Native C++ compiler: c++ (gcc 8.1.1 "c++ (GCC) 8.1.1 20180531")
          Cross C++ compiler: /usr/bin/i686-w64-mingw32-g++ (gcc 7.3.0)
          Host machine cpu family: x86
          Host machine cpu: i686
          Target machine cpu family: x86
          Target machine cpu: i686
          Build machine cpu family: x86_64
          Build machine cpu: x86_64
          Build targets in project: 1
          Found ninja-1.8.2 at /usr/bin/ninja
          WARNING: Cross file does not specify strip binary, result will not be stripped.
          
          $ ninja -C cross-build
          ninja: Entering directory `cross-build'
          [2/2] Linking target foo.exe.

          Comment


          • #6
            Originally posted by Hi-Angel View Post
            Why? I haven't tried before, but I just did with a test project, and it's pretty simple. You just describe the host platform (the platform the binary gonna run on) in a file, and start the build. Like:

            Code:
            $ cat cross-compile.ini
            [binaries]
            cpp = '/usr/bin/i686-w64-mingw32-g++'
            ar = '/usr/bin/i686-w64-mingw32-ar'
            
            [host_machine]
            system = 'windows'
            cpu_family = 'x86'
            cpu = 'i686'
            endian = 'little'
            
            $ meson cross-build --cross-file cross-compile.ini
            The Meson build system
            Version: 0.47.0
            Source dir: /home/constantine/Projects/meson-test
            Build dir: /home/constantine/Projects/meson-test/cross-build
            Build type: cross build
            Project name: foo
            Project version: 0.1.0
            Native C++ compiler: c++ (gcc 8.1.1 "c++ (GCC) 8.1.1 20180531")
            Cross C++ compiler: /usr/bin/i686-w64-mingw32-g++ (gcc 7.3.0)
            Host machine cpu family: x86
            Host machine cpu: i686
            Target machine cpu family: x86
            Target machine cpu: i686
            Build machine cpu family: x86_64
            Build machine cpu: x86_64
            Build targets in project: 1
            Found ninja-1.8.2 at /usr/bin/ninja
            WARNING: Cross file does not specify strip binary, result will not be stripped.
            
            $ ninja -C cross-build
            ninja: Entering directory `cross-build'
            [2/2] Linking target foo.exe.
            Yay you just compiled an example using meson. I have three major issues with meson:

            1. It's not platform agnostic like autotools once you patch config.sub with an *one liner*
            2. It explicitly depends on "cross files" with hardcoded paths to compilers and other tools for cross compilation: hello differing paths on peoples' systems!
            3. The authors explicitly won't support something like "CROSS_CFLAGS" environment variables, because "hurr durr reasons environment variables are eeeveeeel derp herp"

            All these (and probably more that I can't think of right now) makes meson get in your way when you're a package maintainer instead of helping you, like say, autotools.

            Comment


            • #7
              Originally posted by Hi-Angel View Post
              Why? I haven't tried before, but I just did with a test project, and it's pretty simple. You just describe the host platform (the platform the binary gonna run on) in a file, and start the build. Like:

              Code:
              $ cat cross-compile.ini
              [binaries]
              cpp = '/usr/bin/i686-w64-mingw32-g++'
              ar = '/usr/bin/i686-w64-mingw32-ar'
              
              [host_machine]
              system = 'windows'
              cpu_family = 'x86'
              cpu = 'i686'
              endian = 'little'
              
              $ meson cross-build --cross-file cross-compile.ini
              The Meson build system
              Version: 0.47.0
              Source dir: /home/constantine/Projects/meson-test
              Build dir: /home/constantine/Projects/meson-test/cross-build
              Build type: cross build
              Project name: foo
              Project version: 0.1.0
              Native C++ compiler: c++ (gcc 8.1.1 "c++ (GCC) 8.1.1 20180531")
              Cross C++ compiler: /usr/bin/i686-w64-mingw32-g++ (gcc 7.3.0)
              Host machine cpu family: x86
              Host machine cpu: i686
              Target machine cpu family: x86
              Target machine cpu: i686
              Build machine cpu family: x86_64
              Build machine cpu: x86_64
              Build targets in project: 1
              Found ninja-1.8.2 at /usr/bin/ninja
              WARNING: Cross file does not specify strip binary, result will not be stripped.
              
              $ ninja -C cross-build
              ninja: Entering directory `cross-build'
              [2/2] Linking target foo.exe.
              Code:
              [binaries]
              cpp = '/usr/bin/i686-w64-mingw32-g++'
              ar = '/usr/bin/i686-w64-mingw32-ar'
              That can only ever work on a small subset of systems...

              Comment


              • #8
                Originally posted by brrrrttttt View Post
                Code:
                [binaries]
                cpp = '/usr/bin/i686-w64-mingw32-g++'
                ar = '/usr/bin/i686-w64-mingw32-ar'
                That can only ever work on a small subset of systems...
                Weeeell, yeah, point 1 and 2 of Redfoxmoon's post made me tackle with it a bit more, and turned out it's a bug: string concatenation doesn't work.

                Comment

                Working...
                X