diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/build/binutils.sh | 8 | ||||
-rw-r--r-- | scripts/build/cc_gcc.sh | 11 | ||||
-rw-r--r-- | scripts/build/gmp.sh | 49 | ||||
-rw-r--r-- | scripts/build/mpfr.sh | 47 | ||||
-rwxr-xr-x | scripts/crosstool.sh | 10 |
5 files changed, 119 insertions, 6 deletions
diff --git a/scripts/build/binutils.sh b/scripts/build/binutils.sh index 41ef4a2..4fb94b6 100644 --- a/scripts/build/binutils.sh +++ b/scripts/build/binutils.sh @@ -25,6 +25,13 @@ do_binutils() { CT_DoStep INFO "Installing binutils" + binutils_opts= + # If GMP and MPFR were configured, then use that, + # otherwise let binutils find the system-wide libraries, if they exist. + if [ "${CT_CC_GCC_GMP_MPFR}" = "y" ]; then + binutils_opts="--with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" + fi + CT_DoLog EXTRA "Configuring binutils" CFLAGS="${CT_CFLAGS_FOR_HOST}" \ "${CT_SRC_DIR}/${CT_BINUTILS_FILE}/configure" \ @@ -34,6 +41,7 @@ do_binutils() { --target=${CT_TARGET} \ --prefix=${CT_PREFIX_DIR} \ --disable-nls \ + ${binutils_opts} \ ${CT_BINUTILS_EXTRA_CONFIG} \ ${BINUTILS_SYSROOT_ARG} 2>&1 |CT_DoLog ALL diff --git a/scripts/build/cc_gcc.sh b/scripts/build/cc_gcc.sh index 5647fc6..92dc405 100644 --- a/scripts/build/cc_gcc.sh +++ b/scripts/build/cc_gcc.sh @@ -7,7 +7,7 @@ do_print_filename() { echo "gcc-${CT_CC_VERSION}" } -# Download final gcc +# Download gcc do_cc_get() { # Ah! gcc folks are kind of 'different': they store the tarballs in # subdirectories of the same name! That's because gcc is such /crap/ that @@ -21,7 +21,7 @@ do_cc_get() { ftp://ftp.gnu.org/gnu/gcc } -# Extract final gcc +# Extract gcc do_cc_extract() { CT_ExtractAndPatch "${CT_CC_FILE}" } @@ -62,6 +62,7 @@ do_cc_core_static() { extra_config="${CT_ARCH_WITH_ARCH} ${CT_ARCH_WITH_ABI} ${CT_ARCH_WITH_CPU} ${CT_ARCH_WITH_TUNE} ${CT_ARCH_WITH_FPU} ${CT_ARCH_WITH_FLOAT}" [ "${CT_CC_CXA_ATEXIT}" = "y" ] && extra_config="${extra_config} --enable-__cxa_atexit" + [ "${CT_CC_GCC_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" @@ -114,6 +115,7 @@ do_cc_core_shared() { extra_config="${CT_ARCH_WITH_ARCH} ${CT_ARCH_WITH_ABI} ${CT_ARCH_WITH_CPU} ${CT_ARCH_WITH_TUNE} ${CT_ARCH_WITH_FPU} ${CT_ARCH_WITH_FLOAT}" [ "${CT_CC_CXA_ATEXIT}" = "y" ] && extra_config="${extra_config} --enable-__cxa_atexit" + [ "${CT_CC_GCC_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" @@ -202,12 +204,10 @@ do_cc() { [ "${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}" + 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/,+/,/g; s/,*$//;'` extra_config="--enable-languages=${lang_opt}" @@ -219,6 +219,7 @@ do_cc() { else extra_config="${extra_config} --disable-multilib" fi + [ "${CT_CC_GCC_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" CT_DoLog DEBUG "Extra config passed: \"${extra_config}\"" diff --git a/scripts/build/gmp.sh b/scripts/build/gmp.sh new file mode 100644 index 0000000..cc84d64 --- /dev/null +++ b/scripts/build/gmp.sh @@ -0,0 +1,49 @@ +# This file adds the functions to build the GMP library +# Copyright 2008 Yann E. MORIN +# Licensed under the GPL v2. See COPYING in the root of this package + +do_print_filename() { + [ "${CT_CC_GCC_GMP_MPFR}" = "y" ] || return 0 + echo "gmp-${CT_GMP_VERSION}" +} + +# Download GMP +do_gmp_get() { + CT_GetFile "${CT_GMP_FILE}" \ + http://ftp.sunet.se/pub/gnu/gmp \ + ftp://ftp.gnu.org/gnu/gmp +} + +# Extract GMP +do_gmp_extract() { + CT_ExtractAndPatch "${CT_GMP_FILE}" +} + +do_gmp() { + mkdir -p "${CT_BUILD_DIR}/build-gmp" + cd "${CT_BUILD_DIR}/build-gmp" + + CT_DoStep INFO "Installing GMP" + + CT_DoLog EXTRA "Configuring GMP" + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + "${CT_SRC_DIR}/${CT_GMP_FILE}/configure" \ + --build=${CT_BUILD} \ + --host=${CT_HOST} \ + --prefix="${CT_PREFIX_DIR}" \ + --disable-shared --enable-static \ + --enable-fft --enable-mpbsd 2>&1 |CT_DoLog ALL + + CT_DoLog EXTRA "Building GMP" + make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL + + if [ "${CT_GMP_CHECK}" = "y" ]; then + CT_DoLog EXTRA "Checking GMP" + make -s check 2>&1 |CT_DoLog ALL + fi + + CT_DoLog EXTRA "Installing GMP" + make install 2>&1 |CT_DoLog ALL + + CT_EndStep +} diff --git a/scripts/build/mpfr.sh b/scripts/build/mpfr.sh new file mode 100644 index 0000000..810fa60 --- /dev/null +++ b/scripts/build/mpfr.sh @@ -0,0 +1,47 @@ +# This file adds the functions to build the MPFR library +# Copyright 2008 Yann E. MORIN +# Licensed under the GPL v2. See COPYING in the root of this package + +do_print_filename() { + [ "${CT_CC_GCC_GMP_MPFR}" = "y" ] || return 0 + echo "mpfr-${CT_MPFR_VERSION}" +} + +# Download MPFR +do_mpfr_get() { + CT_GetFile "${CT_MPFR_FILE}" http://www.mpfr.org/mpfr-current/ +} + +# Extract MPFR +do_mpfr_extract() { + CT_ExtractAndPatch "${CT_MPFR_FILE}" +} + +do_mpfr() { + mkdir -p "${CT_BUILD_DIR}/build-mpfr" + cd "${CT_BUILD_DIR}/build-mpfr" + + CT_DoStep INFO "Installing MPFR" + + CT_DoLog EXTRA "Configuring MPFR" + CFLAGS="${CT_CFLAGS_FOR_HOST}" \ + "${CT_SRC_DIR}/${CT_MPFR_FILE}/configure" \ + --build=${CT_BUILD} \ + --host=${CT_HOST} \ + --prefix="${CT_PREFIX_DIR}" \ + --disable-shared --enable-static \ + --with-gmp="${CT_PREFIX_DIR}" 2>&1 |CT_DoLog ALL + + CT_DoLog EXTRA "Building MPFR" + make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL + + if [ "${CT_MPFR_CHECK}" = "y" ]; then + CT_DoLog EXTRA "Checking MPFR" + make -s check 2>&1 |CT_DoLog ALL + fi + + CT_DoLog EXTRA "Installing MPFR" + make install 2>&1 |CT_DoLog ALL + + CT_EndStep +} diff --git a/scripts/crosstool.sh b/scripts/crosstool.sh index 3027f1c..e85be55 100755 --- a/scripts/crosstool.sh +++ b/scripts/crosstool.sh @@ -73,6 +73,8 @@ CT_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_TARGET_CFLAGS}" # Now, build up the variables from the user-configured options. CT_KERNEL_FILE="${CT_KERNEL}-${CT_KERNEL_VERSION}" CT_BINUTILS_FILE="binutils-${CT_BINUTILS_VERSION}" +CT_GMP_FILE="gmp-${CT_GMP_VERSION}" +CT_MPFR_FILE="mpfr-${CT_MPFR_VERSION}" CT_CC_FILE="${CT_CC}-${CT_CC_VERSION}" CT_LIBC_FILE="${CT_LIBC}-${CT_LIBC_VERSION}" @@ -417,6 +419,8 @@ fi # Include sub-scripts instead of calling them: that way, we do not have to # export any variable, nor re-parse the configuration and functions files. . "${CT_LIB_DIR}/scripts/build/kernel_${CT_KERNEL}.sh" +. "${CT_LIB_DIR}/scripts/build/gmp.sh" +. "${CT_LIB_DIR}/scripts/build/mpfr.sh" . "${CT_LIB_DIR}/scripts/build/binutils.sh" . "${CT_LIB_DIR}/scripts/build/libc_${CT_LIBC}.sh" . "${CT_LIB_DIR}/scripts/build/cc_${CT_CC}.sh" @@ -426,6 +430,8 @@ fi if [ -z "${CT_RESTART}" ]; then CT_DoStep INFO "Retrieving needed toolchain components' tarballs" do_kernel_get + do_gmp_get + do_mpfr_get do_binutils_get do_cc_get do_libc_get @@ -440,6 +446,8 @@ if [ -z "${CT_RESTART}" ]; then fi CT_DoStep INFO "Extracting and patching toolchain components" do_kernel_extract + do_gmp_extract + do_mpfr_extract do_binutils_extract do_cc_extract do_libc_extract @@ -455,7 +463,7 @@ if [ "${CT_ONLY_DOWNLOAD}" != "y" -a "${CT_ONLY_EXTRACT}" != "y" ]; then do_stop=0 prev_step= [ -n "${CT_RESTART}" ] && do_it=0 || do_it=1 - # CT_STEPS comes from steps.mk! + # Aha! CT_STEPS comes from steps.mk! for step in ${CT_STEPS}; do if [ ${do_it} -eq 0 ]; then if [ "${CT_RESTART}" = "${step}" ]; then |