On 2005-04-28, at 03:06, Peter Barada wrote:
Well, yes. 1 second/file is still slow! I want "make" to complete instantaneously! Don't you?
Actually I want it to complete before I even start, but I don't want to get too greedy. :)
What's really sad is that for cross-compilation of the toolchain, we have to repeat a few steps (build gcc twice, build glibc twice) because glibc and gcc assume that a near-complete environment is available(such as gcc needing headers, and glibc needing -lgcc-eh), so even really fast machines(2.4Ghz P4) take an hour to do a cross-build from scratch.
Actually what GCC needs to know are the following:
1. What will the signal strucutre look alike on the target system. In esp.: What does the kernel think? What does the glibc think? 2. Do we do TLS? 3. Do we do linuxthreads or nptl?
glibc just wants:
1. Say hello to libgcc_s 2. Does the compiler support TLS?
And then don't forget that libgcc_s wants:
1. Say hello to C++, in a way requiring libc functions for exception handling.
With a "tad bit" of work the double compilation can be avoided for the glibc.
You will have to build a GCC with static libgcc first and you will only need
the second gcc build cycle to get a dynamic libgcc_s as well as C++, since
C++ makes a shared libgcc mandatory.
The whole double build could be avoided if:
1. It would be possible to build libgcc for itself without rebuilding the
whole compiler.
2. It would be possible to build first the C compiler and then just the C++ compiler.
2. The information required by glibc could be provided statically to it.
All of the above are basically problems of the "configure" system - which isn't pretty.