lots of cross compilers without recompiling everything so many times?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

 		 	   		  


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux