On Sat, Jan 30, 2021 at 12:17 PM Zelphir Kaltstahl < zelphirkaltst...@posteo.de> wrote:
There is a whole jungle of stuff, that I do not yet understand in depth. > You are not alone. Warning: completely partisan posting here. > Why does guile-haunt use Makefile.am? Why is a simple Makefile not > sufficient? > Cargo-cult programming. Autotools was created in a pre-Posix, pre-ANSI-C environment that was *much* more diverse than anything today. Consequently, it makes a whole bunch of unnecessary tests. What's more, the generated ./configure file is a great big mess; if it has a bug, you are pretty much out of luck. I posted this back in 2012 on another forum: Chicken, an excellent implementation of Scheme, has a very badass attitude to configuration, as follows: You tell “make” if you are running on Linux, BSD, Mac OS X, Solaris, Haiku, Cygwin, MinGW, or MinGW+MSYS, and then a short platform-specific makefile writes out a little .h file and builds everything else as-is. If you are *not* running one of those, you’re on your own — but the community welcomes patches. [2020 update: You don't even have to tell it your OS and toolchain any more; it looks at uname(1), with a hack for MinGW where uname does not exist.] This is the outcome of many years struggling with autotools, and several more struggling with CMake. (Chicken compiles Scheme to C and is written in Scheme, so it has to bootstrap itself, something CMake doesn’t or didn’t like.) [Supposedly CMake has fixed this problem now.] By contrast, I did a bad restore from backup the other day, and Guile (which uses autotools, small blame to the maintainers — the FSF insists on it) got confused because I hadn’t restored the file timestamps properly, so the byte-compiled Scheme looked out of date relative to the source. No biggie, I just rebuilt Guile from scratch. Ouch. That took longer than it would have to *re-restore the backup three times over*, and the hard time was struggling with autotools; I had to run ./configure about twelve times before it reported all the missing C-level dependencies (not really missing, just out of date). [end of quotation] My own attempt at an answer: Autotools seem to try to be a compatibility > layer for many different systems Most of which no longer exist. Autotools is the complete opposite of Scheme: it piles feature on top of feature rather than removing the weaknesses and restrictions that make additional features appear necessary. John Cowan http://vrici.lojban.org/~cowan co...@ccil.org Is it not written, "That which is written, is written"?