# HG changeset patch # User "Yann E. MORIN" # Date 1241561060 0 # Node ID 48c12c696778c2d85947765d1537fff27220180a # Parent 2790edc36b62341b1a66c12ebc0ab3ed32663ca3 Add support for building PPL: - PPL will be needed to correctly build gcc-4.4+ for the GRAPHITE loop optimisation -------- diffstat follows -------- /trunk/scripts/build/companion_libs/ppl.sh | 66 66 0 0 ++++++++++++++++++++++++++++++++++++ /trunk/scripts/build/companion_libs/gmp.sh | 24 19 5 0 ++++++++++--- /trunk/scripts/addToolVersion.sh | 3 2 1 0 +- /trunk/scripts/crosstool-NG.sh.in | 3 3 0 0 ++ /trunk/steps.mk | 1 1 0 0 + /trunk/config/companion_libs/ppl.in | 33 33 0 0 ++++++++++++++++++ /trunk/config/companion_libs.in | 22 19 3 0 ++++++++++-- 7 files changed, 143 insertions(+), 9 deletions(-) diff -r 2790edc36b62 -r 48c12c696778 config/companion_libs.in --- a/config/companion_libs.in Tue May 05 21:16:37 2009 +0000 +++ b/config/companion_libs.in Tue May 05 22:04:20 2009 +0000 @@ -9,10 +9,11 @@ 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/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 -r 2790edc36b62 -r 48c12c696778 config/companion_libs/ppl.in --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/config/companion_libs/ppl.in Tue May 05 22:04:20 2009 +0000 @@ -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 -r 2790edc36b62 -r 48c12c696778 scripts/addToolVersion.sh --- a/scripts/addToolVersion.sh Tue May 05 21:16:37 2009 +0000 +++ b/scripts/addToolVersion.sh Tue May 05 22:04:20 2009 +0000 @@ -13,7 +13,7 @@ '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 @@ --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 -r 2790edc36b62 -r 48c12c696778 scripts/build/companion_libs/gmp.sh --- a/scripts/build/companion_libs/gmp.sh Tue May 05 21:16:37 2009 +0000 +++ b/scripts/build/companion_libs/gmp.sh Tue May 05 22:04:20 2009 +0000 @@ -22,20 +22,32 @@ } 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 @@ --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 -r 2790edc36b62 -r 48c12c696778 scripts/build/companion_libs/ppl.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/build/companion_libs/ppl.sh Tue May 05 22:04:20 2009 +0000 @@ -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 -r 2790edc36b62 -r 48c12c696778 scripts/crosstool-NG.sh.in --- a/scripts/crosstool-NG.sh.in Tue May 05 21:16:37 2009 +0000 +++ b/scripts/crosstool-NG.sh.in Tue May 05 22:04:20 2009 +0000 @@ -90,6 +90,7 @@ . "${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 @@ 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 @@ do_kernel_extract do_gmp_extract do_mpfr_extract + do_ppl_extract do_binutils_extract do_cc_extract do_libc_extract diff -r 2790edc36b62 -r 48c12c696778 steps.mk --- a/steps.mk Tue May 05 21:16:37 2009 +0000 +++ b/steps.mk Tue May 05 22:04:20 2009 +0000 @@ -20,6 +20,7 @@ kernel_headers \ gmp \ mpfr \ + ppl \ binutils \ cc_core_pass_1 \ libc_headers \