Let's say I have 5 or so "different" machines. For argument's sake, let's say they vary only in processor architecture: MIPS, x86, ARM, Alpha, SPARC, PowerPC, HPPA (seven) They all have glibc, Linux kernel same version, GNU cc/as/ld same versions. Or maybe only one of them to start has any cc/as/ld. I'd like them each support the following commands: i686-linux-gnu-gcc amd64-linux-gnu-gcc (i686-linux-gnu-gcc -m64) alpha-linux-gnu-gcc mips-linux-gnu-gcc arm-linux-gnu-gcc sparc-linux-gnu-gcc sparc64-linux-gnu-gcc (or sparc-linux-gnu-gcc -m64) hppa-linux-gnu-gcc hppa64-linux-gnu-gcc (or hppa-linux-gnu-gcc -m64) ppc-linux-gnu-gcc ppc64-linux-gnu-gcc (or ppc-linux-gnu-gcc -m64) or better yet gcc -target=i386-linux-gnu gcc -target=i686-linux-gnu gcc -target=alpha-linux-gnu etc. Now, I do know how to construct this (the first version). Reality includes Darwin, Solaris, Cygwin, FreeBSD, NetBSD, OpenBSD, not always GNU as/ld, not always glibc. But let's forget that. My question is though, has anyone considered altering things so that this can be easily constructed without recompiling the same code so many times? Possibly including: really change all #if to if, #define to "something" (function pointers in many cases I imagine) Enough such that the frontend has no target assumption and that each machine would have just one "cc1.so" and n "libbackend.so"s. (Yes, I realize, these files don't exist today.) Just not worthwhile? In this vein, similarly: gcc -with-as=/usr/ccs/bin/as vs. gcc -with-as=/usr/sfw/bin/gas To some exent it could sniff GNU vs. Sun as just by the path. If it ends in "/gas", it is GNU. If it is == "/usr/ccs/bin/as", it is Sun. Is there a combinatorial explosion here and therefore impossible? Binutils supports this notion now as I understand, "all targets" in one binary. But I realize they don't probe a bajillion little details about the underlying assembler and then bake in decisions based on that. gmp/mpfr/mpc seems particularly expensive to recompile so many times. I've taken to not doing that, at least when host and build aren't varying and only target is. - Jay