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>

Attachment: signature.asc
Description: PGP signature

Reply via email to