Follow

my therapist: The GNU Build System aka Autotools isn’t real. It can’t hurt you.

the GNU Build System aka Autotools:

@Ste1lar
It eliminates cross-platform build issues by forcing you to focus so much on autotools that you have no time to fix cross-platform build issues

@Ste1lar @jordyd It mostly tries to determine if you're running on Sun OS or Irix, and if it can find a FORTRAN compiler.

@jordyd actual thank you just for the graph alone

@jordyd Oh yeah? Have a look at Bazel, and may God have mercy on your soul.

@jordyd so many of us have Post-Traumatic Autotools Disorder it’s hard to admit it. We tend to be software porters and packagers.

@jordyd Oh, cool. I've never seen such a graph and never understood how GNU people can remember what goes where. BSD make is a monoculture but is so much simpler.

Simple example: github.com/openbsd/src/blob/ma

Complex example: github.com/openbsd/src/blob/ma

@mike @jordyd Even BSD software uses autoconf as soon as it wants to be portable (e.g. OpenSSH). There’s no way around it if you want things to be portable.

@js @jordyd This is correct, but still autotools do a lot more than is required. I'm fine with failing to compile a program if system doesn't have snprintf (-:

@mike @jordyd It actually only does the checks someone tells it to. Most people copy paste a bunch of checks that are unnecessary and their results unused. But that’s a problem of using it wrong :).

@eak @mike @jordyd You can fuck everything up by just copying code you don’t understand. No language or tool can guard against incompetence ;).

@js @eak @mike
Autotools is a pile of tree branches, rocks, and dirt held together with Elmer’s glue and duct tape, and provided such materials I would not fault the builder for incompetence. I believe that Autotools, when used properly, really is the best tool for the job, but that doesn’t make it a /good/ tool.

That said I don’t think I’ve ever seen a genuinely /good/ build system for C et al., so maybe Autotools really is the best we can hope to accomplish, at least for those languages.

@jordyd @eak @mike I agree on autotools being a mess, but if you use just autoconf and nothing else, I think it’s pretty good. It’s by far not perfect, but way better than anything else. And it does proper feature checks instead of just looking for the name of the OS.

@jordyd @eak @mike That said, I still intend on writing a replacement some day where checks have dependencies on each other and you can then run them in parallel. Configure only using a single core is becoming a joke when you then compile with 64 cores.

@js @eak @mike
Now that would be interesting! I often wonder if the GCC build spends more time running configure scripts or actually compiling

@jordyd @eak @mike Depends on the number of cores, of course ;)

@mike @jordyd @eak Nope, all serial in CMake. And also lots of OS checks instead of feature checks.

@mike @jordyd Reminds me that gentoo has a huge pile of documents put everywhere (wiki, dev.gentoo.org and personnal dev blogs) for autotools while I'm not even sure if they have documentation for cmake/meson other than the ebuild helper…

There is a similar graph and explanations on https://devmanual.gentoo.org/general-concepts/autotools/index.html btw.
@jordyd never liked it. Never really works on non-Linux, either.
Sign in to participate in the conversation
Octodon

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!