Coupla minor things: 1) Give the user the option of not nuking $PREFIX before building and installing. $PREFIX may be shared across many targets; everything not under $PREFIX/$TARGET has its filename prefixed with $TARGET, supposedly. Maybe just nuke $PREFIX/$TARGET in the future? 2) If only a C compiler was built, only test compiling C. 3) Correct the test for only building a C compiler. Configure doesn't understand quotes, so we shouldn't be looking for them. 4) Put ${GCC_EXTRA_CONFIG} last on the configure line so it can override contrary options specified directly in crosstool. (Dan: is this necessary???) Index: all.sh =================================================================== RCS file: /home/cvs/tools/crosstool-0.25/all.sh,v retrieving revision 1.2 diff -d -u -r1.2 all.sh --- crosstool-0.25/all.sh 18 Dec 2003 02:57:06 -0000 1.2 +++ crosstool-0.25/all.sh 19 Dec 2003 23:55:57 -0000 @@ -83,8 +83,10 @@ if test "$opt_no_build" = ""; then # Build - rm -rf $PREFIX - mkdir -p $PREFIX + if test -z "$PREFIX_NO_REMOVE"; then + rm -rf $PREFIX + mkdir -p $PREFIX + fi mkdir -p $BUILD_DIR cd $BUILD_DIR sh $TOP_DIR/crosstool.sh @@ -90,8 +92,12 @@ sh $TOP_DIR/crosstool.sh cd $TOP_DIR + if echo "$GCC_EXTRA_CONFIG" | \ + egrep -- "--with-languages=c( | |\$)"; then + TEST_HELLO_OPTS="--c-only"; + fi # Cute little compile test - sh testhello.sh + sh testhello.sh $TEST_HELLO_OPTS fi if test "$opt_builduserland" = "1"; then Index: crosstool.sh =================================================================== RCS file: /home/cvs/tools/crosstool-0.25/crosstool.sh,v retrieving revision 1.4 diff -d -u -r1.4 crosstool.sh --- crosstool-0.25/crosstool.sh 19 Dec 2003 21:20:09 -0000 1.4 +++ crosstool-0.25/crosstool.sh 19 Dec 2003 23:54:19 -0000 @@ -178,7 +178,7 @@ # pregenerated locales is not compatible with crosstool; besides, # crosstool downloads them as part of getandpatch.sh. if echo "$GCC_EXTRA_CONFIG" | \ - egrep -v -- "--with-languages=(\"c\"|c\$)"; then + egrep -v -- "--with-languages=c( | |\$)"; then cat >> munge-oldconfig.sed <<-ENDSED s/^\\# UCLIBC_CTOR_DTOR is not set/UCLIBC_CTOR_DTOR=y/ s/^\\# UCLIBC_HAS_WCHAR is not set/UCLIBC_HAS_WCHAR=y/ @@ -303,14 +303,14 @@ --with-local-prefix=${PREFIX}/${TARGET} \ --disable-multilib \ --with-newlib \ - ${GCC_EXTRA_CONFIG} \ --without-headers \ --disable-nls \ --enable-threads=no \ --enable-symvers=gnu \ --enable-__cxa_atexit \ --enable-languages=c \ - --disable-shared + --disable-shared \ + ${GCC_EXTRA_CONFIG} fi make all-gcc install-gcc @@ -445,7 +445,6 @@ # systems don't really need message catalogs... # Use --with-headers, else it will define disable_glibc while building libgcc, and you'll have no profiling ${GCC_DIR}/configure --target=$TARGET --host=$HOST --prefix=$PREFIX \ - ${GCC_EXTRA_CONFIG} \ --with-headers=${PREFIX}/${TARGET}/include \ --disable-nls \ --enable-threads=posix \ @@ -454,7 +453,8 @@ --enable-languages=c,c++ \ --enable-shared \ --enable-c99 \ - --enable-long-long + --enable-long-long \ + ${GCC_EXTRA_CONFIG} fi make all Index: testhello.sh =================================================================== RCS file: /home/cvs/tools/crosstool-0.25/testhello.sh,v retrieving revision 1.1.1.1 diff -d -u -r1.1.1.1 testhello.sh --- crosstool-0.25/testhello.sh 4 Dec 2003 01:23:10 -0000 1.1.1.1 +++ crosstool-0.25/testhello.sh 19 Dec 2003 23:57:13 -0000 @@ -15,14 +15,17 @@ $PREFIX/bin/$TARGET-gcc -static hello.c -o $TARGET-hello-static $PREFIX/bin/$TARGET-gcc hello.c -o $TARGET-hello -# Test the C++ compiler. -# Link statically, to maximize chances the program will run on any random target. +if test "$1" '!=' "--c-only"; then + # Test the C++ compiler. + # Link statically, to maximize chances the program will run on any + # random target. -cat > hello2.cc <<_eof_ + cat > hello2.cc <<_eof_ #include int main() { std::cout << "Hello, c++!\n"; return 0; } _eof_ -$PREFIX/bin/$TARGET-g++ -static hello2.cc -o $TARGET-hello2-static -$PREFIX/bin/$TARGET-g++ hello2.cc -o $TARGET-hello2 + $PREFIX/bin/$TARGET-g++ -static hello2.cc -o $TARGET-hello2-static + $PREFIX/bin/$TARGET-g++ hello2.cc -o $TARGET-hello2 +fi