summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorYann E. MORIN <devnull@localhost>2009-06-17 09:38:04 (GMT)
committerYann E. MORIN <devnull@localhost>2009-06-17 09:38:04 (GMT)
commit302dd084c2e782ea5fdbde1db9f1b2bcda5ac83f (patch)
tree2bd1601131ca41844086fcdcaccffcc7438a66ee /scripts
parenta393a72f5f7b0f0f48f11782d70b255c6ca5f740 (diff)
parenta7ff05b022a8db08185486fa0fbf324f2ecd9d3e (diff)
[gcc] Merge the gcc-4.4 suport to the default branch, from 1407:83083566fdd0
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/addToolVersion.sh3
-rw-r--r--scripts/build/cc/gcc.sh53
-rw-r--r--scripts/build/companion_libs/cloog.sh63
-rw-r--r--scripts/build/companion_libs/gmp.sh19
-rw-r--r--scripts/build/companion_libs/mpc.sh57
-rw-r--r--scripts/build/companion_libs/mpfr.sh8
-rw-r--r--scripts/build/companion_libs/ppl.sh17
-rw-r--r--scripts/build/internals.sh29
-rw-r--r--scripts/build/libc/glibc.sh25
-rw-r--r--scripts/crosstool-NG.sh.in10
-rw-r--r--scripts/functions30
-rw-r--r--scripts/wrapper.in14
12 files changed, 274 insertions, 54 deletions
diff --git a/scripts/addToolVersion.sh b/scripts/addToolVersion.sh
index 8e0446e..337c656 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, --ppl
+ --gmp, --mpfr, --ppl, --cloog
Valid options for all tools:
--stable, -s, +x (default)
@@ -134,6 +134,7 @@ while [ $# -gt 0 ]; do
--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;;
+ --cloog) EXP=; OBS=; cat=CLOOG; tool=cloog; tool_prefix=companion_libs;;
# Tools options:
-x|--experimental|+s) EXP=1;;
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index c7e1712..15dc5a5 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -4,18 +4,16 @@
# Download gcc
do_cc_get() {
- local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
-
# Ah! gcc folks are kind of 'different': they store the tarballs in
# subdirectories of the same name! That's because gcc is such /crap/ that
# it is such /big/ that it needs being splitted for distribution! Sad. :-(
# Arrgghh! Some of those versions does not follow this convention:
# gcc-3.3.3 lives in releases/gcc-3.3.3, while gcc-2.95.* isn't in a
# subdirectory! You bastard!
- CT_GetFile "gcc-${version}" \
- {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${version}} \
- ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${version} \
- ftp://ftp.uvsq.fr/pub/gcc/snapshots/${version}
+ CT_GetFile "gcc-${CT_CC_VERSION}" \
+ {ftp,http}://ftp.gnu.org/gnu/gcc{,{,/releases}/gcc-${CT_CC_VERSION}} \
+ ftp://ftp.irisa.fr/pub/mirrors/gcc.gnu.org/gcc/releases/gcc-${CT_CC_VERSION} \
+ ftp://ftp.uvsq.fr/pub/gcc/snapshots/${CT_CC_VERSION}
# Starting with GCC 4.3, ecj is used for Java, and will only be
# built if the configure script finds ecj.jar at the top of the
@@ -29,16 +27,14 @@ do_cc_get() {
# Extract gcc
do_cc_extract() {
- local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
-
- CT_Extract "gcc-${version}"
- CT_Patch "gcc-${version}"
+ CT_Extract "gcc-${CT_CC_VERSION}"
+ CT_Patch "gcc-${CT_CC_VERSION}"
# Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree
- if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \
- -a ! -f "${CT_SRC_DIR}/gcc-${version}/ecj.jar" \
+ if [ "${CT_CC_LANG_JAVA_USE_ECJ}" = "y" \
+ -a ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar" \
]; then
- CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${version}/ecj.jar"
+ CT_DoExecLog ALL cp -v "${CT_TARBALLS_DIR}/ecj-latest.jar" "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/ecj.jar"
fi
}
@@ -90,7 +86,6 @@ do_cc_core() {
local core_prefix_dir
local extra_config
local lang_opt
- local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
eval $1
eval $2
@@ -137,12 +132,20 @@ do_cc_core() {
extra_config="${extra_config} ${CT_ARCH_WITH_TUNE}"
extra_config="${extra_config} ${CT_ARCH_WITH_FPU}"
extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}"
- [ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
extra_config="${extra_config} --enable-__cxa_atexit"
else
extra_config="${extra_config} --disable-__cxa_atexit"
fi
+ if [ "${CT_GMP_MPFR}" = "y" ]; then
+ extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}"
+ extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}"
+ fi
+ if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
+ extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}"
+ extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}"
+ extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}"
+ fi
CT_DoLog DEBUG "Extra config passed: '${extra_config}'"
@@ -150,7 +153,7 @@ do_cc_core() {
CC_FOR_BUILD="${CT_BUILD}-gcc" \
CFLAGS="${CT_CFLAGS_FOR_HOST}" \
CT_DoExecLog ALL \
- "${CT_SRC_DIR}/gcc-${version}/configure" \
+ "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--target=${CT_TARGET} \
@@ -182,7 +185,7 @@ do_cc_core() {
# so we configure then build it.
# Next we have to configure gcc, create libgcc.mk then edit it...
# So much easier if we just edit the source tree, but hey...
- if [ ! -f "${CT_SRC_DIR}/gcc-${version}/gcc/BASE-VER" ]; then
+ if [ ! -f "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/gcc/BASE-VER" ]; then
CT_DoExecLog ALL make configure-libiberty
CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libiberty libiberty.a
CT_DoExecLog ALL make configure-gcc configure-libcpp
@@ -192,7 +195,7 @@ do_cc_core() {
CT_DoExecLog ALL make ${PARALLELMFLAGS} all-libcpp all-build-libiberty
fi
# HACK: gcc-4.2 uses libdecnumber to build libgcc.mk, so build it here.
- if [ -d "${CT_SRC_DIR}/gcc-${version}/libdecnumber" ]; then
+ if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/libdecnumber" ]; then
CT_DoExecLog ALL make configure-libdecnumber
CT_DoExecLog ALL make ${PARALLELMFLAGS} -C libdecnumber libdecnumber.a
fi
@@ -238,8 +241,6 @@ do_cc_core() {
#------------------------------------------------------------------------------
# Build final gcc
do_cc() {
- local version="${CT_CC_VERSION}${CT_CC_GCC_4_4_snapshot_date}"
-
# If building for bare metal, nothing to be done here, the static core conpiler is enough!
[ "${CT_BARE_METAL}" = "y" ] && return 0
@@ -273,7 +274,6 @@ do_cc() {
extra_config="${extra_config} ${CT_ARCH_WITH_FPU}"
extra_config="${extra_config} ${CT_ARCH_WITH_FLOAT}"
[ "${CT_SHARED_LIBS}" = "y" ] || extra_config="${extra_config} --disable-shared"
- [ "${CT_GMP_MPFR}" = "y" ] && extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR} --with-mpfr=${CT_PREFIX_DIR}"
[ -n "${CT_CC_PKGVERSION}" ] && extra_config="${extra_config} --with-pkgversion=${CT_CC_PKGVERSION}"
[ -n "${CT_CC_BUGURL}" ] && extra_config="${extra_config} --with-bugurl=${CT_CC_BUGURL}"
[ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ] && extra_config="${extra_config} --enable-sjlj-exceptions"
@@ -283,6 +283,15 @@ do_cc() {
else
extra_config="${extra_config} --disable-__cxa_atexit"
fi
+ if [ "${CT_GMP_MPFR}" = "y" ]; then
+ extra_config="${extra_config} --with-gmp=${CT_PREFIX_DIR}"
+ extra_config="${extra_config} --with-mpfr=${CT_PREFIX_DIR}"
+ fi
+ if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
+ extra_config="${extra_config} --with-ppl=${CT_PREFIX_DIR}"
+ extra_config="${extra_config} --with-cloog=${CT_PREFIX_DIR}"
+ extra_config="${extra_config} --with-mpc=${CT_PREFIX_DIR}"
+ fi
CT_DoLog DEBUG "Extra config passed: '${extra_config}'"
@@ -296,7 +305,7 @@ do_cc() {
CXXFLAGS_FOR_TARGET="${CT_TARGET_CFLAGS}" \
LDFLAGS_FOR_TARGET="${CT_TARGET_LDFLAGS}" \
CT_DoExecLog ALL \
- "${CT_SRC_DIR}/gcc-${version}/configure" \
+ "${CT_SRC_DIR}/gcc-${CT_CC_VERSION}/configure" \
--build=${CT_BUILD} \
--host=${CT_HOST} \
--target=${CT_TARGET} \
diff --git a/scripts/build/companion_libs/cloog.sh b/scripts/build/companion_libs/cloog.sh
new file mode 100644
index 0000000..0e6d74f
--- /dev/null
+++ b/scripts/build/companion_libs/cloog.sh
@@ -0,0 +1,63 @@
+# This file adds the functions to build the CLooG library
+# Copyright 2009 Yann E. MORIN
+# Licensed under the GPL v2. See COPYING in the root of this package
+
+do_cloog_get() { :; }
+do_cloog_extract() { :; }
+do_cloog() { :; }
+do_cloog_target() { :; }
+
+# Overide functions depending on configuration
+if [ "${CT_PPL_CLOOG_MPC}" = "y" ]; then
+
+# Download CLooG
+do_cloog_get() {
+ CT_GetFile "cloog-ppl-${CT_CLOOG_VERSION}" \
+ ftp://gcc.gnu.org/pub/gcc/infrastructure
+}
+
+# Extract CLooG
+do_cloog_extract() {
+ CT_Extract "cloog-ppl-${CT_CLOOG_VERSION}"
+ CT_Pushd "${CT_SRC_DIR}/cloog-ppl"
+ CT_Patch "cloog-ppl-${CT_CLOOG_VERSION}" nochdir
+ CT_Popd
+}
+
+do_cloog() {
+ mkdir -p "${CT_BUILD_DIR}/build-cloog-ppl"
+ cd "${CT_BUILD_DIR}/build-cloog-ppl"
+
+ CT_DoStep INFO "Installing CLooG/ppl"
+
+ CT_DoLog EXTRA "Configuring CLooG/ppl"
+ CFLAGS="${CT_CFLAGS_FOR_HOST}" \
+ CT_DoExecLog ALL \
+ "${CT_SRC_DIR}/cloog-ppl/configure" \
+ --build=${CT_BUILD} \
+ --host=${CT_HOST} \
+ --prefix="${CT_PREFIX_DIR}" \
+ --with-gmp="${CT_PREFIX_DIR}" \
+ --with-ppl="${CT_PREFIX_DIR}" \
+ --enable-shared \
+ --disable-static \
+ --with-bits=gmp
+
+ CT_DoLog EXTRA "Building CLooG/ppl"
+ CT_DoExecLog ALL make ${PARALLELMFLAGS}
+
+ if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
+ CT_DoLog EXTRA "Checking CLooG/ppl"
+ CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
+ fi
+
+ CT_DoLog EXTRA "Installing CLooG/ppl"
+ CT_DoExecLog ALL make install
+
+ # Remove spuriously installed file
+ CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/bin/cloog"
+
+ CT_EndStep
+}
+
+fi # CT_PPL_CLOOG_MPC
diff --git a/scripts/build/companion_libs/gmp.sh b/scripts/build/companion_libs/gmp.sh
index a3dd4a0..6371b45 100644
--- a/scripts/build/companion_libs/gmp.sh
+++ b/scripts/build/companion_libs/gmp.sh
@@ -22,8 +22,6 @@ do_gmp_extract() {
}
do_gmp() {
- local opts
- local cflags
mkdir -p "${CT_BUILD_DIR}/build-gmp"
cd "${CT_BUILD_DIR}/build-gmp"
@@ -32,27 +30,22 @@ do_gmp() {
CT_DoLog EXTRA "Configuring GMP"
- if [ "${CT_PPL_CLOOG}" = "y" ]; then
- opts="--enable-cxx"
- cflags="-fexceptions"
- fi
-
- CFLAGS="${CT_CFLAGS_FOR_HOST} ${cflags}" \
+ CFLAGS="${CT_CFLAGS_FOR_HOST} -fexceptions" \
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-shared \
+ --disable-static \
--enable-fft \
--enable-mpbsd \
- ${opts}
+ --enable-cxx
CT_DoLog EXTRA "Building GMP"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
- if [ "${CT_GMP_CHECK}" = "y" ]; then
+ if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking GMP"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
@@ -63,7 +56,7 @@ do_gmp() {
CT_EndStep
}
-if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then
+if [ "${CT_COMP_LIBS_TARGET}" = "y" ]; then
do_gmp_target() {
mkdir -p "${CT_BUILD_DIR}/build-gmp-target"
diff --git a/scripts/build/companion_libs/mpc.sh b/scripts/build/companion_libs/mpc.sh
new file mode 100644
index 0000000..18144a0
--- /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}" \
+ --enable-shared \
+ --disable-static \
+
+ CT_DoLog EXTRA "Building MPC"
+ CT_DoExecLog ALL make ${PARALLELMFLAGS}
+
+ if [ "${CT_COMP_LIBS_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/mpfr.sh b/scripts/build/companion_libs/mpfr.sh
index e302ff7..85d0942 100644
--- a/scripts/build/companion_libs/mpfr.sh
+++ b/scripts/build/companion_libs/mpfr.sh
@@ -77,14 +77,14 @@ do_mpfr() {
--host=${CT_HOST} \
--prefix="${CT_PREFIX_DIR}" \
${mpfr_opt} \
- --disable-shared \
- --enable-static \
+ --enable-shared \
+ --disable-static \
--with-gmp="${CT_PREFIX_DIR}"
CT_DoLog EXTRA "Building MPFR"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
- if [ "${CT_MPFR_CHECK}" = "y" ]; then
+ if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking MPFR"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
@@ -95,7 +95,7 @@ do_mpfr() {
CT_EndStep
}
-if [ "${CT_GMP_MPFR_TARGET}" = "y" ]; then
+if [ "${CT_COMP_LIBS_TARGET}" = "y" ]; then
do_mpfr_target() {
mkdir -p "${CT_BUILD_DIR}/build-mpfr-target"
diff --git a/scripts/build/companion_libs/ppl.sh b/scripts/build/companion_libs/ppl.sh
index d3246f9..4af080b 100644
--- a/scripts/build/companion_libs/ppl.sh
+++ b/scripts/build/companion_libs/ppl.sh
@@ -8,13 +8,14 @@ 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() {
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}
+ ftp://ftp.cs.unipr.it/pub/ppl/releases/${CT_PPL_VERSION} \
+ ftp://gcc.gnu.org/pub/gcc/infrastructure
}
# Extract PPL
@@ -31,6 +32,7 @@ do_ppl() {
CT_DoLog EXTRA "Configuring PPL"
CFLAGS="${CT_CFLAGS_FOR_HOST}" \
+ CXXFLAGS="${CT_CFLAGS_FOR_HOST}" \
CT_DoExecLog ALL \
"${CT_SRC_DIR}/ppl-${CT_PPL_VERSION}/configure" \
--build=${CT_BUILD} \
@@ -38,8 +40,8 @@ do_ppl() {
--prefix="${CT_PREFIX_DIR}" \
--with-libgmp-prefix="${CT_PREFIX_DIR}" \
--with-libgmpxx-prefix="${CT_PREFIX_DIR}" \
- --disable-shared \
- --enable-static \
+ --enable-shared \
+ --disable-static \
--disable-debugging \
--disable-assertions \
--disable-ppl_lcdd \
@@ -52,7 +54,7 @@ do_ppl() {
CT_DoLog EXTRA "Building PPL"
CT_DoExecLog ALL make ${PARALLELMFLAGS}
- if [ "${CT_PPL_CHECK}" = "y" ]; then
+ if [ "${CT_COMP_LIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking PPL"
CT_DoExecLog ALL make ${PARALLELMFLAGS} -s check
fi
@@ -60,7 +62,10 @@ do_ppl() {
CT_DoLog EXTRA "Installing PPL"
CT_DoExecLog ALL make install
+ # Remove spuriously installed file
+ CT_DoExecLog ALL rm -f "${CT_PREFIX_DIR}/bin/ppl-config"
+
CT_EndStep
}
-fi # CT_PPL_CLOOG
+fi # CT_PPL_CLOOG_MPC
diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh
index acaf864..a262c1d 100644
--- a/scripts/build/internals.sh
+++ b/scripts/build/internals.sh
@@ -4,6 +4,8 @@
# un-wanted files, to add tuple aliases, and to add the final
# crosstool-NG-provided files.
do_finish() {
+ local _t
+
CT_DoStep INFO "Cleaning-up the toolchain's directory"
CT_DoLog EXTRA "Removing access to the build system tools"
@@ -39,6 +41,33 @@ do_finish() {
done
CT_Popd
+ # If using the companion libraries, we need a wrapper
+ # that will set LD_LIBRARY_PATH approriately
+ if [ "${CT_GMP_MPFR}" = "y" \
+ -o "${CT_PPL_CLOOG_MPC}" = "y" ]; then
+ CT_DoLog EXTRA "Installing toolchain wrappers"
+ CT_Pushd "${CT_PREFIX_DIR}/bin"
+
+ # Copy the wrapper
+ CT_DoExecLog DEBUG install -m 0755 "${CT_LIB_DIR}/scripts/wrapper.in" \
+ ".${CT_TARGET}-wrapper"
+
+ # Replace every tools with the wrapper
+ # Do it unconditionally, even for those tools that happen to be shell
+ # scripts, we don't know if they would in the end spawn a binary...
+ # Just skip symlinks
+ for _t in "${CT_TARGET}-"*; do
+ if [ "$( LANG=C stat -c '%F' "${_t}" )" != "symbolic link" ]; then
+ CT_DoExecLog ALL mv "${t}" ".${_t}"
+ CT_DoExecLog ALL ln ".${CT_TARGET}-wrapper" "${_t}"
+ fi
+ done
+
+ # Get rid of the wrapper, we're using hardlinks
+ CT_DoExecLog DEBUG rm -f ".${CT_TARGET}-wrapper"
+ CT_Popd
+ fi
+
# Remove the generated documentation files
if [ "${CT_REMOVE_DOCS}" = "y" ]; then
CT_DoLog EXTRA "Removing installed documentation"
diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh
index 3fcda91..9af0135 100644
--- a/scripts/build/libc/glibc.sh
+++ b/scripts/build/libc/glibc.sh
@@ -172,6 +172,7 @@ do_libc_headers() {
CT_DoExecLog ALL \
make CFLAGS="-O -DBOOTSTRAP_GCC" \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
+ PARALLELMFLAGS="${PARALLELMFLAGS}" \
sysdeps/gnu/errlist.c
mkdir -p stdio-common
@@ -189,6 +190,7 @@ do_libc_headers() {
CFLAGS="-O -DBOOTSTRAP_GCC" \
${LIBC_SYSROOT_ARG} \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
+ PARALLELMFLAGS="${PARALLELMFLAGS}" \
install-headers
# Two headers -- stubs.h and features.h -- aren't installed by install-headers,
@@ -331,11 +333,12 @@ do_libc_start_files() {
${extra_config} \
${CT_LIBC_GLIBC_EXTRA_CONFIG}
-
#TODO: should check whether slibdir has been set in configparms to */lib64
# and copy the startfiles into the appropriate libdir.
CT_DoLog EXTRA "Building C library start files"
- CT_DoExecLog ALL make OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" csu/subdir_lib
+ CT_DoExecLog ALL make OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
+ PARALLELMFLAGS="${PARALLELMFLAGS}" \
+ csu/subdir_lib
CT_DoLog EXTRA "Installing C library start files"
if [ "${CT_USE_SYSROOT}" = "y" ]; then
@@ -499,18 +502,19 @@ do_libc() {
# then you need to set the KERNELCONFIG variable to point to a .config file for this arch.
# The following architectures are known to need kernel .config: alpha, arm, ia64, s390, sh, sparc
# Note: LD and RANLIB needed by glibc-2.1.3's c_stub directory, at least on macosx
- # No need for PARALLELMFLAGS here, Makefile already reads this environment variable
CT_DoLog EXTRA "Building C library"
CT_DoExecLog ALL make LD=${CT_TARGET}-ld \
- RANLIB=${CT_TARGET}-ranlib \
- OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
- ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \
- ${GLIBC_INITIAL_BUILD_RULE}
+ RANLIB=${CT_TARGET}-ranlib \
+ OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
+ ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \
+ PARALLELMFLAGS="${PARALLELMFLAGS}" \
+ ${GLIBC_INITIAL_BUILD_RULE}
CT_DoLog EXTRA "Installing C library"
CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \
${LIBC_SYSROOT_ARG} \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
+ PARALLELMFLAGS="${PARALLELMFLAGS}" \
${GLIBC_INITIAL_INSTALL_RULE}
# This doesn't seem to work when building a crosscompiler,
@@ -553,7 +557,11 @@ do_libc_finish() {
cd "${CT_BUILD_DIR}/build-libc"
CT_DoLog EXTRA "Re-building C library"
- CT_DoExecLog ALL make LD=${CT_TARGET}-ld RANLIB=${CT_TARGET}-ranlib
+ CT_DoExecLog ALL make LD=${CT_TARGET}-ld \
+ RANLIB=${CT_TARGET}-ranlib \
+ OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
+ ASFLAGS="${GLIBC_INITIAL_BUILD_ASFLAGS}" \
+ PARALLELMFLAGS="${PARALLELMFLAGS}"
CT_DoLog EXTRA "Installing missing C library components"
# note: should do full install and then fix linker scripts, but this is faster
@@ -561,6 +569,7 @@ do_libc_finish() {
CT_DoExecLog ALL make install_root="${CT_SYSROOT_DIR}" \
${LIBC_SYSROOT_ARG} \
OBJDUMP_FOR_HOST="${CT_TARGET}-objdump" \
+ PARALLELMFLAGS="${PARALLELMFLAGS}" \
install-${t}
done
diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in
index a2032bc..44c3023 100644
--- a/scripts/crosstool-NG.sh.in
+++ b/scripts/crosstool-NG.sh.in
@@ -91,6 +91,8 @@ CT_DoLog INFO "Building environment variables"
. "${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/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"
@@ -125,6 +127,10 @@ CT_CONFIG_DIR="${CT_BUILD_DIR}/configs"
CT_CC_CORE_STATIC_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-static"
CT_CC_CORE_SHARED_PREFIX_DIR="${CT_BUILD_DIR}/${CT_CC}-core-shared"
+# Set LD_LIBRARY_PATH to point to prefix/lib so we can find our own
+# libraries; add as first path, so we get hit first by the dynamic linker
+CT_SetLibPath "${CT_PREFIX_DIR}/lib" first
+
# We must ensure that we can restart if asked for!
if [ -n "${CT_RESTART}" -a ! -d "${CT_STATE_DIR}" ]; then
CT_DoLog ERROR "You asked to restart a non-restartable build"
@@ -447,6 +453,8 @@ if [ -z "${CT_RESTART}" ]; then
do_gmp_get
do_mpfr_get
do_ppl_get
+ do_cloog_get
+ do_mpc_get
do_binutils_get
do_cc_get
do_libc_get
@@ -464,6 +472,8 @@ if [ -z "${CT_RESTART}" ]; then
do_gmp_extract
do_mpfr_extract
do_ppl_extract
+ do_cloog_extract
+ do_mpc_extract
do_binutils_extract
do_cc_extract
do_libc_extract
diff --git a/scripts/functions b/scripts/functions
index 82bccab..738b400 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -265,6 +265,36 @@ CT_DoYes() {
yes "$1" || true
}
+# Add the specified directory to LD_LIBRARY_PATH, and export it
+# If the specified patch is already present, just export
+# $1: path to add
+# $2: add as 'first' or 'last' path, 'first' is assumed if $2 is empty
+# Usage CT_SetLibPath /some/where/lib [first|last]
+CT_SetLibPath() {
+ local path="$1"
+ local pos="$2"
+
+ case ":${LD_LIBRARY_PATH}:" in
+ *:"${path}":*) ;;
+ *) case "${pos}" in
+ last)
+ CT_DoLog DEBUG "Adding '${path}' at end of LD_LIBRARY_PATH"
+ LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${path}"
+ ;;
+ first|"")
+ CT_DoLog DEBUG "Adding '${path}' at start of LD_LIBRARY_PATH"
+ LD_LIBRARY_PATH="${path}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"
+ ;;
+ *)
+ CT_Abort "Incorrect position '${pos}' to add '${path}' to LD_LIBRARY_PATH"
+ ;;
+ esac
+ ;;
+ esac
+ CT_DoLog DEBUG "==> LD_LIBRARY_PATH='${LD_LIBRARY_PATH}'"
+ export LD_LIBRARY_PATH
+}
+
# Get the file name extension of a component
# Usage: CT_GetFileExtension <component_name-component_version> [extension]
# If found, echoes the extension to stdout
diff --git a/scripts/wrapper.in b/scripts/wrapper.in
new file mode 100644
index 0000000..6222333
--- /dev/null
+++ b/scripts/wrapper.in
@@ -0,0 +1,14 @@
+#!/bin/sh
+
+dirname="$(dirname "${0}")"
+basename="$(basename "${0}")"
+
+ld_lib_path="$(dirname "${dirname}")/lib"
+
+case ":${LD_LIBRARY_PATH}:" in
+ *":${ld_lib_path}:"*) ;;
+ *) LD_LIBRARY_PATH="${ld_lib_path}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}";;
+esac
+
+export LD_LIBRARY_PATH
+exec "${dirname}/.${basename}" "$@"