summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/companion_libs.in15
-rw-r--r--config/companion_libs/mpc.in32
-rw-r--r--scripts/build/companion_libs/cloog.sh4
-rw-r--r--scripts/build/companion_libs/mpc.sh57
-rw-r--r--scripts/build/companion_libs/ppl.sh4
-rw-r--r--scripts/crosstool-NG.sh.in3
-rw-r--r--steps.mk1
7 files changed, 107 insertions, 9 deletions
diff --git a/config/companion_libs.in b/config/companion_libs.in
index c95418b..46a2ede 100644
--- a/config/companion_libs.in
+++ b/config/companion_libs.in
@@ -36,20 +36,25 @@ source config/companion_libs/gmp.in
source config/companion_libs/mpfr.in
endif
-config PPL_CLOOG
+config PPL_CLOOG_MPC
bool
- prompt "PPL and GLooG/PPL"
+ prompt "PPL, GLooG/PPL and MPC"
help
- gcc-4.4.0 and above requires both PPL and CLooG/PPL to build some
- parts of the optimiser (GRAPHITE loop optimisation, to be precise).
+ gcc-4.4.0 and above requires PPL and CLooG/PPL to build some parts
+ of the optimiser (GRAPHITE loop optimisation, to be precise).
+
+ In addition to those, gcc-4.4 also optionally uses MPC to enable
+ additional optimisations on complex numbers. Although MPC is optional,
+ crosstool-NG requires it and uses it to build gcc >= 4.4.0.
These will be automatically selected if you choose gcc>=4.4.0, but you
can say 'Y' here, although it is unknown yet if any other component
can use them.
-if PPL_CLOOG
+if PPL_CLOOG_MPC
source config/companion_libs/ppl.in
source config/companion_libs/cloog.in
+source config/companion_libs/mpc.in
endif
endmenu
diff --git a/config/companion_libs/mpc.in b/config/companion_libs/mpc.in
new file mode 100644
index 0000000..7ff2c26
--- /dev/null
+++ b/config/companion_libs/mpc.in
@@ -0,0 +1,32 @@
+# MPC options
+
+choice
+ bool
+ prompt "MPC version"
+
+config MPC_V_0_6
+ bool
+ prompt "0.6"
+
+# CT_INSERT_VERSION_ABOVE
+# Don't remove above line!
+endchoice
+
+config MPC_VERSION
+ string
+ default "0.6" if MPC_V_0_6
+# CT_INSERT_VERSION_STRING_ABOVE
+# Don't remove above line!
+
+config MPC_CHECK
+ bool
+ prompt "Check MPC (!!! README !!!)"
+ default n
+ help
+ It is highly recommended to check the newly built MPC library.
+ Unfortunately, this is a very intensive task, and takes a loooong time.
+
+ Checking MPC is thus disabled by default.
+
+ If you suspect that your MPC library is the cause for incorrectly
+ generated code, you should answer 'Y' here.
diff --git a/scripts/build/companion_libs/cloog.sh b/scripts/build/companion_libs/cloog.sh
index 43ef648..a98f999 100644
--- a/scripts/build/companion_libs/cloog.sh
+++ b/scripts/build/companion_libs/cloog.sh
@@ -8,7 +8,7 @@ do_cloog() { :; }
do_cloog_target() { :; }
# Overide functions depending on configuration
-if [ "${CT_PPL_CLOOG}" = "y" ]; then
+if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
# Download CLooG
do_cloog_get() {
@@ -57,4 +57,4 @@ do_cloog() {
CT_EndStep
}
-fi # CT_PPL_CLOOG
+fi # CT_PPL_CLOOG_MPC
diff --git a/scripts/build/companion_libs/mpc.sh b/scripts/build/companion_libs/mpc.sh
new file mode 100644
index 0000000..f0f5ecd
--- /dev/null
+++ b/scripts/build/companion_libs/mpc.sh
@@ -0,0 +1,57 @@
+# This file adds the functions to build the MPC library
+# Copyright 2009 Yann E. MORIN
+# Licensed under the GPL v2. See COPYING in the root of this package
+
+do_mpc_get() { :; }
+do_mpc_extract() { :; }
+do_mpc() { :; }
+do_mpc_target() { :; }
+
+# Overide functions depending on configuration
+if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
+
+# Download MPC
+do_mpc_get() {
+ CT_GetFile "mpc-${CT_MPC_VERSION}" .tar.gz \
+ http://www.multiprecision.org/mpc/download
+}
+
+# Extract MPC
+do_mpc_extract() {
+ CT_Extract "mpc-${CT_MPC_VERSION}"
+ CT_Patch "mpc-${CT_MPC_VERSION}"
+}
+
+do_mpc() {
+ mkdir -p "${CT_BUILD_DIR}/build-mpc"
+ cd "${CT_BUILD_DIR}/build-mpc"
+
+ CT_DoStep INFO "Installing MPC"
+
+ CT_DoLog EXTRA "Configuring MPC"
+ CFLAGS="${CT_CFLAGS_FOR_HOST}" \
+ CT_DoExecLog ALL \
+ "${CT_SRC_DIR}/mpc-${CT_MPC_VERSION}/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_HOST} \
+ --prefix="${CT_PREFIX_DIR}" \
+ --with-gmp="${CT_PREFIX_DIR}" \
+ --with-mpfr="${CT_PREFIX_DIR}" \
+ --disable-shared \
+ --enable-static \
+
+ CT_DoLog EXTRA "Building MPC"
+ CT_DoExecLog ALL make ${PARALLELMFLAGS}
+
+ if [ "${CT_MPC_CHECK}" = "y" ]; then
+ CT_DoLog EXTRA "Checking MPC"
+ CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
+ fi
+
+ CT_DoLog EXTRA "Installing MPC"
+ CT_DoExecLog ALL make install
+
+ CT_EndStep
+}
+
+fi # CT_PPL_CLOOG_MPC
diff --git a/scripts/build/companion_libs/ppl.sh b/scripts/build/companion_libs/ppl.sh
index 0a48dba..92d59de 100644
--- a/scripts/build/companion_libs/ppl.sh
+++ b/scripts/build/companion_libs/ppl.sh
@@ -8,7 +8,7 @@ do_ppl() { :; }
do_ppl_target() { :; }
# Overide functions depending on configuration
-if [ "${CT_PPL_CLOOG}" = "y" ]; then
+if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
# Download PPL
do_ppl_get() {
@@ -65,4 +65,4 @@ do_ppl() {
CT_EndStep
}
-fi # CT_PPL_CLOOG
+fi # CT_PPL_CLOOG_MPC
diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in
index 2a9ff5a..0b9b00d 100644
--- a/scripts/crosstool-NG.sh.in
+++ b/scripts/crosstool-NG.sh.in
@@ -92,6 +92,7 @@ CT_DoLog INFO "Building environment variables"
. "${CT_LIB_DIR}/scripts/build/companion_libs/mpfr.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/ppl.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/cloog.sh"
+. "${CT_LIB_DIR}/scripts/build/companion_libs/mpc.sh"
. "${CT_LIB_DIR}/scripts/build/binutils/binutils.sh"
. "${CT_LIB_DIR}/scripts/build/binutils/elf2flt.sh"
. "${CT_LIB_DIR}/scripts/build/libc/${CT_LIBC}.sh"
@@ -449,6 +450,7 @@ if [ -z "${CT_RESTART}" ]; then
do_mpfr_get
do_ppl_get
do_cloog_get
+ do_mpc_get
do_binutils_get
do_cc_get
do_libc_get
@@ -467,6 +469,7 @@ if [ -z "${CT_RESTART}" ]; then
do_mpfr_extract
do_ppl_extract
do_cloog_extract
+ do_mpc_extract
do_binutils_extract
do_cc_extract
do_libc_extract
diff --git a/steps.mk b/steps.mk
index 3386548..ba90f79 100644
--- a/steps.mk
+++ b/steps.mk
@@ -22,6 +22,7 @@ CT_STEPS := libc_check_config \
mpfr \
ppl \
cloog \
+ mpc \
binutils \
elf2flt \
cc_core_pass_1 \