diff -r 000000000000 -r eeea35fbf182 scripts/build/cc_gcc.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/cc_gcc.sh Sat Feb 24 11:00:05 2007 +0000 @@ -0,0 +1,115 @@ +# This file adds the function to build the final gcc C compiler +# Copyright 2007 Yann E. MORIN +# Licensed under the GPL v2. See COPYING in the root of this package + +do_cc() { + CT_DoStep INFO "Installing final C compiler" + + mkdir -p "${CT_BUILD_DIR}/build-cc" + cd "${CT_BUILD_DIR}/build-cc" + + CT_DoLog EXTRA "Configuring C compiler" + + # Enable selected languages + lang_opt="c" + [ "${CT_CC_LANG_CXX}" = "y" ] && lang_opt="${lang_opt},c++" + [ "${CT_CC_LANG_FORTRAN}" = "y" ] && lang_opt="${lang_opt},fortran" + [ "${CT_CC_LANG_ADA}" = "y" ] && lang_opt="${lang_opt},ada" + [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_opt="${lang_opt},java" + [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_opt="${lang_opt},objc" + [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_opt="${lang_opt},obj-c++" + CT_Test "Building Fortran language is not yet supported. Will try..." "${CT_CC_LANG_FORTRAN}" = "y" + CT_Test "Building ADA language is not yet supported. Will try..." "${CT_CC_LANG_ADA}" = "y" + CT_Test "Building Java language is not yet supported. Will try..." "${CT_CC_LANG_JAVA}" = "y" + CT_Test "Building Objective-C language is not yet supported. Will try..." "${CT_CC_LANG_OBJC}" = "y" + CT_Test "Building Objective-C++ language is not yet supported. Will try..." "${CT_CC_LANG_OBJCXX}" = "y" + CT_Test "Building ${CT_CC_LANG_OTHERS} language(s) is not yet supported. Will try..." -n "${CT_CC_LANG_OTHERS}" + lang_opt=`echo "${lang_opt},${CT_CC_LANG_OTHERS}" |sed -r -e 's/^(.*),*$/\1/;'` + + extra_config="--enable-languages=${lang_opt}" + [ "${CT_ARCH_FLOAT_SW}" = "y" ] && extra_config="${extra_config} --with-float=soft" + [ "${CT_SHARED_LIBS}" = "y" ] || extra_config="${extra_config} --disable-shared" + [ -n "${CT_ARCH_CPU}" ] && extra_config="${extra_config} --with-cpu=${CT_ARCH_CPU}" + [ -n "${CT_ARCH_TUNE}" ] && extra_config="${extra_config} --with-tune=${CT_ARCH_TUNE}" + [ -n "${CT_ARCH_ARCH}" ] && extra_config="${extra_config} --with-arch=${CT_ARCH_ARCH}" + [ -n "${CT_ARCH_FPU}" ] && extra_config="${extra_config} --with-fpu=${CT_ARCH_FPU}" + if [ "${CT_TARGET_MULTILIB}" = "y" ]; then + extra_config="${extra_config} --enable-multilib" + else + extra_config="${extra_config} --disable-multilib" + fi + + CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" + + # --enable-symvers=gnu really only needed for sh4 to work around a + # detection problem only matters for gcc-3.2.x and later, I think. + # --disable-nls to work around crash bug on ppc405, but also because + # embedded systems don't really need message catalogs... + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + "${CT_SRC_DIR}/${CT_CC_FILE}/configure" \ + ${CT_CANADIAN_OPT} \ + --target=${CT_TARGET} --host=${CT_HOST} \ + --prefix="${CT_PREFIX_DIR}" \ + ${CC_SYSROOT_ARG} \ + ${extra_config} \ + --with-local-prefix="${CT_SYSROOT_DIR}" \ + --disable-nls \ + --enable-threads=posix \ + --enable-symvers=gnu \ + --enable-__cxa_atexit \ + --enable-c99 \ + --enable-long-long \ + ${CT_CC_EXTRA_CONFIG} 2>&1 |CT_DoLog DEBUG + + if [ ! "${CT_CANADIAN}" = "y" ]; then + CT_DoLog EXTRA "Building libiberty" + make ${PARALLELMFLAGS} all-build-libiberty 2>&1 |CT_DoLog DEBUG + fi + + + # Idea from : + # Fix lib/lib64 confusion for GCC 3.3.3 on PowerPC64 and x86_64. + # GCC 3.4.0 and up don't suffer from this confusion, and don't need this + # kludge. + # FIXME: we should patch gcc's source rather than uglify crosstool.sh. + # FIXME: is this needed for gcc-3.3.[56]? + case "${CT_CC_FILE}" in + gcc-3.3.[34]) + case "${CT_TARGET}" in + powerpc64-unknown-linux-gnu|x86_64-unknown-linux-gnu) + for d in `find "${CT_SYSROOT_DIR}" -name lib -type d -empty`; do + if [ -d `dirname "${d}"`/lib64 ] ; then + rm -rf "${d}" + ln -s `dirname "${d}"`/lib64 "${d}" + fi + done ;; + *) ;; + esac ;; + esac + + CT_DoLog EXTRA "Building C compiler" + make ${PARALLELMFLAGS} all 2>&1 |CT_DoLog DEBUG + + CT_DoLog EXTRA "Installing C compiler" + make install 2>&1 |CT_DoLog DEBUG + + # FIXME: shouldn't people who want this just --disable-multilib in final gcc + # and be done with it? + # This code should probably be deleted, it was written long ago and hasn't + # been tested in ages. + # kludge: If the chip does not have a floating point unit + # (i.e. if GLIBC_EXTRA_CONFIG contains --without-fp), + # and there are shared libraries in /lib/nof, copy them to /lib + # so they get used by default. + # FIXME: only rs6000/powerpc seem to use nof. See MULTILIB_DIRNAMES + # in $GCC_DIR/gcc/config/$TARGET/* to see what your arch calls it. + #case "${CT_LIBC_EXTRA_CONFIG}" in + # *--without-fp*) + # if test -d "${CT_SYSROOT_DIR}/lib/nof"; then + # cp -af "${CT_SYSROOT_DIR}/lib/nof/"*.so* "${CT_SYSROOT_DIR}/lib" || true + # fi + # ;; + #esac + + CT_EndStep +}