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.
  • cinebox@masto.hackers.townC This user is from outside of this forum
    cinebox@masto.hackers.townC This user is from outside of this forum
    cinebox@masto.hackers.town
    wrote last edited by
    #11

    @whitequark Any sufficiently complicated Cmake project contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of a working build system.

    1 Reply Last reply
    0
    • asmw@infosec.exchangeA This user is from outside of this forum
      asmw@infosec.exchangeA This user is from outside of this forum
      asmw@infosec.exchange
      wrote last edited by
      #12

      @whitequark

      The world of buildsystems is weird and fascinating.

      My opinion on cmake is that (for certain domains) it's the best there is, and that's sad.

      J 1 Reply Last reply
      0
      • 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
        #13

        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)

        whitequark@social.treehouse.systemsW chrisvest@mastodon.socialC noisytoot@berkeley.edu.plN lambda@chaosfurs.socialL ppxl@social.tchncs.deP 6 Replies 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)

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

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

            chrisvest@mastodon.socialC This user is from outside of this forum
            chrisvest@mastodon.socialC This user is from outside of this forum
            chrisvest@mastodon.social
            wrote last edited by
            #15

            @whitequark Catherine is just doing build system freediving again

            snoopj@hachyderm.ioS 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)

              noisytoot@berkeley.edu.plN This user is from outside of this forum
              noisytoot@berkeley.edu.plN This user is from outside of this forum
              noisytoot@berkeley.edu.pl
              wrote last edited by
              #16
              @whitequark what is it using rot13 for?
              whitequark@social.treehouse.systemsW 1 Reply Last reply
              0
              • chrisvest@mastodon.socialC chrisvest@mastodon.social

                @whitequark Catherine is just doing build system freediving again

                snoopj@hachyderm.ioS This user is from outside of this forum
                snoopj@hachyderm.ioS This user is from outside of this forum
                snoopj@hachyderm.io
                wrote last edited by
                #17

                @chrisvest @whitequark what an amazing turn of phrase, thank you for this

                1 Reply Last reply
                0
                • noisytoot@berkeley.edu.plN noisytoot@berkeley.edu.pl
                  @whitequark what is it using rot13 for?
                  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
                  #18

                  @noisytoot i think it was trying to grep itself but without hitting the grep call, or something similarly unhinged

                  1 Reply Last reply
                  0
                  • xgranade@wandering.shopX This user is from outside of this forum
                    xgranade@wandering.shopX This user is from outside of this forum
                    xgranade@wandering.shop
                    wrote last edited by
                    #19

                    @whitequark Gah. This, this, this. I like having Makefiles or similar to capture blessed ways of invoking build systems, but yeah, there's a reason build systems exist, ffs.

                    eloy@hsnl.socialE 1 Reply Last reply
                    0
                    • xgranade@wandering.shopX xgranade@wandering.shop

                      @whitequark Gah. This, this, this. I like having Makefiles or similar to capture blessed ways of invoking build systems, but yeah, there's a reason build systems exist, ffs.

                      eloy@hsnl.socialE This user is from outside of this forum
                      eloy@hsnl.socialE This user is from outside of this forum
                      eloy@hsnl.social
                      wrote last edited by
                      #20

                      @xgranade @whitequark developer looking at essential complexity: I can remove this accidental complexity

                      1 Reply Last reply
                      0
                      • 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
                        #21

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

                        artemis@with.iridium.inkA 1 Reply Last reply
                        0
                        • 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
                                          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