Hi Collin, > Date: 2026-08-23 19:01:06-0700 > From: Collin Funk <[email protected]> > > "G. Branden Robinson" <[email protected]> writes: > > >> Interesting. The day someone complains again about my makefiles, I'll > >> point to this data. I checked a few other projects out of curiosity: > >> > >> alx@devuan:~/src/shadow/shadow/master$ find | grep '\.am$' | grep -v > >> gnulib | sort | xargs wc -c | tail -n1 > >> 31885 total > >> alx@devuan:~/src/gnu/glibc/master$ find | grep '\.am$' | grep -v gnulib > >> | sort | xargs wc -c | tail -n1 > >> 0 > >> alx@devuan:~/src/gnu/gcc/master$ find | grep '\.am$' | grep -v gnulib | > >> sort | xargs wc -c | tail -n1 > >> 1527474 total > >> alx@devuan:~/src/gnu/coreutils/master$ find | grep '\.am$' | grep -v > >> gnulib | sort | xargs wc -c | tail -n1 > >> 8171 ./Makefile.am > >> alx@devuan:~/src/gnu/findutils/master$ find | grep '\.am$' | grep -v > >> gnulib | sort | xargs wc -c | tail -n1 > >> 35765 total > >> > >> Does glibc not use automake? What do they use? > > > > Hand-written Makefiles, apparently! For a while I followed their Git > > commits, but I'm well behind on them. glibc and GCC saturated my > > ability to keep up with the projects I track. > > Yes, glibc uses GNU make extensively. It is quite difficult to read if > you do not understand GNU make extensions, compared to Automake which is > for the most part just declaring targets and sources.
'for the most part' of the text written. Then you have to understand everything that isn't written, which is more difficult than grepping in the GNU Make manual for a few extensions. You don't know '?:=' in GNU Make, then grep for '?:=' in the GNU Make manual. Simple. You don't know why/how Automake is doing something? Good luck guessing why. > It also requires > more upkeep to make sure things work correctly, e.g., parallelism. This is not true. The shadow-utils project (which uses autotools) has bugs open for years because `make dist -j4` doesn't work (and it hasn't been fixed yet). The Linux man-pages build system works fine with -j128. Ignoring the initial cost in writing the build system, maintenance is quite cheap. And if a bug ever shows up in the GNU Make code, I'm confident it'll take a few minutes to debug it and fix it. The parallelism problem in makefiles comes from incorrect use of makefiles. That is, use of recursive make(1). But recursive make(1) is discouraged. If you have a single make(1) process controlling everything, it runs smoothly. > So, I don't think pointing out that Automake files have a similar file > size to regular Makefiles is a good comparison. Given the same size, Automake is less readable, because it has more implicit assumptions. In GNU Make, there are very few assumptions, and I bring that to zero by disabling the builtins. If you can't read the grammar, it's a matter of reading the documentation. GNU Make has pretty good documentation. Have a lovely day! Alex > > Collin -- <https://www.alejandro-colomar.es>
signature.asc
Description: PGP signature
