Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Cyborg)
  • No Skin
Collapse
Brand Logo

CIRCLE WITH A DOT

  1. Home
  2. Uncategorized
  3. current status: writing a build system in cmake

current status: writing a build system in cmake

Scheduled Pinned Locked Moved Uncategorized
45 Posts 23 Posters 3 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • artemis@with.iridium.inkA artemis@with.iridium.ink

    @whitequark every succesful Makefile-driven project I've seen is in fact a complex Makefile

    artemis@with.iridium.inkA This user is from outside of this forum
    artemis@with.iridium.inkA This user is from outside of this forum
    artemis@with.iridium.ink
    wrote last edited by
    #22

    @whitequark or i suppose a more accurate way of looking at it, is it seems the Makefile complexity scales with project complexity, and if it is not doing that then there is probably something fragile about it you're not seeing

    artemis@with.iridium.inkA 1 Reply Last reply
    0
    • artemis@with.iridium.inkA artemis@with.iridium.ink

      @whitequark or i suppose a more accurate way of looking at it, is it seems the Makefile complexity scales with project complexity, and if it is not doing that then there is probably something fragile about it you're not seeing

      artemis@with.iridium.inkA This user is from outside of this forum
      artemis@with.iridium.inkA This user is from outside of this forum
      artemis@with.iridium.ink
      wrote last edited by
      #23

      @whitequark the lua interpreter, for example, 450 lines of Makefile. and that's plenty enough to cross compile, build on a wide array of OSes, and even target microcontrollers like on my Nintendo DS. Good example of a simple project with a simple Makefile

      xD

      1 Reply Last reply
      0
      • dequbed@mastodon.chaosfield.atD This user is from outside of this forum
        dequbed@mastodon.chaosfield.atD This user is from outside of this forum
        dequbed@mastodon.chaosfield.at
        wrote last edited by
        #24

        @whitequark This is why I really enjoy the sentiment behind shake. Because sometimes when it comes to build systems the “simplest” solution means giving the developer access to all of Haskell and telling her to go nuts 😄

        (Not saying shake is a good general solution for build systems. It very much isn't. But it beats the bundle of legacy makefiles that could legally drink in most of europe 9 times of 10)

        whitequark@social.treehouse.systemsW 1 Reply Last reply
        0
        • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

          to be clear i'm not doing this because i love writing cmake syntax that would drive mere mortals mad. i do it because i'm replacing a "simple Makefile" that has perhaps once fit that bill, but eventually turned into a 1200-line (not including *.inc files) monstrosity with a load-bearing rot13 call inside of a manual reimplementation of half of git submodule

          (this particular monstrosity has since been removed but the overall genre has not changed)

          lambda@chaosfurs.socialL This user is from outside of this forum
          lambda@chaosfurs.socialL This user is from outside of this forum
          lambda@chaosfurs.social
          wrote last edited by
          #25

          @whitequark oh lmao I think I know what you're talking about, and I think I touched that rot13 monstrosity at one point

          1 Reply Last reply
          0
          • dequbed@mastodon.chaosfield.atD dequbed@mastodon.chaosfield.at

            @whitequark This is why I really enjoy the sentiment behind shake. Because sometimes when it comes to build systems the “simplest” solution means giving the developer access to all of Haskell and telling her to go nuts 😄

            (Not saying shake is a good general solution for build systems. It very much isn't. But it beats the bundle of legacy makefiles that could legally drink in most of europe 9 times of 10)

            whitequark@social.treehouse.systemsW This user is from outside of this forum
            whitequark@social.treehouse.systemsW This user is from outside of this forum
            whitequark@social.treehouse.systems
            wrote last edited by
            #26

            @dequbed I haven't used shake but I did use ocamlbuild and the other thing I forget the name of, and it was somewhat preferable to some of the makefiles

            dune (a declarative ocaml build system) is way better though

            dequbed@mastodon.chaosfield.atD 1 Reply Last reply
            0
            • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

              @dequbed I haven't used shake but I did use ocamlbuild and the other thing I forget the name of, and it was somewhat preferable to some of the makefiles

              dune (a declarative ocaml build system) is way better though

              dequbed@mastodon.chaosfield.atD This user is from outside of this forum
              dequbed@mastodon.chaosfield.atD This user is from outside of this forum
              dequbed@mastodon.chaosfield.at
              wrote last edited by
              #27

              @whitequark I like Shake because it's very good about using the ability of Haskell to create ad-hoc declarative DSLs to give an user a very declarative toolkit while having an escape hatch *right there*. But I have used little of the alternatives either, I rarely have to fiddle around in the bowels of complex build processes and I'm very glad about that.

              1 Reply Last reply
              0
              • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                current status: writing a build system in cmake

                not "something that builds a project and is also implemented in implemented in cmake"

                no, it is "something that is implemented in cmake and can be used to implement a build system that is in turn used as a part of a build system (also in cmake)"

                aismallard@woem.spaceA This user is from outside of this forum
                aismallard@woem.spaceA This user is from outside of this forum
                aismallard@woem.space
                wrote last edited by
                #28

                @whitequark@social.treehouse.systems c²make

                arcterus@wafrn.vaguely.artA 1 Reply Last reply
                0
                • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                  to be clear i'm not doing this because i love writing cmake syntax that would drive mere mortals mad. i do it because i'm replacing a "simple Makefile" that has perhaps once fit that bill, but eventually turned into a 1200-line (not including *.inc files) monstrosity with a load-bearing rot13 call inside of a manual reimplementation of half of git submodule

                  (this particular monstrosity has since been removed but the overall genre has not changed)

                  ppxl@social.tchncs.deP This user is from outside of this forum
                  ppxl@social.tchncs.deP This user is from outside of this forum
                  ppxl@social.tchncs.de
                  wrote last edited by
                  #29

                  @whitequark a load bearing WHAT again?!

                  1 Reply Last reply
                  0
                  • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                    every time you run make it executes so many $(shell) calls (there are 40 of them, though some would be ifeq'd out) that it takes more time to create a dependency graph than to incrementally compile and link one compilation unit*

                    * if you use lld and split-dwarf, but still

                    recursive@hachyderm.ioR This user is from outside of this forum
                    recursive@hachyderm.ioR This user is from outside of this forum
                    recursive@hachyderm.io
                    wrote last edited by
                    #30

                    @whitequark The culture of "it's nearly free to fork and exec" is wild. Got us autoconf too, I guess

                    whitequark@social.treehouse.systemsW 1 Reply Last reply
                    0
                    • recursive@hachyderm.ioR recursive@hachyderm.io

                      @whitequark The culture of "it's nearly free to fork and exec" is wild. Got us autoconf too, I guess

                      whitequark@social.treehouse.systemsW This user is from outside of this forum
                      whitequark@social.treehouse.systemsW This user is from outside of this forum
                      whitequark@social.treehouse.systems
                      wrote last edited by
                      #31

                      @recursive my solution to this was to use kati, google's make with a ninja backend

                      technically this probably caused some sort of staleness somewhere in the system but it was so much faster when i needed rapid iteration that it was totally worth it

                      recursive@hachyderm.ioR 1 Reply Last reply
                      0
                      • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                        @recursive my solution to this was to use kati, google's make with a ninja backend

                        technically this probably caused some sort of staleness somewhere in the system but it was so much faster when i needed rapid iteration that it was totally worth it

                        recursive@hachyderm.ioR This user is from outside of this forum
                        recursive@hachyderm.ioR This user is from outside of this forum
                        recursive@hachyderm.io
                        wrote last edited by
                        #32

                        @whitequark coworkers of mine several years ago changed our forked 'premake' (some lua thing) from generating makefiles to ninja files, and it seemed like a decent thing to target with automatic generation

                        whitequark@social.treehouse.systemsW 1 Reply Last reply
                        0
                        • recursive@hachyderm.ioR recursive@hachyderm.io

                          @whitequark coworkers of mine several years ago changed our forked 'premake' (some lua thing) from generating makefiles to ninja files, and it seemed like a decent thing to target with automatic generation

                          whitequark@social.treehouse.systemsW This user is from outside of this forum
                          whitequark@social.treehouse.systemsW This user is from outside of this forum
                          whitequark@social.treehouse.systems
                          wrote last edited by
                          #33

                          @recursive oh yeah ninja is excellent. not just the software but the specification, which is one of the few emergent ones that are just good somehow

                          whitequark@social.treehouse.systemsW 1 Reply Last reply
                          0
                          • aismallard@woem.spaceA aismallard@woem.space

                            @whitequark@social.treehouse.systems c²make

                            arcterus@wafrn.vaguely.artA This user is from outside of this forum
                            arcterus@wafrn.vaguely.artA This user is from outside of this forum
                            arcterus@wafrn.vaguely.art
                            wrote last edited by
                            #34

                            @aismallard@woem.space @whitequark@social.treehouse.systems

                            cmake with classes

                            whitequark@social.treehouse.systemsW 1 Reply Last reply
                            0
                            • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                              @recursive oh yeah ninja is excellent. not just the software but the specification, which is one of the few emergent ones that are just good somehow

                              whitequark@social.treehouse.systemsW This user is from outside of this forum
                              whitequark@social.treehouse.systemsW This user is from outside of this forum
                              whitequark@social.treehouse.systems
                              wrote last edited by
                              #35

                              @recursive ninja files are basically what makefiles should have been, easily parsable, mostly declarative dependency graph descriptions without the bewildering mass of features that accumulates if you also try to shoehorn an UI into it

                              1 Reply Last reply
                              0
                              • arcterus@wafrn.vaguely.artA arcterus@wafrn.vaguely.art

                                @aismallard@woem.space @whitequark@social.treehouse.systems

                                cmake with classes

                                whitequark@social.treehouse.systemsW This user is from outside of this forum
                                whitequark@social.treehouse.systemsW This user is from outside of this forum
                                whitequark@social.treehouse.systems
                                wrote last edited by
                                #36

                                @arcterus @aismallard aaa

                                1 Reply Last reply
                                0
                                • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                                  to be clear i'm not doing this because i love writing cmake syntax that would drive mere mortals mad. i do it because i'm replacing a "simple Makefile" that has perhaps once fit that bill, but eventually turned into a 1200-line (not including *.inc files) monstrosity with a load-bearing rot13 call inside of a manual reimplementation of half of git submodule

                                  (this particular monstrosity has since been removed but the overall genre has not changed)

                                  c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                  c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                  c0dec0dec0de@hachyderm.io
                                  wrote last edited by
                                  #37

                                  @whitequark ah, the fingerprints of an engineer who is very capable, but doesn’t bother to read the docs or think about alternatives…
                                  I’ve reimplemented a git LFS client without knowing that’s what I was doing.

                                  1 Reply Last reply
                                  0
                                  • c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                    c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                    c0dec0dec0de@hachyderm.io
                                    wrote last edited by
                                    #38

                                    @whitequark I mean very minimal. Like it fetched the bits I needed. “God, why are these binary files just a sha hash? Oh, and there are files over here with those hashes as names, fine, let’s do this.”

                                    c0dec0dec0de@hachyderm.ioC 1 Reply Last reply
                                    0
                                    • c0dec0dec0de@hachyderm.ioC c0dec0dec0de@hachyderm.io

                                      @whitequark I mean very minimal. Like it fetched the bits I needed. “God, why are these binary files just a sha hash? Oh, and there are files over here with those hashes as names, fine, let’s do this.”

                                      c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                      c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                      c0dec0dec0de@hachyderm.io
                                      wrote last edited by
                                      #39

                                      @whitequark self-awareness is not always online

                                      1 Reply Last reply
                                      0
                                      • whitequark@social.treehouse.systemsW whitequark@social.treehouse.systems

                                        current status: writing a build system in cmake

                                        not "something that builds a project and is also implemented in implemented in cmake"

                                        no, it is "something that is implemented in cmake and can be used to implement a build system that is in turn used as a part of a build system (also in cmake)"

                                        nelhage@mastodon.socialN This user is from outside of this forum
                                        nelhage@mastodon.socialN This user is from outside of this forum
                                        nelhage@mastodon.social
                                        wrote last edited by
                                        #40

                                        @whitequark I have described the Linux kernel's build system as "a build system implemented in GNU make," so, seems normal.

                                        1 Reply Last reply
                                        0
                                        • c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                          c0dec0dec0de@hachyderm.ioC This user is from outside of this forum
                                          c0dec0dec0de@hachyderm.io
                                          wrote last edited by
                                          #41

                                          @pikhq @whitequark there are a lot of people for whom build systems are just not on their radar. I don’t understand them in the least, but I have definitely observed them in action.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups