summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/companion_libs.in22
-rw-r--r--config/companion_libs/ppl.in33
-rwxr-xr-xscripts/addToolVersion.sh3
-rw-r--r--scripts/build/companion_libs/gmp.sh24
-rw-r--r--scripts/build/companion_libs/ppl.sh66
-rw-r--r--scripts/crosstool-NG.sh.in3
-rw-r--r--steps.mk1
7 files changed, 143 insertions, 9 deletions
diff --git a/config/companion_libs.in b/config/companion_libs.in
index 49dc662..d581d80 100644
--- a/config/companion_libs.in
+++ b/config/companion_libs.in
@@ -9,10 +9,11 @@ config GMP_MPFR
prompt "GMP and MPFR"
help
gcc 4.3.0 and above requires both GMP and MPFR to build some frontends,
- and some other components can use them as well (eg. binutils and gdb).
+ and some other components can use them as well.
- Say 'Y' here if you want to build those two libraries specifically
- for crosstool-NG.
+ These will be automatically selected if you choose gcc>=4.3.0, but you
+ can say 'Y' here if you want to build those two libraries for the other
+ components (that don't select them by default).
The packages that can use GMP and MPFR are:
- binutils
@@ -35,4 +36,19 @@ source config/companion_libs/gmp.in
source config/companion_libs/mpfr.in
endif
+config PPL_CLOOG
+ bool
+ prompt "PPL and GLooG/PPL"
+ 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).
+
+ 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
+source config/companion_libs/ppl.in
+endif
+
endmenu
diff --git a/config/companion_libs/ppl.in b/config/companion_libs/ppl.in
new file mode 100644
index 0000000..d8f5906
--- /dev/null
+++ b/config/companion_libs/ppl.in
@@ -0,0 +1,33 @@
+# PPL options
+
+choice
+ bool
+ prompt "PPL version"
+
+config PPL_V_0_10_2
+ bool
+ prompt "0.10.2"
+
+# CT_INSERT_VERSION_ABOVE
+# Don't remove above line!
+endchoice
+
+config PPL_VERSION
+ string
+ default "0.10.2" if PPL_V_0_10_2
+# CT_INSERT_VERSION_STRING_ABOVE
+# Don't remove above line!
+
+config PPL_CHECK
+ bool
+ prompt "Check PPL (!!! README !!!)"
+ default n
+ help
+ Checking PPL is very intensive and takes a loooong time.
+ The PPL folks do not recommend checking the library, but they do
+ not recommend not checking it, either.
+
+ Checking PPL is thus disabled by default.
+
+ If you suspect that your PPL library is the cause for incorrectly
+ generated code, you should answer 'Y' here.
diff --git a/scripts/addToolVersion.sh b/scripts/addToolVersion.sh
index 21f4e9e..8e0446e 100755
--- a/scripts/addToolVersion.sh
+++ b/scripts/addToolVersion.sh
@@ -13,7 +13,7 @@ Usage: ${myname} <tool> <[options] version [...]> ...
'tool' in one of:
--gcc, --binutils, --glibc, --eglibc, --uClibc, --linux,
--gdb, --dmalloc, --duma, --strace, --ltrace, --libelf
- --gmp, --mpfr
+ --gmp, --mpfr, --ppl
Valid options for all tools:
--stable, -s, +x (default)
@@ -133,6 +133,7 @@ while [ $# -gt 0 ]; do
--libelf) EXP=; OBS=; cat=LIBELF; tool=libelf; tool_prefix=tools;;
--gmp) EXP=; OBS=; cat=GMP; tool=gmp; tool_prefix=companion_libs;;
--mpfr) EXP=; OBS=; cat=MPFR; tool=mpfr; tool_prefix=companion_libs;;
+ --ppl) EXP=; OBS=; cat=PPL; tool=ppl; tool_prefix=companion_libs;;
# Tools options:
-x|--experimental|+s) EXP=1;;
diff --git a/scripts/build/companion_libs/gmp.sh b/scripts/build/companion_libs/gmp.sh
index 51134da..a3dd4a0 100644
--- a/scripts/build/companion_libs/gmp.sh
+++ b/scripts/build/companion_libs/gmp.sh
@@ -22,20 +22,32 @@ do_gmp_extract() {
}
do_gmp() {
+ local opts
+ local cflags
+
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}" \
+
+ if [ "${CT_PPL_CLOOG}" = "y" ]; then
+ opts="--enable-cxx"
+ cflags="-fexceptions"
+ fi
+
+ CFLAGS="${CT_CFLAGS_FOR_HOST} ${cflags}" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/gmp-${CT_GMP_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--prefix="${CT_PREFIX_DIR}" \
- --disable-shared --enable-static \
- --enable-fft --enable-mpbsd
+ --disable-shared \
+ --enable-static \
+ --enable-fft \
+ --enable-mpbsd \
+ ${opts}
CT_DoLog EXTRA "Building GMP"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
@@ -66,8 +78,10 @@ do_gmp_target() {
--build=${CT_BUILD} \
--host=${CT_TARGET} \
--prefix=/usr \
- --disable-shared --enable-static \
- --enable-fft --enable-mpbsd
+ --disable-shared \
+ --enable-static \
+ --enable-fft \
+ --enable-mpbsd \
CT_DoLog EXTRA "Building GMP"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
diff --git a/scripts/build/companion_libs/ppl.sh b/scripts/build/companion_libs/ppl.sh
new file mode 100644
index 0000000..d3246f9
--- /dev/null
+++ b/scripts/build/companion_libs/ppl.sh
@@ -0,0 +1,66 @@
+# This file adds the functions to build the PPL library
+# Copyright 2009 Yann E. MORIN
+# Licensed under the GPL v2. See COPYING in the root of this package
+
+do_ppl_get() { :; }
+do_ppl_extract() { :; }
+do_ppl() { :; }
+do_ppl_target() { :; }
+
+# Overide functions depending on configuration
+if [ "${CT_PPL_CLOOG}" = "y" ]; then
+
+# Download PPL
+do_ppl_get() {
+ CT_GetFile "ppl-${CT_PPL_VERSION}" \
+ http://www.cs.unipr.it/ppl/Download/ftp/releases/${CT_PPL_VERSION} \
+ ftp://ftp.cs.unipr.it/pub/ppl/releases/${CT_PPL_VERSION}
+}
+
+# Extract PPL
+do_ppl_extract() {
+ CT_Extract "ppl-${CT_PPL_VERSION}"
+ CT_Patch "ppl-${CT_PPL_VERSION}"
+}
+
+do_ppl() {
+ mkdir -p "${CT_BUILD_DIR}/build-ppl"
+ cd "${CT_BUILD_DIR}/build-ppl"
+
+ CT_DoStep INFO "Installing PPL"
+
+ CT_DoLog EXTRA "Configuring PPL"
+ CFLAGS="${CT_CFLAGS_FOR_HOST}" \
+ CT_DoExecLog ALL \
+ "${CT_SRC_DIR}/ppl-${CT_PPL_VERSION}/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_HOST} \
+ --prefix="${CT_PREFIX_DIR}" \
+ --with-libgmp-prefix="${CT_PREFIX_DIR}" \
+ --with-libgmpxx-prefix="${CT_PREFIX_DIR}" \
+ --disable-shared \
+ --enable-static \
+ --disable-debugging \
+ --disable-assertions \
+ --disable-ppl_lcdd \
+ --disable-ppl_lpsol
+
+ # Maybe-options:
+ # --enable-interfaces=...
+ # --enable-optimization=speed or sspeed (yes, with 2 's')
+
+ CT_DoLog EXTRA "Building PPL"
+ CT_DoExecLog ALL make ${PARALLELMFLAGS}
+
+ if [ "${CT_PPL_CHECK}" = "y" ]; then
+ CT_DoLog EXTRA "Checking PPL"
+ CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
+ fi
+
+ CT_DoLog EXTRA "Installing PPL"
+ CT_DoExecLog ALL make install
+
+ CT_EndStep
+}
+
+fi # CT_PPL_CLOOG
diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in
index 8b8ac4b..49b0aff 100644
--- a/scripts/crosstool-NG.sh.in
+++ b/scripts/crosstool-NG.sh.in
@@ -90,6 +90,7 @@ CT_DoLog INFO "Building environment variables"
. "${CT_LIB_DIR}/scripts/build/kernel/${CT_KERNEL}.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/gmp.sh"
. "${CT_LIB_DIR}/scripts/build/companion_libs/mpfr.sh"
+. "${CT_LIB_DIR}/scripts/build/companion_libs/ppl.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"
@@ -444,6 +445,7 @@ if [ -z "${CT_RESTART}" ]; then
do_kernel_get
do_gmp_get
do_mpfr_get
+ do_ppl_get
do_binutils_get
do_cc_get
do_libc_get
@@ -460,6 +462,7 @@ if [ -z "${CT_RESTART}" ]; then
do_kernel_extract
do_gmp_extract
do_mpfr_extract
+ do_ppl_extract
do_binutils_extract
do_cc_extract
do_libc_extract
diff --git a/steps.mk b/steps.mk
index 4546fba..088b004 100644
--- a/steps.mk
+++ b/steps.mk
@@ -20,6 +20,7 @@ CT_STEPS := libc_check_config \
kernel_headers \
gmp \
mpfr \
+ ppl \
binutils \
cc_core_pass_1 \
libc_headers \