Rejuvenating Autoconf
Rejuvenating Autoconf
Posted Oct 25, 2020 22:30 UTC (Sun) by Cyberax (✭ supporter ✭, #52523)In reply to: Rejuvenating Autoconf by nix
Parent article: Rejuvenating Autoconf
> just upgrading autoconf versions is a very big job for GCC, let alone switching build systems
GCC is an example of how NOT to do things. Clang+LLVM is of comparable complexity, yet its build system is stupidly easy to follow and understand:
https://github.com/llvm-mirror/clang/blob/master/CMakeLis... and https://github.com/llvm/llvm-project/blob/master/llvm/CMa... (yes, there are some helper files, but the bulk of functionality is in these two files).
Perhaps GCC should just spend a couple of weeks migrating to something sane instead of continuing to try and eat the cactus? And yes, it's going to take about 2-3 weeks of work.
> Autoconf is in widespread, active use still. Things in widespread, active use need maintenance as the world around them changes. Autoconf hasn't had it of late: it's really good it's seeing some.
Sometimes maintenance should mean just killing it.
Posted Oct 25, 2020 22:33 UTC (Sun)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Posted Oct 26, 2020 15:39 UTC (Mon)
by nix (subscriber, #2304)
[Link] (10 responses)
(And CMake is probably impossible to use as a replacement: last I checked its cross-compilation support was terrible. Meson might be usable, in time, but even there the problem is that it depends on Python 3, and that's a long way down the dependency stack for a foundational toolchain component like the C compiler.)
Posted Oct 26, 2020 16:33 UTC (Mon)
by mathstuf (subscriber, #69389)
[Link]
Posted Oct 26, 2020 17:09 UTC (Mon)
by Cyberax (✭ supporter ✭, #52523)
[Link] (7 responses)
The bootstrap stage can be removed entirely, it serves no real purpose these days. But leaving it is not a big deal, you'll just need staged CMake files for this (at least that's how I would do it).
The rest of normal GCC is just a C++ program, nothing really special (sure, a lot of care needs to be taken to handle all the build options).
And the final part is the test suite. I have far less experience there.
> And CMake is probably impossible to use as a replacement: last I checked its cross-compilation support was terrible.
Posted Oct 27, 2020 14:06 UTC (Tue)
by peter-b (subscriber, #66996)
[Link] (6 responses)
As an escapee from compiler development, I can absolutely assure you that compiler bootstrapping is still not merely important but essential.
Posted Oct 27, 2020 14:57 UTC (Tue)
by smurf (subscriber, #17840)
[Link]
The latter is proper bootstrapping. You need (or needed) it to build a Rust compiler that's written in C, before you can switch to the "real" Rust compiler written in Rust. (s/Rust/Golang/ if you want to. Or whatever.)
The former is not.
As there's no realistic scenario where you'd want to build GCC with a non-GCC compiler (Clang understands GCC's C extensions, thus it doesn't count) GCC's bootstrapping infrastructure is superfluous. Yes you need to keep some bits&pieces of it for cross-compiling to another architecture – but that's cross-compiling, not bootstrapping.
Posted Oct 27, 2020 15:23 UTC (Tue)
by FraserJGordon (subscriber, #96690)
[Link]
Posted Oct 27, 2020 18:20 UTC (Tue)
by Cyberax (✭ supporter ✭, #52523)
[Link] (1 responses)
GCC is not a particularly involved code, so it can just be written to run on something reasonable (modern-ish Clang, gcc, MSVC). With cross-compilation support this will be enough for anything realistic.
Posted Nov 20, 2020 21:51 UTC (Fri)
by nix (subscriber, #2304)
[Link]
Posted Oct 28, 2020 3:13 UTC (Wed)
by pabs (subscriber, #43278)
[Link] (1 responses)
Posted Oct 28, 2020 3:24 UTC (Wed)
by Cyberax (✭ supporter ✭, #52523)
[Link]
And it doesn't even apply here, the "boostrap" stage in GCC still requires a compiler, it just has very low requirements for it.
Posted Oct 30, 2020 21:52 UTC (Fri)
by jonesmz (subscriber, #130234)
[Link]
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf
Check it again.
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf
Rejuvenating Autoconf