Hi Groups: Right now I am studying the procedure of building gcc(mipsel cross compiler), so I look into the makefiles generated by configure procedure. This message is about the top level makefile, I got most of it (It's some kind of well structured) except several puzzles as following
1 : At the end of that makefile , There is a section noted as "Regenerating top level configury". It is clear what it do, but for what? Where is this piece of code used in building procedure? 2 : At lines around 462, There is a variable named "RECURSE_FLAGS", I also puzzled about its usage. It says that "When doing recursive invocations of the top-level Makefile, we don't want the outer make to evaluate them, so we pass these variables down unchanged. " Does it mean we will recall the top level makefile? if so, Is "RECURSE_FLAGS" have any relations with the first question. Maybe both "Regenerating top level configury" and "RECURSE_FLAGS" is used to compile gcc several times in bootstrap. Here I need a confirmation. 3 : For the cross compiler, I configured and compiled gcc twice, once with just language C supported, once with languages C/C++ supported. I compared the two top level makefile generated by configure and found the difference is that libiberty and libstdc++-v3 is compiled for target at the second time. So here is the question: libstdc++v3 is compiled for target as the c++ runtime library, but what libiberty for? I can only infer that libstdc++v3 needs it(otherwise why the first time which only supports c language do not have it compiled?). Unfortunately, I did not find any code in libstdc++-v3 which calls functions in libiberty. Following is the arguments I used to configure makefile two times, if it useful. First time (for C): /cygdrive/e/work/buildroot/buildroot/toolchain_build_mipsel_nofpu/gcc-3.4.2/configure --prefix=/cygdrive/e/work/buildroot/buildroot/build_mipsel_nofpu/staging_dir --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=mipsel-linux-uclibc --enable-languages=c --with-sysroot=/cygdrive/e/work/buildroot/buildroot/toolchain_build_mipsel_nofpu/uClibc_dev/ --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-shared --disable-nls --enable-threads --enable-multilib --with-float=soft ----------------------------------------------------------------------------------------------------------- Second time (for C&C++): /cygdrive/e/work/buildroot/buildroot/toolchain_build_mipsel_nofpu/gcc-3.4.2/configure --prefix=/cygdrive/e/work/buildroot/buildroot/build_mipsel_nofpu/staging_dir --build=i386-pc-linux-gnu --host=i386-pc-linux-gnu --target=mipsel-linux-uclibc --enable-languages=c --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-shared --disable-nls --enable-threads --enable-multilib --with-float=soft ----------------------------------------------------------------------------------------------------------- Thanks is advance and any messages will be appreciated. Best wishes.