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...

    Phoronix, Linux Hardware Reviews, Linux hardware benchmarks, Linux server benchmarks, Linux benchmarking, Desktop Linux, Linux performance, Open Source graphics, Linux How To, Ubuntu benchmarks, Ubuntu hardware, Phoronix Test Suite

  • #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