summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/cc/gcc.in18
-rw-r--r--config/config.in1
-rw-r--r--config/debug/gdb.in6
-rw-r--r--config/gmp_mpfr.in34
-rw-r--r--scripts/build/debug/300-gdb.sh27
-rw-r--r--scripts/build/gmp.sh47
-rw-r--r--scripts/build/mpfr.sh49
-rw-r--r--steps.mk2
8 files changed, 137 insertions, 47 deletions
diff --git a/config/cc/gcc.in b/config/cc/gcc.in
index 33eee4e..07cdc40 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 e7c236c..cd73a3e 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 643162b..d2ce15e 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 0000000..3ae6a91
--- /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 680375b..5de5862 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 ec99a2a..e9aa98a 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"
+
+ 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
+fi # CT_GMP_MPFR == y
diff --git a/scripts/build/mpfr.sh b/scripts/build/mpfr.sh
index 2df6a38..d03b1d6 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"
+
+ 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
+fi # CT_GMP_MPFR == y
diff --git a/steps.mk b/steps.mk
index 347afa9..e5ddd79 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 \