Strengths, weaknesses, opportunities, and threats facing the GNU Autotools
I dearly regret that I adopted autotools for some of my projects. As TFA identifies, the primary problem autotools solved is no longer a problem: Linux, BSD, Darwin, and Cygwin are the targets today and they&#x27;re more-or-less portable and compliant. Meanwhile, autotools is a constant tax on the development cycle.<p>1. autoconf is awful to learn.<p>2. autoconf can be useful in determining the platform, dealing with a few quirks, and ensuring that system dependencies&#x2F;libraries are satisfied.<p>3. autoconf&#x27;s usefulness here is completely undermined by automake, as changing Makefile.am requires rerunning autoreconf, which then requires rerunning configure. So, developers must constantly rerun the configure script, even though nothing about their system environment has materially changed. For example, this happens when a new source file is created and added to Makefile.am.<p>4. Perhaps the most egregious missing weakness from TFA is acknowledgement that configure scripts are horrifically slow. It&#x27;s 2022 and developers have their time wasted by configure checking whether printf() exists.<p>5. automake documentation discourages developers from globbing source files in source directories, and insists they list them individually. It&#x27;s silly and just results in needless running of configure.<p>6. The complex interdependencies between generated files is nigh-impossible to understand and reason about. It&#x27;s cruft.<p>7. libtool is completely braindead, the absolute worst of it all. It serves absolutely no purpose on contemporary systems, but the docs continue to admonish developers that they must use it to stand a chance of creating a shared library (no, just learn to specify -fPIC). Instead of analyzing a project once, as part of autoconf, libtool determines what to do on the fly for every source file--and all in bash. It doubles a project&#x27;s compilation time.<p>8. Creating alternatives to libtool with new autoconf macros, deprecating libtool, and cleansing all traces of it from the planet should absolutely be the highest priority of the autotools project.