From 1b00a301bd732441d6bf1ad5d7cc15c0e281b622 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Fri, 20 Jun 2008 15:16:43 +0000 Subject: [PATCH] GMP and MPFR are no longer a sub-component of gcc (config-wise). Build and install GMP and MPFR for the target. Use the target GMP and MPFR to build the native gdb. Have separate extra_config for cross gdb, native gdb and gdbserver. Check native GMP and MPFR in //. /trunk/scripts/build/debug/300-gdb.sh | 27 19 8 0 ++++++++++++++++------- /trunk/scripts/build/gmp.sh | 47 39 8 0 ++++++++++++++++++++++++++++++++------- /trunk/scripts/build/mpfr.sh | 49 40 9 0 +++++++++++++++++++++++++++++++++-------- /trunk/steps.mk | 2 2 0 0 ++ /trunk/config/cc/gcc.in | 18 1 17 0 +-------------- /trunk/config/debug/gdb.in | 6 1 5 0 +---- /trunk/config/config.in | 1 1 0 0 + /trunk/config/gmp_mpfr.in | 34 34 0 0 ++++++++++++++++++++++++++++ 8 files changed, 137 insertions(+), 47 deletions(-) --- config/cc/gcc.in | 18 +------------ config/config.in | 1 + config/debug/gdb.in | 6 +---- config/gmp_mpfr.in | 34 +++++++++++++++++++++++ scripts/build/debug/300-gdb.sh | 27 +++++++++++++------ scripts/build/gmp.sh | 47 ++++++++++++++++++++++++++------ scripts/build/mpfr.sh | 49 +++++++++++++++++++++++++++------- steps.mk | 2 ++ 8 files changed, 137 insertions(+), 47 deletions(-) create mode 100644 config/gmp_mpfr.in diff --git a/config/cc/gcc.in b/config/cc/gcc.in index 33eee4e2..07cdc400 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -120,7 +120,7 @@ config CC_VERSION config CC_GCC_4_3_or_later bool default n - select CC_GCC_GMP_MPFR + select GMP_MPFR config CC_CXA_ATEXIT bool @@ -166,19 +166,3 @@ config CC_BUGURL default "" help Specify the URL that users should visit if they wish to report a bug. - -menuconfig CC_GCC_GMP_MPFR - bool - prompt "GMP and MPFR" - help - Recent gcc needs both GMP and MPFR to build some frontends. - - Say 'Y' here if you want to build those two libraries specifically - for crosstool-NG. - - Saying 'Y' is highly recommended if building gcc-4.3 or higher. - -if CC_GCC_GMP_MPFR -source config/cc/gmp.in -source config/cc/mpfr.in -endif diff --git a/config/config.in b/config/config.in index e7c236c7..cd73a3e6 100644 --- a/config/config.in +++ b/config/config.in @@ -2,6 +2,7 @@ source config/global.in source config/target.in source config/toolchain.in source config/kernel.in +source config/gmp_mpfr.in source config/binutils.in source config/cc.in source config/libc.in diff --git a/config/debug/gdb.in b/config/debug/gdb.in index 643162b6..d2ce15eb 100644 --- a/config/debug/gdb.in +++ b/config/debug/gdb.in @@ -33,6 +33,7 @@ config GDB_NATIVE bool prompt "Native gdb" default n + select GMP_MPFR_TARGET if GMP_MPFR help Build and install a native gdb for the target, to run on the target. @@ -123,10 +124,6 @@ choice bool prompt "ncurses version" -config NCURSES_V_4_2 - bool - prompt "4.2" - config NCURSES_V_5_6 bool prompt "5.6" @@ -135,7 +132,6 @@ endchoice config NCURSES_VERSION string - default "4.2" if NCURSES_V_4_2 default "5.6" if NCURSES_V_5_6 endif # GDB_NATIVE --> ncurses diff --git a/config/gmp_mpfr.in b/config/gmp_mpfr.in new file mode 100644 index 00000000..3ae6a91b --- /dev/null +++ b/config/gmp_mpfr.in @@ -0,0 +1,34 @@ +# GMP and MPFR libraries config options + +menu "GMP and MPFR" + +config GMP_MPFR + bool + prompt "GMP and MPFR" + help + Recent gcc needs both GMP and MPFR to build some frontends. + + Say 'Y' here if you want to build those two libraries specifically + for crosstool-NG. + + The packages that can use GMP and MPFR are: + - binutils + - gcc + - gdb + +config GMP_MPFR_TARGET + bool + prompt "Build libraries for the target" + depends on GMP_MPFR + default n + help + Also build libraries for the target. This can be usefull if you want + to later build a compiler that will run on the target, or if you want + to run gdb natively on the target. + +if GMP_MPFR +source config/cc/gmp.in +source config/cc/mpfr.in +endif + +endmenu diff --git a/scripts/build/debug/300-gdb.sh b/scripts/build/debug/300-gdb.sh index 680375b5..5de58623 100644 --- a/scripts/build/debug/300-gdb.sh +++ b/scripts/build/debug/300-gdb.sh @@ -51,12 +51,13 @@ do_debug_gdb_build() { mkdir -p "${CT_BUILD_DIR}/build-gdb-cross" cd "${CT_BUILD_DIR}/build-gdb-cross" + cross_extra_config="${extra_config}" if [ "${CT_CC_GCC_GMP_MPFR}" = "y" ]; then - extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" + cross_extra_config="${cross_extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}" fi case "${CT_THREADS}" in - none) extra_config="${extra_config} --disable-threads";; - *) extra_config="${extra_config} --enable-threads";; + none) cross_extra_config="${cross_extra_config} --disable-threads";; + *) cross_extra_config="${cross_extra_config} --enable-threads";; esac CC_for_gdb= @@ -66,6 +67,8 @@ do_debug_gdb_build() { LD_for_gdb="ld -static" fi + CT_DoLog DEBUG "Extra config passed: '${cross_extra_config# }'" + CC="${CC_for_gdb}" \ LD="${LD_for_gdb}" \ "${gdb_src_dir}/configure" \ @@ -74,7 +77,7 @@ do_debug_gdb_build() { --target=${CT_TARGET} \ --prefix="${CT_PREFIX_DIR}" \ --with-build-sysroot="${CT_SYSROOT_DIR}" \ - ${extra_config} 2>&1 |CT_DoLog ALL + ${cross_extra_config} 2>&1 |CT_DoLog ALL CT_DoLog EXTRA "Building cross-gdb" make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL @@ -123,10 +126,14 @@ do_debug_gdb_build() { mkdir -p "${CT_BUILD_DIR}/build-gdb-native" cd "${CT_BUILD_DIR}/build-gdb-native" + native_extra_config="${extra_config}" case "${CT_THREADS}" in - none) extra_config="${extra_config} --disable-threads";; - *) extra_config="${extra_config} --enable-threads";; + none) native_extra_config="${native_extra_config} --disable-threads";; + *) native_extra_config="${native_extra_config} --enable-threads";; esac + if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then + native_extra_config="${native_extra_config} --with-gmp=${CT_SYSROOT_DIR}/usr --with-mpfr=${CT_SYSROOT_DIR}/usr" + fi CC_for_gdb= LD_for_gdb= @@ -137,6 +144,8 @@ do_debug_gdb_build() { export ac_cv_func_strncmp_works=yes + CT_DoLog DEBUG "Extra config passed: '${native_extra_config# }'" + CC="${CC_for_gdb}" \ LD="${LD_for_gdb}" \ "${gdb_src_dir}/configure" \ @@ -153,7 +162,7 @@ do_debug_gdb_build() { --disable-werror \ --without-included-gettext \ --without-develop \ - ${extra_config} 2>&1 |CT_DoLog ALL + ${native_extra_config} 2>&1 |CT_DoLog ALL CT_DoLog EXTRA "Building native gdb" make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL @@ -186,6 +195,8 @@ do_debug_gdb_build() { gdbserver_LDFLAGS=-static fi + gdbserver_extra_config="${extra_config}" + LDFLAGS="${gdbserver_LDFLAGS}" \ "${gdb_src_dir}/gdb/gdbserver/configure" \ --build=${CT_BUILD} \ @@ -203,7 +214,7 @@ do_debug_gdb_build() { --without-x \ --without-included-gettext \ --without-develop \ - ${extra_config} 2>&1 |CT_DoLog ALL + ${gdbserver_extra_config} 2>&1 |CT_DoLog ALL CT_DoLog EXTRA "Building gdbserver" make ${PARALLELMFLAGS} CC=${CT_TARGET}-${CT_CC} 2>&1 |CT_DoLog ALL diff --git a/scripts/build/gmp.sh b/scripts/build/gmp.sh index ec99a2ab..e9aa98a8 100644 --- a/scripts/build/gmp.sh +++ b/scripts/build/gmp.sh @@ -2,9 +2,17 @@ # Copyright 2008 Yann E. MORIN # Licensed under the GPL v2. See COPYING in the root of this package -if [ "${CT_CC_GCC_GMP_MPFR}" = "y" ]; then +do_print_filename() { :; } +do_gmp_get() { :; } +do_gmp_extract() { :; } +do_gmp() { :; } +do_gmp_target() { :; } + +# Overide functions depending on configuration +if [ "${CT_GMP_MPFR}" = "y" ]; then do_print_filename() { + [ "${CT_GMP_MPFR}" = "y" ] || return 0 echo "gmp-${CT_GMP_VERSION}" } @@ -38,7 +46,7 @@ do_gmp() { if [ "${CT_GMP_CHECK}" = "y" ]; then CT_DoLog EXTRA "Checking GMP" - make -s check 2>&1 |CT_DoLog ALL + make ${PARALLELMFLAGS} -s check 2>&1 |CT_DoLog ALL fi CT_DoLog EXTRA "Installing GMP" @@ -47,11 +55,34 @@ do_gmp() { CT_EndStep } -else # Mo GMP +if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then -do_print_filename() { :; } -do_gmp_get() { :; } -do_gmp_extract() { :; } -do_gmp() { :; } +do_gmp_target() { + mkdir -p "${CT_BUILD_DIR}/build-gmp-target" + cd "${CT_BUILD_DIR}/build-gmp-target" -fi + CT_DoStep INFO "Installing GMP for the target" + + CT_DoLog EXTRA "Configuring GMP" + CFLAGS="${CT_CFLAGS_FOR_TARGET}" \ + "${CT_SRC_DIR}/${CT_GMP_FILE}/configure" \ + --build=${CT_BUILD} \ + --host=${CT_TARGET} \ + --prefix=/usr \ + --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 + + # Not possible to check MPFR while X-compiling + + CT_DoLog EXTRA "Installing GMP" + make DESTDIR="${CT_SYSROOT_DIR}" install 2>&1 |CT_DoLog ALL + + CT_EndStep +} + +fi # CT_GMP_MPFR_TARGET == y + +fi # CT_GMP_MPFR == y diff --git a/scripts/build/mpfr.sh b/scripts/build/mpfr.sh index 2df6a38a..d03b1d67 100644 --- a/scripts/build/mpfr.sh +++ b/scripts/build/mpfr.sh @@ -2,10 +2,17 @@ # Copyright 2008 Yann E. MORIN # Licensed under the GPL v2. See COPYING in the root of this package -if [ "${CT_CC_GCC_GMP_MPFR}" = "y" ]; then +do_print_filename() { :; } +do_mpfr_get() { :; } +do_mpfr_extract() { :; } +do_mpfr() { :; } +do_mpfr_target() { :; } + +# Overide function depending on configuration +if [ "${CT_GMP_MPFR}" = "y" ]; then do_print_filename() { - [ "${CT_CC_GCC_GMP_MPFR}" = "y" ] || return 0 + [ "${CT_GMP_MPFR}" = "y" ] || return 0 echo "mpfr-${CT_MPFR_VERSION}" } @@ -57,7 +64,7 @@ do_mpfr() { if [ "${CT_MPFR_CHECK}" = "y" ]; then CT_DoLog EXTRA "Checking MPFR" - make -s check 2>&1 |CT_DoLog ALL + make ${PARALLELMFLAGS} -s check 2>&1 |CT_DoLog ALL fi CT_DoLog EXTRA "Installing MPFR" @@ -66,11 +73,35 @@ do_mpfr() { CT_EndStep } -else # No MPFR +if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then -do_print_filename() { :; } -do_mpfr_get() { :; } -do_mpfr_extract() { :; } -do_mpfr() { :; } +do_mpfr_target() { + mkdir -p "${CT_BUILD_DIR}/build-mpfr-target" + cd "${CT_BUILD_DIR}/build-mpfr-target" -fi + CT_DoStep INFO "Installing MPFR for the target" + + CT_DoLog EXTRA "Configuring MPFR" + CFLAGS="${CT_CFLAGS_FOR_TARGET}" \ + "${CT_SRC_DIR}/${CT_MPFR_FILE}/configure" \ + --build=${CT_BUILD} \ + --host=${CT_TARGET} \ + --prefix=/usr \ + --enable-thread-safe \ + --disable-shared --enable-static \ + --with-gmp="${CT_SYSROOT_DIR}/usr" 2>&1 |CT_DoLog ALL + + CT_DoLog EXTRA "Building MPFR" + make ${PARALLELMFLAGS} 2>&1 |CT_DoLog ALL + + # Not possible to check MPFR while X-compiling + + CT_DoLog EXTRA "Installing MPFR" + make DESTDIR="${CT_SYSROOT_DIR}" install 2>&1 |CT_DoLog ALL + + CT_EndStep +} + +fi # CT_GMP_MPFR_TARGET == y + +fi # CT_GMP_MPFR == y diff --git a/steps.mk b/steps.mk index 347afa93..e5ddd797 100644 --- a/steps.mk +++ b/steps.mk @@ -15,6 +15,8 @@ CT_STEPS := libc_check_config \ cc \ libc_finish \ binutils_target \ + gmp_target \ + mpfr_target \ tools \ debug \