summaryrefslogtreecommitdiff
path: root/scripts/build
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/build')
-rw-r--r--scripts/build/arch.sh2
-rw-r--r--scripts/build/arch/xtensa.sh2
-rw-r--r--scripts/build/binutils/binutils.sh27
-rw-r--r--scripts/build/cc/100-gcc.sh130
-rw-r--r--scripts/build/companion_libs/100-gmp.sh6
-rw-r--r--scripts/build/companion_libs/110-mpfr.sh10
-rw-r--r--scripts/build/companion_libs/121-isl.sh6
-rw-r--r--scripts/build/companion_libs/130-cloog.sh6
-rw-r--r--scripts/build/companion_libs/140-mpc.sh6
-rw-r--r--scripts/build/companion_libs/200-libelf.sh4
-rwxr-xr-xscripts/build/companion_libs/210-expat.sh4
-rw-r--r--scripts/build/companion_libs/220-ncurses.sh4
-rw-r--r--scripts/build/companion_libs/320-libiconv.sh6
-rw-r--r--scripts/build/companion_libs/330-gettext.sh6
-rw-r--r--scripts/build/companion_tools.sh45
-rw-r--r--scripts/build/companion_tools/050-make.sh63
-rw-r--r--scripts/build/companion_tools/100-m4.sh66
-rw-r--r--scripts/build/companion_tools/200-autoconf.sh46
-rw-r--r--scripts/build/companion_tools/300-automake.sh44
-rw-r--r--scripts/build/companion_tools/400-libtool.sh44
-rw-r--r--scripts/build/debug/000-template.sh4
-rw-r--r--scripts/build/debug/100-dmalloc.sh6
-rw-r--r--scripts/build/debug/200-duma.sh10
-rw-r--r--scripts/build/debug/300-gdb.sh26
-rw-r--r--scripts/build/debug/400-ltrace.sh6
-rw-r--r--scripts/build/debug/500-strace.sh4
-rw-r--r--scripts/build/internals.sh39
-rw-r--r--scripts/build/kernel/linux.sh4
-rw-r--r--scripts/build/libc/avr-libc.sh6
-rw-r--r--scripts/build/libc/glibc.sh29
-rw-r--r--scripts/build/libc/mingw.sh35
-rw-r--r--scripts/build/libc/musl.sh8
-rw-r--r--scripts/build/libc/newlib.sh10
-rw-r--r--scripts/build/libc/uClibc.sh29
-rw-r--r--scripts/build/test_suite/gcc.sh2
35 files changed, 510 insertions, 235 deletions
diff --git a/scripts/build/arch.sh b/scripts/build/arch.sh
index 5c5edc9..3d3611b 100644
--- a/scripts/build/arch.sh
+++ b/scripts/build/arch.sh
@@ -23,7 +23,7 @@ CT_DoArchUClibcSelectArch() {
local cfg="${1}"
local arch="${2}"
- ${sed} -i -r -e '/^TARGET_.*/d' "${cfg}"
+ sed -i -r -e '/^TARGET_.*/d' "${cfg}"
CT_KconfigEnableOption "TARGET_${arch}" "${cfg}"
CT_KconfigSetOption "TARGET_ARCH" "${arch}" "${cfg}"
}
diff --git a/scripts/build/arch/xtensa.sh b/scripts/build/arch/xtensa.sh
index a3010c6..bf94ddf 100644
--- a/scripts/build/arch/xtensa.sh
+++ b/scripts/build/arch/xtensa.sh
@@ -3,6 +3,8 @@
CT_DoArchTupleValues() {
# The architecture part of the tuple:
CT_TARGET_ARCH="${CT_ARCH}${CT_ARCH_SUFFIX}"
+ CT_ARCH_ENDIAN_CFLAG=""
+ CT_ARCH_ENDIAN_LDFLAG=""
# The system part of the tuple:
case "${CT_LIBC}" in
*glibc) CT_TARGET_SYS=gnu;;
diff --git a/scripts/build/binutils/binutils.sh b/scripts/build/binutils/binutils.sh
index 65a2dcc..0e285b6 100644
--- a/scripts/build/binutils/binutils.sh
+++ b/scripts/build/binutils/binutils.sh
@@ -8,8 +8,8 @@ do_binutils_get() {
CT_GetCustom "binutils" "${CT_BINUTILS_CUSTOM_VERSION}" \
"${CT_BINUTILS_CUSTOM_LOCATION}"
else
- if echo ${CT_BINUTILS_VERSION} |${grep} -q linaro; then
- YYMM=`echo ${CT_BINUTILS_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
+ if echo ${CT_BINUTILS_VERSION} |grep -q linaro; then
+ YYMM=`echo ${CT_BINUTILS_VERSION} |cut -d- -f3 |sed -e 's,^..,,'`
CT_GetFile "binutils-${CT_BINUTILS_VERSION}" \
https://releases.linaro.org/${YYMM}/components/toolchain/binutils-linaro \
http://cbuild.validation.linaro.org/snapshots
@@ -132,7 +132,7 @@ do_binutils_for_host() {
mkdir -p "${CT_BUILDTOOLS_PREFIX_DIR}/bin"
for t in "${binutils_tools[@]}"; do
CT_DoExecLog ALL ln -sv \
- "${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" \
+ "${CT_PREFIX_DIR}/${CT_TARGET}/bin/${t}" \
"${CT_BUILDTOOLS_PREFIX_DIR}/${CT_TARGET}/bin/${t}"
CT_DoExecLog ALL ln -sv \
"${CT_PREFIX_DIR}/bin/${CT_TARGET}-${t}" \
@@ -230,14 +230,14 @@ do_binutils_backend() {
if [ "${static_build}" = "y" ]; then
extra_make_flags+=("LDFLAGS=${ldflags} -all-static")
CT_DoLog EXTRA "Prepare binutils for static build"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} configure-host
+ CT_DoExecLog ALL make ${JOBSFLAGS} configure-host
fi
CT_DoLog EXTRA "Building binutils"
- CT_DoExecLog ALL ${make} "${extra_make_flags[@]}" ${JOBSFLAGS}
+ CT_DoExecLog ALL make "${extra_make_flags[@]}" ${JOBSFLAGS}
CT_DoLog EXTRA "Installing binutils"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
if [ "${build_manuals}" = "y" ]; then
CT_DoLog EXTRA "Building and installing the binutils manuals"
@@ -247,8 +247,8 @@ do_binutils_backend() {
fi
manuals_install=( "${manuals_for[@]/\#/install-pdf-}" )
manuals_install+=( "${manuals_for[@]/\#/install-html-}" )
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} pdf html
- CT_DoExecLog ALL ${make} "${manuals_install[@]}"
+ CT_DoExecLog ALL make ${JOBSFLAGS} pdf html
+ CT_DoExecLog ALL make "${manuals_install[@]}"
fi
# Install the wrapper if needed
@@ -256,7 +256,7 @@ do_binutils_backend() {
CT_DoLog EXTRA "Installing ld wrapper"
rm -f "${prefix}/bin/${CT_TARGET}-ld"
rm -f "${prefix}/${CT_TARGET}/bin/ld"
- ${sed} -r -e "s/@@DEFAULT_LD@@/${CT_BINUTILS_LINKER_DEFAULT}/" \
+ sed -r -e "s/@@DEFAULT_LD@@/${CT_BINUTILS_LINKER_DEFAULT}/" \
"${CT_LIB_DIR}/scripts/build/binutils/binutils-ld.in" \
>"${prefix}/bin/${CT_TARGET}-ld"
chmod +x "${prefix}/bin/${CT_TARGET}-ld"
@@ -309,14 +309,15 @@ do_elf2flt_backend() {
--with-binutils-include-dir=${binutils_src}/include \
--with-libbfd=${binutils_bld}/bfd/libbfd.a \
--with-libiberty=${binutils_bld}/libiberty/libiberty.a \
+ --disable-werror \
${elf2flt_opts} \
"${CT_ELF2FLT_EXTRA_CONFIG_ARRAY[@]}"
CT_DoLog EXTRA "Building elf2flt"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing elf2flt"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
# Now on for the target libraries
@@ -371,9 +372,9 @@ do_binutils_for_target() {
"${CT_BINUTILS_EXTRA_CONFIG_ARRAY[@]}"
CT_DoLog EXTRA "Building binutils' libraries (${targets[*]}) for target"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} "${build_targets[@]}"
+ CT_DoExecLog ALL make ${JOBSFLAGS} "${build_targets[@]}"
CT_DoLog EXTRA "Installing binutils' libraries (${targets[*]}) for target"
- CT_DoExecLog ALL ${make} DESTDIR="${CT_SYSROOT_DIR}" "${install_targets[@]}"
+ CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" "${install_targets[@]}"
CT_Popd
CT_EndStep
diff --git a/scripts/build/cc/100-gcc.sh b/scripts/build/cc/100-gcc.sh
index db14728..b0b713d 100644
--- a/scripts/build/cc/100-gcc.sh
+++ b/scripts/build/cc/100-gcc.sh
@@ -13,10 +13,10 @@ do_gcc_get() {
else
# Account for the Linaro versioning
linaro_version="$( echo "${CT_CC_GCC_VERSION}" \
- |${sed} -r -e 's/^linaro-//;' \
+ |sed -r -e 's/^linaro-//;' \
)"
linaro_series="$( echo "${linaro_version}" \
- |${sed} -r -e 's/-.*//;' \
+ |sed -r -e 's/-.*//;' \
)"
# The official gcc hosts put gcc under a gcc/release/ directory,
@@ -27,7 +27,7 @@ do_gcc_get() {
{http,ftp,https}://ftp.gnu.org/gnu/gcc/gcc-${CT_CC_GCC_VERSION} \
ftp://{gcc.gnu.org,sourceware.org}/pub/gcc/releases/gcc-${CT_CC_GCC_VERSION}
else
- YYMM=`echo ${CT_CC_GCC_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
+ YYMM=`echo ${CT_CC_GCC_VERSION} |cut -d- -f3 |sed -e 's,^..,,'`
CT_GetFile "gcc-${CT_CC_GCC_VERSION}" \
"https://releases.linaro.org/components/toolchain/gcc-linaro/${linaro_version}" \
"https://releases.linaro.org/${YYMM}/components/toolchain/gcc-linaro/${linaro_series}" \
@@ -185,7 +185,7 @@ cc_gcc_multilib_housekeeping() {
# sed: prepend dashes or do nothing if default is empty string
multilib_defaults=( $( cc_gcc_get_spec multilib_defaults "${cc}" | \
- ${sed} 's/\(^\|[[:space:]]\+\)\([^[:space:]]\)/ -\2/g' ) )
+ sed 's/\(^\|[[:space:]]\+\)\([^[:space:]]\)/ -\2/g' ) )
CT_DoLog EXTRA "gcc default flags: '${multilib_defaults}'"
multilibs=( $( "${cc}" -print-multi-lib ) )
@@ -238,7 +238,7 @@ cc_gcc_multilib_housekeeping() {
sysroot=$( "${cc}" -print-sysroot )
if [ -n "${base}" ]; then
CT_DoExecLog ALL mkdir -p "${sysroot}${base}"
- lnk=$( echo "${base#/}" | ${sed} -e 's,[^/]*,..,g' )
+ lnk=$( echo "${base#/}" | sed -e 's,[^/]*,..,g' )
else
lnk=.
fi
@@ -260,8 +260,8 @@ do_gcc_core_pass_1() {
core_opts+=( "host=${CT_BUILD}" )
core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" )
core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
- core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" )
- core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" )
+ core_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" )
+ core_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" )
core_opts+=( "lang_list=c" )
core_opts+=( "build_step=core1" )
@@ -286,8 +286,8 @@ do_gcc_core_pass_2() {
core_opts+=( "host=${CT_BUILD}" )
core_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
core_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" )
- core_opts+=( "cflags=${CT_CFLAGS_FOR_HOST}" )
- core_opts+=( "ldflags=${CT_LDFLAGS_FOR_HOST}" )
+ core_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" )
+ core_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" )
core_opts+=( "lang_list=c" )
core_opts+=( "build_step=core2" )
@@ -436,6 +436,7 @@ do_gcc_core_backend() {
extra_config+=(--disable-libgomp)
extra_config+=(--disable-libmudflap)
+ extra_config+=(--disable-libmpx)
if [ "${CT_CC_GCC_LIBSSP}" = "y" ]; then
extra_config+=(--enable-libssp)
@@ -628,23 +629,23 @@ do_gcc_core_backend() {
# 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-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then
- CT_DoExecLog CFG ${make} ${JOBSFLAGS} configure-libiberty
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -C libiberty libiberty.a
- CT_DoExecLog CFG ${make} ${JOBSFLAGS} configure-gcc configure-libcpp
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} all-libcpp
+ CT_DoExecLog CFG make ${JOBSFLAGS} configure-libiberty
+ CT_DoExecLog ALL make ${JOBSFLAGS} -C libiberty libiberty.a
+ CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp
+ CT_DoExecLog ALL make ${JOBSFLAGS} all-libcpp
else
- CT_DoExecLog CFG ${make} ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} all-libcpp all-build-libiberty
+ CT_DoExecLog CFG make ${JOBSFLAGS} configure-gcc configure-libcpp configure-build-libiberty
+ CT_DoExecLog ALL make ${JOBSFLAGS} 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-${CT_CC_GCC_VERSION}/libdecnumber" ]; then
- CT_DoExecLog CFG ${make} ${JOBSFLAGS} configure-libdecnumber
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -C libdecnumber libdecnumber.a
+ CT_DoExecLog CFG make ${JOBSFLAGS} configure-libdecnumber
+ CT_DoExecLog ALL make ${JOBSFLAGS} -C libdecnumber libdecnumber.a
fi
# HACK: gcc-4.8 uses libbacktrace to make libgcc.mvars, so make it here.
if [ -d "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/libbacktrace" ]; then
- CT_DoExecLog CFG ${make} ${JOBSFLAGS} configure-libbacktrace
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -C libbacktrace
+ CT_DoExecLog CFG make ${JOBSFLAGS} configure-libbacktrace
+ CT_DoExecLog ALL make ${JOBSFLAGS} -C libbacktrace
fi
libgcc_rule="libgcc.mvars"
@@ -662,9 +663,9 @@ do_gcc_core_backend() {
repair_cc=""
fi
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -C gcc ${libgcc_rule} \
+ CT_DoExecLog ALL make ${JOBSFLAGS} -C gcc ${libgcc_rule} \
${repair_cc}
- ${sed} -r -i -e 's@-lc@@g' gcc/${libgcc_rule}
+ sed -r -i -e 's@-lc@@g' gcc/${libgcc_rule}
else # build_libgcc
core_targets=( gcc )
fi # ! build libgcc
@@ -693,10 +694,18 @@ do_gcc_core_backend() {
esac
CT_DoLog EXTRA "Building ${log_txt}"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} ${core_targets_all}
-
+ CT_DoExecLog ALL make ${JOBSFLAGS} ${core_targets_all}
+
+ # Do not pass ${JOBSFLAGS} here: recent GCC builds have been failing
+ # in parallel 'make install' at random locations: libitm, libcilk,
+ # always for the files that are installed more than once to the same
+ # location (such as libitm.info).
+ # The symptom is that the install command fails with "File exists"
+ # error; running the same command manually succeeds. It looks like
+ # attempts to remove the destination and re-create it, but another
+ # install gets in the way.
CT_DoLog EXTRA "Installing ${log_txt}"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} ${core_targets_install}
+ CT_DoExecLog ALL make ${core_targets_install}
# Remove the libtool "pseudo-libraries": having them in the installed
# tree makes the libtoolized utilities that are built next assume
@@ -709,9 +718,9 @@ do_gcc_core_backend() {
if [ "${build_manuals}" = "yes" ]; then
CT_DoLog EXTRA "Building the GCC manuals"
- CT_DoExecLog ALL ${make} pdf html
+ CT_DoExecLog ALL make pdf html
CT_DoLog EXTRA "Installing the GCC manuals"
- CT_DoExecLog ALL ${make} install-{pdf,html}-gcc
+ CT_DoExecLog ALL make install-{pdf,html}-gcc
fi
# Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
@@ -733,9 +742,8 @@ do_gcc_for_build() {
local -a build_final_opts
local build_final_backend
- # In case we're canadian or cross-native, it seems that a
- # real, complete compiler is needed?!? WTF? Sigh...
- # Otherwise, there is nothing to do.
+ # If native or simple cross toolchain is being built, then build==host;
+ # nothing to do.
case "${CT_TOOLCHAIN_TYPE}" in
native|cross) return 0;;
esac
@@ -743,6 +751,8 @@ do_gcc_for_build() {
build_final_opts+=( "host=${CT_BUILD}" )
build_final_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" )
build_final_opts+=( "complibs=${CT_BUILDTOOLS_PREFIX_DIR}" )
+ build_final_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" )
+ build_final_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" )
build_final_opts+=( "lang_list=$( cc_gcc_lang_list )" )
build_final_opts+=( "build_step=gcc_build" )
if [ "${CT_BARE_METAL}" = "y" ]; then
@@ -769,6 +779,35 @@ do_gcc_for_build() {
CT_EndStep
}
+gcc_movelibs() {
+ local multi_flags multi_dir multi_os_dir multi_root multi_index multi_count
+ local gcc_dir
+
+ for arg in "$@"; do
+ eval "${arg// /\\ }"
+ done
+
+ # Move only files, directories are for other multilibs
+ gcc_dir="${CT_PREFIX_DIR}/${CT_TARGET}/lib/${multi_os_dir}"
+ if [ ! -d "${gcc_dir}" ]; then
+ # GCC didn't install anything outside of sysroot
+ return
+ fi
+ ls "${gcc_dir}" | while read f; do
+ case "${f}" in
+ *.ld)
+ # Linker scripts remain in GCC's directory; elf2flt insists on
+ # finding them there.
+ continue
+ ;;
+ esac
+ if [ -f "${gcc_dir}/${f}" ]; then
+ CT_DoExecLog ALL mkdir -p "${multi_root}/lib/${multi_os_dir}"
+ CT_DoExecLog ALL mv "${gcc_dir}/${f}" "${multi_root}/lib/${multi_os_dir}/${f}"
+ fi
+ done
+}
+
#------------------------------------------------------------------------------
# Build final gcc to run on host
do_gcc_for_host() {
@@ -800,10 +839,18 @@ do_gcc_for_host() {
CT_DoStep INFO "Installing final gcc compiler"
CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final"
-
"${final_backend}" "${final_opts[@]}"
-
CT_Popd
+
+ # GCC installs stuff (including libgcc) into its own /lib dir,
+ # outside of sysroot, breaking linking with -static-libgcc.
+ # Fix up by moving the libraries into the sysroot.
+ if [ "${CT_USE_SYSROOT}" = "y" ]; then
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-cc-gcc-final-movelibs"
+ CT_IterateMultilibs gcc_movelibs movelibs
+ CT_Popd
+ fi
+
CT_EndStep
}
@@ -904,6 +951,14 @@ do_gcc_backend() {
fi
fi
+ if [ "${CT_CC_GCC_HAS_LIBMPX}" = "y" ]; then
+ if [ "${CT_CC_GCC_LIBMPX}" = "y" ]; then
+ extra_config+=(--enable-libmpx)
+ else
+ extra_config+=(--disable-libmpx)
+ fi
+ fi
+
final_LDFLAGS+=("${ldflags}")
# *** WARNING ! ***
@@ -1076,17 +1131,18 @@ do_gcc_backend() {
if [ "${CT_CANADIAN}" = "y" ]; then
CT_DoLog EXTRA "Building libiberty"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} all-build-libiberty
+ CT_DoExecLog ALL make ${JOBSFLAGS} all-build-libiberty
fi
CT_DoLog EXTRA "Building final gcc compiler"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} all
+ CT_DoExecLog ALL make ${JOBSFLAGS} all
+ # See the note on issues with parallel 'make install' in GCC above.
CT_DoLog EXTRA "Installing final gcc compiler"
if [ "${CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES}" = "y" ]; then
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} install-strip
+ CT_DoExecLog ALL make install-strip
else
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} install
+ CT_DoExecLog ALL make install
fi
# Remove the libtool "pseudo-libraries": having them in the installed
@@ -1100,9 +1156,9 @@ do_gcc_backend() {
if [ "${build_manuals}" = "yes" ]; then
CT_DoLog EXTRA "Building the GCC manuals"
- CT_DoExecLog ALL ${make} pdf html
+ CT_DoExecLog ALL make pdf html
CT_DoLog EXTRA "Installing the GCC manuals"
- CT_DoExecLog ALL ${make} install-{pdf,html}-gcc
+ CT_DoExecLog ALL make install-{pdf,html}-gcc
fi
# Create a symlink ${CT_TARGET}-cc to ${CT_TARGET}-gcc to always be able
diff --git a/scripts/build/companion_libs/100-gmp.sh b/scripts/build/companion_libs/100-gmp.sh
index b727f2b..f0df3d1 100644
--- a/scripts/build/companion_libs/100-gmp.sh
+++ b/scripts/build/companion_libs/100-gmp.sh
@@ -103,15 +103,15 @@ do_gmp_backend() {
"${extra_config}"
CT_DoLog EXTRA "Building GMP"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking GMP"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -s check
+ CT_DoExecLog ALL make ${JOBSFLAGS} -s check
fi
CT_DoLog EXTRA "Installing GMP"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
fi # CT_GMP
diff --git a/scripts/build/companion_libs/110-mpfr.sh b/scripts/build/companion_libs/110-mpfr.sh
index 0d024d7..bcbe90f 100644
--- a/scripts/build/companion_libs/110-mpfr.sh
+++ b/scripts/build/companion_libs/110-mpfr.sh
@@ -53,12 +53,12 @@ do_mpfr_extract() {
# See: http://sourceware.org/ml/crossgcc/2008-11/msg00046.html
# and: http://sourceware.org/ml/crossgcc/2008-11/msg00048.html
libtoolize_opt=
- case "$(${libtoolize} --version |head -n 1 |${awk} '{ print $(NF); }')" in
+ case "$(libtoolize --version |head -n 1 |awk '{ print $(NF); }')" in
0.*) ;;
1.*) ;;
*) libtoolize_opt=-i;;
esac
- CT_DoExecLog ALL ${libtoolize} -f ${libtoolize_opt}
+ CT_DoExecLog ALL libtoolize -f ${libtoolize_opt}
touch .autotools.ct-ng
fi
CT_Popd
@@ -146,15 +146,15 @@ do_mpfr_backend() {
--enable-static
CT_DoLog EXTRA "Building MPFR"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking MPFR"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -s check
+ CT_DoExecLog ALL make ${JOBSFLAGS} -s check
fi
CT_DoLog EXTRA "Installing MPFR"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
fi # CT_MPFR
diff --git a/scripts/build/companion_libs/121-isl.sh b/scripts/build/companion_libs/121-isl.sh
index a93d1aa..823dbd5 100644
--- a/scripts/build/companion_libs/121-isl.sh
+++ b/scripts/build/companion_libs/121-isl.sh
@@ -122,15 +122,15 @@ do_isl_backend() {
--with-clang=no
CT_DoLog EXTRA "Building ISL"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking ISL"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -s check
+ CT_DoExecLog ALL make ${JOBSFLAGS} -s check
fi
CT_DoLog EXTRA "Installing ISL"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
fi # CT_ISL
diff --git a/scripts/build/companion_libs/130-cloog.sh b/scripts/build/companion_libs/130-cloog.sh
index 2376570..5504ac2 100644
--- a/scripts/build/companion_libs/130-cloog.sh
+++ b/scripts/build/companion_libs/130-cloog.sh
@@ -109,15 +109,15 @@ do_cloog_backend() {
"${cloog_opts[@]}"
CT_DoLog EXTRA "Building CLooG"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking CLooG"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -s check
+ CT_DoExecLog ALL make ${JOBSFLAGS} -s check
fi
CT_DoLog EXTRA "Installing CLooG"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
fi # CT_CLOOG
diff --git a/scripts/build/companion_libs/140-mpc.sh b/scripts/build/companion_libs/140-mpc.sh
index f753a27..f68e18e 100644
--- a/scripts/build/companion_libs/140-mpc.sh
+++ b/scripts/build/companion_libs/140-mpc.sh
@@ -97,15 +97,15 @@ do_mpc_backend() {
--enable-static
CT_DoLog EXTRA "Building MPC"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
if [ "${CT_COMPLIBS_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking MPC"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} -s check
+ CT_DoExecLog ALL make ${JOBSFLAGS} -s check
fi
CT_DoLog EXTRA "Installing MPC"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
fi # CT_MPC
diff --git a/scripts/build/companion_libs/200-libelf.sh b/scripts/build/companion_libs/200-libelf.sh
index b373b54..7d01563 100644
--- a/scripts/build/companion_libs/200-libelf.sh
+++ b/scripts/build/companion_libs/200-libelf.sh
@@ -143,7 +143,7 @@ do_libelf_backend() {
"${extra_config[@]}"
CT_DoLog EXTRA "Building libelf"
- CT_DoExecLog ALL ${make}
+ CT_DoExecLog ALL make
CT_DoLog EXTRA "Installing libelf"
@@ -153,7 +153,7 @@ do_libelf_backend() {
destdir=
fi
- CT_DoExecLog ALL ${make} instroot="${destdir}" install
+ CT_DoExecLog ALL make instroot="${destdir}" install
}
fi # CT_LIBELF || CT_LIBELF_TARGET
diff --git a/scripts/build/companion_libs/210-expat.sh b/scripts/build/companion_libs/210-expat.sh
index 251d590..3a6deb5 100755
--- a/scripts/build/companion_libs/210-expat.sh
+++ b/scripts/build/companion_libs/210-expat.sh
@@ -102,9 +102,9 @@ do_expat_backend() {
"${extra_config[@]}"
CT_DoLog EXTRA "Building expat"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing expat"
- CT_DoExecLog ALL ${make} install INSTALL_ROOT="${destdir}"
+ CT_DoExecLog ALL make install INSTALL_ROOT="${destdir}"
}
fi
diff --git a/scripts/build/companion_libs/220-ncurses.sh b/scripts/build/companion_libs/220-ncurses.sh
index a740339..6366049 100644
--- a/scripts/build/companion_libs/220-ncurses.sh
+++ b/scripts/build/companion_libs/220-ncurses.sh
@@ -158,9 +158,9 @@ do_ncurses_backend() {
# it also builds ncurses anyway, and dedicated targets (install.includes and
# install.progs) do not do well with parallel make (-jX).
CT_DoLog EXTRA "Building ncurses"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing ncurses"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
fi
diff --git a/scripts/build/companion_libs/320-libiconv.sh b/scripts/build/companion_libs/320-libiconv.sh
index 0c9e5cf..ffe60c2 100644
--- a/scripts/build/companion_libs/320-libiconv.sh
+++ b/scripts/build/companion_libs/320-libiconv.sh
@@ -88,7 +88,7 @@ do_libiconv_backend() {
CT_DoLog EXTRA "Configuring libiconv"
- CT_DoExecLog ALL cp -aT "${CT_SRC_DIR}/libiconv-${CT_LIBICONV_VERSION}" "."
+ CT_DoExecLog ALL cp -aT "${CT_SRC_DIR}/libiconv-${CT_LIBICONV_VERSION}/." "."
if [ "${static_build}" = "y" ]; then
extra_config+=("--disable-shared")
@@ -106,10 +106,10 @@ do_libiconv_backend() {
"${extra_config[@]}" \
CT_DoLog EXTRA "Building libiconv"
- CT_DoExecLog ALL ${make} CC="${host}-gcc ${cflags}" ${JOBSFLAGS}
+ CT_DoExecLog ALL make CC="${host}-gcc ${cflags}" ${JOBSFLAGS}
CT_DoLog EXTRA "Installing libiconv"
- CT_DoExecLog ALL ${make} install CC="${host}-gcc ${cflags}"
+ CT_DoExecLog ALL make install CC="${host}-gcc ${cflags}"
}
fi
diff --git a/scripts/build/companion_libs/330-gettext.sh b/scripts/build/companion_libs/330-gettext.sh
index 7a8755e..19d3ca8 100644
--- a/scripts/build/companion_libs/330-gettext.sh
+++ b/scripts/build/companion_libs/330-gettext.sh
@@ -88,7 +88,7 @@ do_gettext_backend() {
CT_DoLog EXTRA "Configuring gettext"
- CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/gettext-${CT_GETTEXT_VERSION}/"/* .
+ CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/gettext-${CT_GETTEXT_VERSION}/." .
# A bit ugly. D__USE_MINGW_ANSI_STDIO=1 has its own {v}asprintf functions
# but gettext configure doesn't see this flag when it checks for that. An
@@ -128,10 +128,10 @@ do_gettext_backend() {
"${extra_config[@]}"
CT_DoLog EXTRA "Building gettext"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing gettext"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
}
fi
diff --git a/scripts/build/companion_tools.sh b/scripts/build/companion_tools.sh
index b703c41..415f3a2 100644
--- a/scripts/build/companion_tools.sh
+++ b/scripts/build/companion_tools.sh
@@ -7,11 +7,11 @@ for f in "${CT_LIB_DIR}/scripts/build/companion_tools/"*.sh; do
_f="${_f#???-}"
__f="CT_COMP_TOOLS_${_f}"
if [ "${!__f}" = "y" ]; then
- CT_DoLog DEBUG "Enabling companion tools '${_f}'"
+ CT_DoLog DEBUG "Enabling companion tool '${_f}'"
. "${f}"
CT_COMP_TOOLS_FACILITY_LIST="${CT_COMP_TOOLS_FACILITY_LIST} ${_f}"
else
- CT_DoLog DEBUG "Disabling companion tools '${_f}'"
+ CT_DoLog DEBUG "Disabling companion tool '${_f}'"
fi
done
@@ -29,10 +29,45 @@ do_companion_tools_extract() {
done
}
-# Build the companion tools facilities
-do_companion_tools() {
+# Build the companion tools facilities for build
+do_companion_tools_for_build() {
+ # Skip out if:
+ # - native/cross, and companion tools were neither selected
+ # to be built, nor included in the final toolchain
+ # - canadian/cross-native, and companion tools were not
+ # selected to be built
+ case "${CT_TOOLCHAIN_TYPE}" in
+ native|cross)
+ if [ -z "${CT_COMP_TOOLS}${CT_COMP_TOOLS_FOR_HOST}" ]; then
+ return
+ fi
+ ;;
+ canadian|cross-native)
+ if [ -z "${CT_COMP_TOOLS}" ]; then
+ return
+ fi
+ ;;
+ esac
for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
- do_companion_tools_${f}_build
+ do_companion_tools_${f}_for_build
done
}
+# Build the companion tools facilities for host
+do_companion_tools_for_host() {
+ # For native/cross, build==host, and the tools were built
+ # earlier by do_companion_tools_for_build.
+ case "${CT_TOOLCHAIN_TYPE}" in
+ native|cross)
+ return
+ ;;
+ canadian|cross-native)
+ if [ -z "${CT_COMP_TOOLS_FOR_HOST}" ]; then
+ return
+ fi
+ ;;
+ esac
+ for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
+ do_companion_tools_${f}_for_host
+ done
+}
diff --git a/scripts/build/companion_tools/050-make.sh b/scripts/build/companion_tools/050-make.sh
index 3d6da7c..d8f6b66 100644
--- a/scripts/build/companion_tools/050-make.sh
+++ b/scripts/build/companion_tools/050-make.sh
@@ -1,7 +1,5 @@
# Build script for make
-CT_MAKE_VERSION=3.81
-
do_companion_tools_make_get() {
CT_GetFile "make-${CT_MAKE_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/make
@@ -13,18 +11,57 @@ do_companion_tools_make_extract() {
CT_Patch "make" "${CT_MAKE_VERSION}"
}
-do_companion_tools_make_build() {
- CT_DoStep EXTRA "Installing make"
- mkdir -p "${CT_BUILD_DIR}/build-make"
- CT_Pushd "${CT_BUILD_DIR}/build-make"
-
- CT_DoExecLog CFG "${CT_SRC_DIR}/make-${CT_MAKE_VERSION}/configure" \
- --prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
- CT_DoExecLog ALL ${make}
- CT_DoExecLog ALL ${make} install
- if [ "${CT_COMP_TOOLS_make_gmake}" = "y" ]; then
- CT_DoExecLog ALL ln -sv ${make} "${CT_BUILDTOOLS_PREFIX_DIR}/bin/gmake"
+do_companion_tools_make_for_build() {
+ CT_DoStep EXTRA "Installing make for build"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-make-build"
+ do_make_backend \
+ host=${CT_BUILD} \
+ prefix="${CT_BUILD_COMPTOOLS_DIR}" \
+ cflags="${CT_CFLAGS_FOR_BUILD}" \
+ ldflags="${CT_LDFLAGS_FOR_BUILD}"
+ CT_Popd
+ if [ "${CT_MAKE_GMAKE_SYMLINK}" = "y" ]; then
+ CT_DoExecLog ALL ln -sv make "${CT_BUILD_COMPTOOLS_DIR}/bin/gmake"
fi
+ CT_EndStep
+}
+
+do_companion_tools_make_for_host() {
+ CT_DoStep EXTRA "Installing make for host"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-make-host"
+ do_make_backend \
+ host=${CT_HOST} \
+ prefix="${CT_PREFIX_DIR}" \
+ cflags="${CT_CFLAGS_FOR_HOST}" \
+ ldflags="${CT_LDFLAGS_FOR_HOST}"
CT_Popd
+ if [ "${CT_MAKE_GMAKE_SYMLINK}" = "y" ]; then
+ CT_DoExecLog ALL ln -sv make "${CT_PREFIX_DIR}/bin/gmake"
+ fi
CT_EndStep
}
+
+do_make_backend() {
+ local host
+ local prefix
+ local cflags
+ local ldflags
+
+ for arg in "$@"; do
+ eval "${arg// /\\ }"
+ done
+
+ CT_DoLog EXTRA "Configuring make"
+ CT_DoExecLog CFG \
+ CFLAGS="${cflags}" \
+ LDFLAGS="${ldflags}" \
+ "${CT_SRC_DIR}/make-${CT_MAKE_VERSION}/configure" \
+ --host="${host}" \
+ --prefix="${prefix}"
+
+ CT_DoLog EXTRA "Building make"
+ CT_DoExecLog ALL make
+
+ CT_DoLog EXTRA "Installing make"
+ CT_DoExecLog ALL make install
+}
diff --git a/scripts/build/companion_tools/100-m4.sh b/scripts/build/companion_tools/100-m4.sh
index 35721d5..96cde39 100644
--- a/scripts/build/companion_tools/100-m4.sh
+++ b/scripts/build/companion_tools/100-m4.sh
@@ -1,7 +1,5 @@
# Build script for m4
-CT_M4_VERSION=1.4.13
-
do_companion_tools_m4_get() {
CT_GetFile "m4-${CT_M4_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/m4
@@ -12,16 +10,60 @@ do_companion_tools_m4_extract() {
CT_Patch "m4" "${CT_M4_VERSION}"
}
-do_companion_tools_m4_build() {
- CT_DoStep EXTRA "Installing m4"
- mkdir -p "${CT_BUILD_DIR}/build-m4"
- CT_Pushd "${CT_BUILD_DIR}/build-m4"
-
- CT_DoExecLog CFG \
- "${CT_SRC_DIR}/m4-${CT_M4_VERSION}/configure" \
- --prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
- CT_DoExecLog ALL ${make}
- CT_DoExecLog ALL ${make} install
+do_companion_tools_m4_for_build() {
+ CT_DoStep EXTRA "Installing m4 for build"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-m4-build"
+ do_m4_backend \
+ host=${CT_BUILD} \
+ prefix="${CT_BUILD_COMPTOOLS_DIR}" \
+ cflags="${CT_CFLAGS_FOR_BUILD}" \
+ ldflags="${CT_LDFLAGS_FOR_BUILD}"
CT_Popd
CT_EndStep
}
+
+do_companion_tools_m4_for_host() {
+ CT_DoStep EXTRA "Installing m4 for host"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-m4-host"
+ do_m4_backend \
+ host=${CT_HOST} \
+ prefix="${CT_PREFIX_DIR}" \
+ cflags="${CT_CFLAGS_FOR_HOST}" \
+ ldflags="${CT_LDFLAGS_FOR_HOST}"
+ CT_Popd
+ CT_EndStep
+}
+
+do_m4_backend() {
+ local host
+ local prefix
+ local cflags
+ local ldflags
+
+ for arg in "$@"; do
+ eval "${arg// /\\ }"
+ done
+
+ case "${host}" in
+ *-uclibc)
+ # uClibc has posix_spawn in librt, but m4 configure only
+ # searches in libc. This leads to a later failure when
+ # it includes system <spawn.h> but expects a locally-built
+ # posix_spawn().
+ ldflags="${ldflags} -lrt"
+ esac
+
+ CT_DoLog EXTRA "Configuring m4"
+ CT_DoExecLog CFG \
+ CFLAGS="${cflags}" \
+ LDFLAGS="${ldflags}" \
+ "${CT_SRC_DIR}/m4-${CT_M4_VERSION}/configure" \
+ --host="${host}" \
+ --prefix="${prefix}"
+
+ CT_DoLog EXTRA "Building m4"
+ CT_DoExecLog ALL make
+
+ CT_DoLog EXTRA "Installing m4"
+ CT_DoExecLog ALL make install
+}
diff --git a/scripts/build/companion_tools/200-autoconf.sh b/scripts/build/companion_tools/200-autoconf.sh
index def6ddc..95b7115 100644
--- a/scripts/build/companion_tools/200-autoconf.sh
+++ b/scripts/build/companion_tools/200-autoconf.sh
@@ -1,7 +1,5 @@
# Build script for autoconf
-CT_AUTOCONF_VERSION=2.65
-
do_companion_tools_autoconf_get() {
CT_GetFile "autoconf-${CT_AUTOCONF_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/autoconf
@@ -13,21 +11,43 @@ do_companion_tools_autoconf_extract() {
CT_Patch "autoconf" "${CT_AUTOCONF_VERSION}"
}
-do_companion_tools_autoconf_build() {
- CT_DoStep EXTRA "Installing autoconf"
- mkdir -p "${CT_BUILD_DIR}/build-autoconf"
- CT_Pushd "${CT_BUILD_DIR}/build-autoconf"
-
+do_companion_tools_autoconf_for_build() {
+ CT_DoStep EXTRA "Installing autoconf for build"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-autoconf-build"
+ do_autoconf_backend host=${CT_BUILD} prefix="${CT_BUILD_COMPTOOLS_DIR}"
+ CT_Popd
+ CT_EndStep
+}
+
+do_companion_tools_autoconf_for_host() {
+ CT_DoStep EXTRA "Installing autoconf for host"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-autoconf-host"
+ do_autoconf_backend host=${CT_HOST} prefix="${CT_PREFIX_DIR}"
+ CT_Popd
+ CT_EndStep
+}
+
+do_autoconf_backend() {
+ local host
+ local prefix
+
+ for arg in "$@"; do
+ eval "${arg// /\\ }"
+ done
+
# Ensure configure gets run using the CONFIG_SHELL as configure seems to
# have trouble when CONFIG_SHELL is set and /bin/sh isn't bash
# For reference see:
# http://www.gnu.org/software/autoconf/manual/autoconf.html#CONFIG_005fSHELL
-
+ CT_DoLog EXTRA "Configuring autoconf"
CT_DoExecLog CFG ${CONFIG_SHELL} \
"${CT_SRC_DIR}/autoconf-${CT_AUTOCONF_VERSION}/configure" \
- --prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
- CT_DoExecLog ALL ${make}
- CT_DoExecLog ALL ${make} install
- CT_Popd
- CT_EndStep
+ --host="${host}" \
+ --prefix="${prefix}"
+
+ CT_DoLog EXTRA "Building autoconf"
+ CT_DoExecLog ALL make
+
+ CT_DoLog EXTRA "Installing autoconf"
+ CT_DoExecLog ALL make install
}
diff --git a/scripts/build/companion_tools/300-automake.sh b/scripts/build/companion_tools/300-automake.sh
index ff286dd..85afaea 100644
--- a/scripts/build/companion_tools/300-automake.sh
+++ b/scripts/build/companion_tools/300-automake.sh
@@ -1,7 +1,5 @@
# Build script for automake
-CT_AUTOMAKE_VERSION=1.11.1
-
do_companion_tools_automake_get() {
CT_GetFile "automake-${CT_AUTOMAKE_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/automake
@@ -13,16 +11,38 @@ do_companion_tools_automake_extract() {
CT_Patch "automake" "${CT_AUTOMAKE_VERSION}"
}
-do_companion_tools_automake_build() {
- CT_DoStep EXTRA "Installing automake"
- mkdir -p "${CT_BUILD_DIR}/build-automake"
- CT_Pushd "${CT_BUILD_DIR}/build-automake"
-
- CT_DoExecLog CFG \
- "${CT_SRC_DIR}/automake-${CT_AUTOMAKE_VERSION}/configure" \
- --prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
- CT_DoExecLog ALL ${make}
- CT_DoExecLog ALL ${make} install
+do_companion_tools_automake_for_build() {
+ CT_DoStep EXTRA "Installing automake for build"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-automake-build"
+ do_automake_backend host=${CT_BUILD} prefix="${CT_BUILD_COMPTOOLS_DIR}"
+ CT_Popd
+ CT_EndStep
+}
+
+do_companion_tools_automake_for_host() {
+ CT_DoStep EXTRA "Installing automake for host"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-automake-host"
+ do_automake_backend host=${CT_HOST} prefix="${CT_PREFIX_DIR}"
CT_Popd
CT_EndStep
}
+
+do_automake_backend() {
+ local host
+ local prefix
+
+ for arg in "$@"; do
+ eval "${arg// /\\ }"
+ done
+
+ CT_DoLog EXTRA "Configuring automake"
+ CT_DoExecLog CFG "${CT_SRC_DIR}/automake-${CT_AUTOMAKE_VERSION}/configure" \
+ --host="${host}" \
+ --prefix="${prefix}"
+
+ CT_DoLog EXTRA "Building automake"
+ CT_DoExecLog ALL make
+
+ CT_DoLog EXTRA "Installing automake"
+ CT_DoExecLog ALL make install
+}
diff --git a/scripts/build/companion_tools/400-libtool.sh b/scripts/build/companion_tools/400-libtool.sh
index fa5dc59..39aa204 100644
--- a/scripts/build/companion_tools/400-libtool.sh
+++ b/scripts/build/companion_tools/400-libtool.sh
@@ -1,7 +1,5 @@
# Build script for libtool
-CT_LIBTOOL_VERSION=2.4.6
-
do_companion_tools_libtool_get() {
CT_GetFile "libtool-${CT_LIBTOOL_VERSION}" \
{http,ftp,https}://ftp.gnu.org/gnu/libtool
@@ -13,16 +11,38 @@ do_companion_tools_libtool_extract() {
CT_Patch "libtool" "${CT_LIBTOOL_VERSION}"
}
-do_companion_tools_libtool_build() {
- CT_DoStep EXTRA "Installing libtool"
- mkdir -p "${CT_BUILD_DIR}/build-libtool"
- CT_Pushd "${CT_BUILD_DIR}/build-libtool"
-
- CT_DoExecLog CFG \
- "${CT_SRC_DIR}/libtool-${CT_LIBTOOL_VERSION}/configure" \
- --prefix="${CT_BUILDTOOLS_PREFIX_DIR}"
- CT_DoExecLog ALL ${make}
- CT_DoExecLog ALL ${make} install
+do_companion_tools_libtool_for_build() {
+ CT_DoStep EXTRA "Installing libtool for build"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-libtool-build"
+ do_libtool_backend host=${CT_BUILD} prefix="${CT_BUILD_COMPTOOLS_DIR}"
+ CT_Popd
+ CT_EndStep
+}
+
+do_companion_tools_libtool_for_host() {
+ CT_DoStep EXTRA "Installing libtool for host"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-libtool-host"
+ do_libtool_backend host=${CT_HOST} prefix="${CT_PREFIX_DIR}"
CT_Popd
CT_EndStep
}
+
+do_libtool_backend() {
+ local host
+ local prefix
+
+ for arg in "$@"; do
+ eval "${arg// /\\ }"
+ done
+
+ CT_DoLog EXTRA "Configuring libtool"
+ CT_DoExecLog CFG "${CT_SRC_DIR}/libtool-${CT_LIBTOOL_VERSION}/configure" \
+ --host="${host}" \
+ --prefix="${prefix}"
+
+ CT_DoLog EXTRA "Building libtool"
+ CT_DoExecLog ALL make
+
+ CT_DoLog EXTRA "Installing libtool"
+ CT_DoExecLog ALL make install
+}
diff --git a/scripts/build/debug/000-template.sh b/scripts/build/debug/000-template.sh
index d72069b..47d2cae 100644
--- a/scripts/build/debug/000-template.sh
+++ b/scripts/build/debug/000-template.sh
@@ -26,8 +26,8 @@ do_debug_foobar_build() {
# --host=${CT_TARGET} \
# --prefix=/usr \
# --foobar-options
- # CT_DoExecLog ALL ${make}
- # CT_DoExecLog ALL ${make} DESTDIR="${CT_SYSROOT_DIR}" install
+ # CT_DoExecLog ALL make
+ # CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" install
# CT_Popd
:
}
diff --git a/scripts/build/debug/100-dmalloc.sh b/scripts/build/debug/100-dmalloc.sh
index 1cfbdc0..ad0d78d 100644
--- a/scripts/build/debug/100-dmalloc.sh
+++ b/scripts/build/debug/100-dmalloc.sh
@@ -47,11 +47,11 @@ do_debug_dmalloc_build() {
"${extra_config[@]}"
CT_DoLog EXTRA "Building dmalloc"
- CT_DoExecLog ALL ${make}
+ CT_DoExecLog ALL make
CT_DoLog EXTRA "Installing dmalloc"
- CT_DoExecLog ALL ${make} DESTDIR="${CT_SYSROOT_DIR}" installincs installlib
- CT_DoExecLog ALL ${make} DESTDIR="${CT_DEBUGROOT_DIR}" installutil
+ CT_DoExecLog ALL make DESTDIR="${CT_SYSROOT_DIR}" installincs installlib
+ CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" installutil
CT_EndStep
}
diff --git a/scripts/build/debug/200-duma.sh b/scripts/build/debug/200-duma.sh
index 4f6a5c3..0e5291c 100644
--- a/scripts/build/debug/200-duma.sh
+++ b/scripts/build/debug/200-duma.sh
@@ -24,7 +24,7 @@ do_debug_duma_extract() {
do_debug_duma_build() {
CT_DoStep INFO "Installing D.U.M.A."
CT_DoLog EXTRA "Copying sources"
- cp -a "${CT_SRC_DIR}/duma_${CT_DUMA_VERSION}" "${CT_BUILD_DIR}/build-duma"
+ cp -a "${CT_SRC_DIR}/duma_${CT_DUMA_VERSION}/." "${CT_BUILD_DIR}/build-duma"
CT_Pushd "${CT_BUILD_DIR}/build-duma"
DUMA_CPP=
@@ -32,7 +32,7 @@ do_debug_duma_build() {
# The shared library needs some love: some version have libduma.so.0.0,
# while others have libduma.so.0.0.0
- duma_so=$(${make} -n -p 2>&1 |${grep} -E '^libduma.so[^:]*:' |head -n 1 |cut -d : -f 1)
+ duma_so=$(make -n -p 2>&1 |grep -E '^libduma.so[^:]*:' |head -n 1 |cut -d : -f 1)
libs=
[ "${CT_DUMA_A}" = "y" ] && libs="${libs} libduma.a"
@@ -40,21 +40,21 @@ do_debug_duma_build() {
libs="${libs# }"
CT_DoLog EXTRA "Building libraries '${libs}'"
CT_DoExecLog ALL \
- ${make} HOSTCC="${CT_BUILD}-gcc" \
+ make HOSTCC="${CT_BUILD}-gcc" \
CC="${CT_TARGET}-gcc" \
CXX="${CT_TARGET}-gcc" \
RANLIB="${CT_TARGET}-ranlib" \
DUMA_CPP="${DUMA_CPP}" \
${libs}
CT_DoLog EXTRA "Installing libraries '${libs}'"
- CT_DoExecLog ALL ${install} -m 644 ${libs} "${CT_SYSROOT_DIR}/usr/lib"
+ CT_DoExecLog ALL install -m 644 ${libs} "${CT_SYSROOT_DIR}/usr/lib"
if [ "${CT_DUMA_SO}" = "y" ]; then
CT_DoLog EXTRA "Installing shared library link"
ln -vsf ${duma_so} "${CT_SYSROOT_DIR}/usr/lib/libduma.so" 2>&1 |CT_DoLog ALL
CT_DoLog EXTRA "Installing wrapper script"
mkdir -p "${CT_DEBUGROOT_DIR}/usr/bin"
# Install a simpler, smaller, safer wrapper than the one provided by D.U.M.A.
- ${sed} -r -e 's:^LIBDUMA_SO=.*:LIBDUMA_SO=/usr/lib/'"${duma_so}"':;' \
+ sed -r -e 's:^LIBDUMA_SO=.*:LIBDUMA_SO=/usr/lib/'"${duma_so}"':;' \
"${CT_LIB_DIR}/scripts/build/debug/duma.in" \
>"${CT_DEBUGROOT_DIR}/usr/bin/duma"
chmod 755 "${CT_DEBUGROOT_DIR}/usr/bin/duma"
diff --git a/scripts/build/debug/300-gdb.sh b/scripts/build/debug/300-gdb.sh
index d3510d6..ba13591 100644
--- a/scripts/build/debug/300-gdb.sh
+++ b/scripts/build/debug/300-gdb.sh
@@ -12,10 +12,10 @@ do_debug_gdb_get() {
else
# Account for the Linaro versioning
linaro_version="$( echo "${CT_GDB_VERSION}" \
- |${sed} -r -e 's/^linaro-//;' \
+ |sed -r -e 's/^linaro-//;' \
)"
linaro_series="$( echo "${linaro_version}" \
- |${sed} -r -e 's/-.*//;' \
+ |sed -r -e 's/-.*//;' \
)"
if [ x"${linaro_version}" = x"${CT_GDB_VERSION}" ]; then
@@ -24,7 +24,7 @@ do_debug_gdb_get() {
{http,ftp,https}://ftp.gnu.org/pub/gnu/gdb \
ftp://{sourceware.org,gcc.gnu.org}/pub/gdb/releases
else
- YYMM=`echo ${CT_GDB_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
+ YYMM=`echo ${CT_GDB_VERSION} |cut -d- -f3 |sed -e 's,^..,,'`
CT_GetFile "gdb-${CT_GDB_VERSION}" \
"http://launchpad.net/gdb-linaro/${linaro_series}/${linaro_version}/+download" \
https://releases.linaro.org/${YYMM}/components/toolchain/gdb-linaro \
@@ -135,15 +135,15 @@ do_debug_gdb_build() {
"${CT_GDB_CROSS_EXTRA_CONFIG_ARRAY[@]}"
CT_DoLog EXTRA "Building cross-gdb"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing cross-gdb"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
if [ "${CT_BUILD_MANUALS}" = "y" ]; then
CT_DoLog EXTRA "Building and installing the cross-GDB manuals"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} pdf html
- CT_DoExecLog ALL ${make} install-{pdf,html}-gdb
+ CT_DoExecLog ALL make ${JOBSFLAGS} pdf html
+ CT_DoExecLog ALL make install-{pdf,html}-gdb
fi
if [ "${CT_GDB_INSTALL_GDBINIT}" = "y" ]; then
@@ -152,11 +152,11 @@ do_debug_gdb_build() {
if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then
gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" )
else
- gcc_version=$(${sed} -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \
+ gcc_version=$(sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \
"${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \
)
fi
- ${sed} -r \
+ sed -r \
-e "s:@@PREFIX@@:${CT_PREFIX_DIR}:;" \
-e "s:@@VERSION@@:${gcc_version}:;" \
"${CT_LIB_DIR}/scripts/build/debug/gdbinit.in" \
@@ -249,10 +249,10 @@ do_debug_gdb_build() {
"${native_extra_config[@]}"
CT_DoLog EXTRA "Building native gdb"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
+ CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
CT_DoLog EXTRA "Installing native gdb"
- CT_DoExecLog ALL ${make} DESTDIR="${CT_DEBUGROOT_DIR}" install
+ CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
# Building a native gdb also builds a gdbserver
find "${CT_DEBUGROOT_DIR}" -type f -name gdbserver -exec rm -fv {} \; 2>&1 |CT_DoLog ALL
@@ -321,10 +321,10 @@ do_debug_gdb_build() {
"${gdbserver_extra_config[@]}"
CT_DoLog EXTRA "Building gdbserver"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
+ CT_DoExecLog ALL make ${JOBSFLAGS} CC=${CT_TARGET}-${CT_CC}
CT_DoLog EXTRA "Installing gdbserver"
- CT_DoExecLog ALL ${make} DESTDIR="${CT_DEBUGROOT_DIR}" install
+ CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
CT_EndStep
fi
diff --git a/scripts/build/debug/400-ltrace.sh b/scripts/build/debug/400-ltrace.sh
index f8d6144..fdf1e40 100644
--- a/scripts/build/debug/400-ltrace.sh
+++ b/scripts/build/debug/400-ltrace.sh
@@ -22,7 +22,7 @@ do_debug_ltrace_build() {
CT_DoStep INFO "Installing ltrace"
CT_DoLog EXTRA "Copying sources to build dir"
- CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/ltrace-${CT_LTRACE_VERSION}" \
+ CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/ltrace-${CT_LTRACE_VERSION}/." \
"${CT_BUILD_DIR}/build-ltrace"
CT_Pushd "${CT_BUILD_DIR}/build-ltrace"
@@ -52,10 +52,10 @@ do_debug_ltrace_build() {
fi
CT_DoLog EXTRA "Building ltrace"
- CT_DoExecLog ALL ${make}
+ CT_DoExecLog ALL make
CT_DoLog EXTRA "Installing ltrace"
- CT_DoExecLog ALL ${make} DESTDIR="${CT_DEBUGROOT_DIR}" install
+ CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
CT_Popd
CT_EndStep
diff --git a/scripts/build/debug/500-strace.sh b/scripts/build/debug/500-strace.sh
index 79406a7..0d33ca0 100644
--- a/scripts/build/debug/500-strace.sh
+++ b/scripts/build/debug/500-strace.sh
@@ -28,10 +28,10 @@ do_debug_strace_build() {
--prefix=/usr
CT_DoLog EXTRA "Building strace"
- CT_DoExecLog ALL ${make}
+ CT_DoExecLog ALL make
CT_DoLog EXTRA "Installing strace"
- CT_DoExecLog ALL ${make} DESTDIR="${CT_DEBUGROOT_DIR}" install
+ CT_DoExecLog ALL make DESTDIR="${CT_DEBUGROOT_DIR}" install
CT_Popd
CT_EndStep
diff --git a/scripts/build/internals.sh b/scripts/build/internals.sh
index 08a5be9..18ada66 100644
--- a/scripts/build/internals.sh
+++ b/scripts/build/internals.sh
@@ -8,6 +8,7 @@ do_finish() {
local _type
local strip_args
local gcc_version
+ local exe_suffix
CT_DoStep INFO "Cleaning-up the toolchain's directory"
@@ -20,13 +21,21 @@ do_finish() {
strip_args="--strip-all -v"
;;
esac
+ case "$CT_TARGET" in
+ *mingw*)
+ exe_suffix=".exe"
+ ;;
+ *)
+ exe_suffix=""
+ ;;
+ esac
CT_DoLog INFO "Stripping all toolchain executables"
CT_Pushd "${CT_PREFIX_DIR}"
# Strip gdbserver
if [ "${CT_GDB_GDBSERVER}" = "y" ]; then
CT_DoExecLog ALL "${CT_TARGET}-strip" ${strip_args} \
- "${CT_TARGET}/debug-root/usr/bin/gdbserver"
+ "${CT_TARGET}/debug-root/usr/bin/gdbserver${exe_suffix}"
fi
if [ "${CT_CC_gcc}" = "y" ]; then
# We can not use the version in CT_CC_GCC_VERSION because
@@ -38,7 +47,7 @@ do_finish() {
if [ -f "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" ]; then
gcc_version=$( cat "${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/BASE-VER" )
else
- gcc_version=$(${sed} -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \
+ gcc_version=$(sed -r -e '/version_string/!d; s/^.+= "([^"]+)".*$/\1/;' \
"${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/version.c" \
)
fi
@@ -62,13 +71,13 @@ do_finish() {
if [ "${CT_BARE_METAL}" != "y" ]; then
CT_DoLog EXTRA "Installing the populate helper"
- ${sed} -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
- -e 's|@@CT_install@@|'"${install}"'|g;' \
- -e 's|@@CT_awk@@|'"${awk}"'|g;' \
+ sed -r -e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
+ -e 's|@@CT_install@@|'"install"'|g;' \
+ -e 's|@@CT_awk@@|'"awk"'|g;' \
-e 's|@@CT_bash@@|'"${bash}"'|g;' \
- -e 's|@@CT_grep@@|'"${grep}"'|g;' \
- -e 's|@@CT_make@@|'"${make}"'|g;' \
- -e 's|@@CT_sed@@|'"${sed}"'|g;' \
+ -e 's|@@CT_grep@@|'"grep"'|g;' \
+ -e 's|@@CT_make@@|'"make"'|g;' \
+ -e 's|@@CT_sed@@|'"sed"'|g;' \
"${CT_LIB_DIR}/scripts/populate.in" \
>"${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-populate"
@@ -76,14 +85,14 @@ do_finish() {
if [ "${CT_LIBC_XLDD}" = "y" ]; then
CT_DoLog EXTRA "Installing a cross-ldd helper"
- ${sed} -r -e 's|@@CT_VERSION@@|'"${CT_VERSION}"'|g;' \
+ sed -r -e 's|@@CT_VERSION@@|'"${CT_VERSION}"'|g;' \
-e 's|@@CT_TARGET@@|'"${CT_TARGET}"'|g;' \
-e 's|@@CT_BITS@@|'"${CT_ARCH_BITNESS}"'|g;' \
- -e 's|@@CT_install@@|'"${install}"'|g;' \
+ -e 's|@@CT_install@@|'"install"'|g;' \
-e 's|@@CT_bash@@|'"${bash}"'|g;' \
- -e 's|@@CT_grep@@|'"${grep}"'|g;' \
- -e 's|@@CT_make@@|'"${make}"'|g;' \
- -e 's|@@CT_sed@@|'"${sed}"'|g;' \
+ -e 's|@@CT_grep@@|'"grep"'|g;' \
+ -e 's|@@CT_make@@|'"make"'|g;' \
+ -e 's|@@CT_sed@@|'"sed"'|g;' \
"${CT_LIB_DIR}/scripts/xldd.in" \
>"${CT_PREFIX_DIR}/bin/${CT_TARGET}-ldd"
CT_DoExecLog ALL chmod 755 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-ldd"
@@ -94,11 +103,11 @@ do_finish() {
CT_Pushd "${CT_PREFIX_DIR}/bin"
for t in "${CT_TARGET}-"*; do
if [ -n "${CT_TARGET_ALIAS}" ]; then
- _t=$(echo "$t" |${sed} -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
+ _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
CT_DoExecLog ALL ln -sfv "${t}" "${_t}"
fi
if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
- _t=$(echo "$t" |${sed} -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
+ _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
if [ "${_t}" = "${t}" ]; then
CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'"
else
diff --git a/scripts/build/kernel/linux.sh b/scripts/build/kernel/linux.sh
index 09a928d..064631b 100644
--- a/scripts/build/kernel/linux.sh
+++ b/scripts/build/kernel/linux.sh
@@ -93,7 +93,7 @@ do_kernel_headers() {
CT_DoLog EXTRA "Installing kernel headers"
CT_DoExecLog ALL \
- ${make} -C "${kernel_path}" \
+ make -C "${kernel_path}" \
CROSS_COMPILE="${CT_TARGET}-" \
O="${CT_BUILD_DIR}/build-kernel-headers" \
ARCH=${kernel_arch} \
@@ -104,7 +104,7 @@ do_kernel_headers() {
if [ "${CT_KERNEL_LINUX_INSTALL_CHECK}" = "y" ]; then
CT_DoLog EXTRA "Checking installed headers"
CT_DoExecLog ALL \
- ${make} -C "${kernel_path}" \
+ make -C "${kernel_path}" \
CROSS_COMPILE="${CT_TARGET}-" \
O="${CT_BUILD_DIR}/build-kernel-headers" \
ARCH=${kernel_arch} \
diff --git a/scripts/build/libc/avr-libc.sh b/scripts/build/libc/avr-libc.sh
index 3dc91a4..431e876 100644
--- a/scripts/build/libc/avr-libc.sh
+++ b/scripts/build/libc/avr-libc.sh
@@ -41,17 +41,17 @@ do_libc_post_cc() {
CT_DoStep INFO "Installing C library"
CT_DoLog EXTRA "Copying sources to build directory"
- CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/avr-libc-${CT_LIBC_VERSION}" \
+ CT_DoExecLog ALL cp -av "${CT_SRC_DIR}/avr-libc-${CT_LIBC_VERSION}/." \
"${CT_BUILD_DIR}/build-libc-post-cc"
cd "${CT_BUILD_DIR}/build-libc-post-cc"
do_libc_configure
CT_DoLog EXTRA "Building C library"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing C library"
- CT_DoExecLog ALL ${make} install
+ CT_DoExecLog ALL make install
CT_EndStep
}
diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh
index 8027b8f..2db69cb 100644
--- a/scripts/build/libc/glibc.sh
+++ b/scripts/build/libc/glibc.sh
@@ -11,9 +11,9 @@ do_libc_get() {
CT_GetCustom "glibc" "${CT_LIBC_GLIBC_CUSTOM_VERSION}" \
"${CT_LIBC_GLIBC_CUSTOM_LOCATION}"
else
- if echo ${CT_LIBC_VERSION} |${grep} -q linaro; then
+ if echo ${CT_LIBC_VERSION} |grep -q linaro; then
# Linaro glibc releases come from regular downloads...
- YYMM=`echo ${CT_LIBC_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
+ YYMM=`echo ${CT_LIBC_VERSION} |cut -d- -f3 |sed -e 's,^..,,'`
CT_GetFile "glibc-${CT_LIBC_VERSION}" \
https://releases.linaro.org/${YYMM}/components/toolchain/glibc-linaro \
http://cbuild.validation.linaro.org/snapshots
@@ -30,7 +30,8 @@ do_libc_get() {
do_libc_extract() {
CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}"
CT_Pushd "${CT_SRC_DIR}/${CT_LIBC}-${CT_LIBC_VERSION}"
- # Attempt CT_PATCH only if NOT custom
+ # Custom glibc won't get patched, because CT_GetCustom
+ # marks custom glibc as patched.
CT_Patch nochdir "${CT_LIBC}" "${CT_LIBC_VERSION}"
# The configure files may be older than the configure.in files
@@ -300,7 +301,7 @@ do_libc_backend_once() {
# use the 'install-headers' makefile target to install the
# headers
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} \
+ CT_DoExecLog ALL make ${JOBSFLAGS} \
install_root=${multi_root} \
install-bootstrap-headers=yes \
"${extra_make_args[@]}" \
@@ -353,7 +354,7 @@ do_libc_backend_once() {
# there are a few object files needed to link shared libraries,
# which we build and install by hand
CT_DoExecLog ALL mkdir -p "${startfiles_dir}"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} \
+ CT_DoExecLog ALL make ${JOBSFLAGS} \
"${extra_make_args[@]}" \
csu/subdir_lib
CT_DoExecLog ALL cp csu/crt1.o csu/crti.o csu/crtn.o \
@@ -374,12 +375,12 @@ do_libc_backend_once() {
if [ "${libc_mode}" = "final" ]; then
CT_DoLog EXTRA "Building C library"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} \
+ CT_DoExecLog ALL make ${JOBSFLAGS} \
"${extra_make_args[@]}" \
all
CT_DoLog EXTRA "Installing C library"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} \
+ CT_DoExecLog ALL make ${JOBSFLAGS} \
"${extra_make_args[@]}" \
install_root="${multi_root}" \
install
@@ -391,7 +392,7 @@ do_libc_backend_once() {
CT_DoLog EXTRA "Building and installing the C library manual"
# Omit JOBSFLAGS as GLIBC has problems building the
# manuals in parallel
- CT_DoExecLog ALL ${make} pdf html
+ CT_DoExecLog ALL make pdf html
CT_DoExecLog ALL mkdir -p ${CT_PREFIX_DIR}/share/doc
CT_DoExecLog ALL cp -av ${src_dir}/manual/*.pdf \
${src_dir}/manual/libc \
@@ -410,7 +411,7 @@ do_libc_backend_once() {
do_libc_add_ons_list() {
local sep="$1"
local addons_list="$( echo "${CT_LIBC_ADDONS_LIST}" \
- |${sed} -r -e "s/[[:space:],]/${sep}/g;" \
+ |sed -r -e "s/[[:space:],]/${sep}/g;" \
)"
if [ "${CT_LIBC_GLIBC_2_20_or_later}" != "y" ]; then
case "${CT_THREADS}" in
@@ -420,7 +421,7 @@ do_libc_add_ons_list() {
fi
[ "${CT_LIBC_GLIBC_USE_PORTS}" = "y" ] && addons_list="${addons_list}${sep}ports"
# Remove duplicate, leading and trailing separators
- echo "${addons_list}" |${sed} -r -e "s/${sep}+/${sep}/g; s/^${sep}//; s/${sep}\$//;"
+ echo "${addons_list}" |sed -r -e "s/${sep}+/${sep}/g; s/^${sep}//; s/${sep}\$//;"
}
# Compute up the minimum supported Linux kernel version
@@ -439,7 +440,7 @@ do_libc_min_kernel_config() {
if [ ! -f "${version_code_file}" -o ! -r "${version_code_file}" ]; then
CT_Abort "Linux version is unavailable in installed headers files"
fi
- version_code="$(${grep} -E LINUX_VERSION_CODE "${version_code_file}" \
+ version_code="$(grep -E LINUX_VERSION_CODE "${version_code_file}" \
|cut -d' ' -f 3 \
)"
version=$(((version_code>>16)&0xFF))
@@ -449,7 +450,7 @@ do_libc_min_kernel_config() {
elif [ "${CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN}" = "y" ]; then
# Trim the fourth part of the linux version, keeping only the first three numbers
min_kernel_config="$( echo "${CT_LIBC_GLIBC_MIN_KERNEL_VERSION}" \
- |${sed} -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;' \
+ |sed -r -e 's/^([^.]+\.[^.]+\.[^.]+)(|\.[^.]+)$/\1/;' \
)"
fi
echo "--enable-kernel=${min_kernel_config}"
@@ -514,7 +515,7 @@ do_libc_locales() {
"${extra_config[@]}"
CT_DoLog EXTRA "Building C library localedef"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
# The target's endianness and uint32_t alignment should be passed as options
# to localedef, but glibc's localedef does not support these options, which
@@ -522,7 +523,7 @@ do_libc_locales() {
# only if it has the same endianness and uint32_t alignment as the host's.
CT_DoLog EXTRA "Installing C library locales"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS} \
+ CT_DoExecLog ALL make ${JOBSFLAGS} \
install_root="${CT_SYSROOT_DIR}" \
localedata/install-locales
}
diff --git a/scripts/build/libc/mingw.sh b/scripts/build/libc/mingw.sh
index 44ca008..705f8c9 100644
--- a/scripts/build/libc/mingw.sh
+++ b/scripts/build/libc/mingw.sh
@@ -55,10 +55,10 @@ do_libc_start_files() {
"${sdk_opts[@]}"
CT_DoLog EXTRA "Compile Headers"
- CT_DoExecLog ALL ${make}
+ CT_DoExecLog ALL make
CT_DoLog EXTRA "Installing Headers"
- CT_DoExecLog ALL ${make} install DESTDIR=${CT_SYSROOT_DIR}
+ CT_DoExecLog ALL make install DESTDIR=${CT_SYSROOT_DIR}
CT_Popd
@@ -104,14 +104,41 @@ do_libc() {
# parallel build. See https://github.com/crosstool-ng/crosstool-ng/issues/246
# Do not pass ${JOBSFLAGS} - build serially.
CT_DoLog EXTRA "Building mingw-w64-crt"
- CT_DoExecLog ALL ${make}
+ CT_DoExecLog ALL make
CT_DoLog EXTRA "Installing mingw-w64-crt"
- CT_DoExecLog ALL ${make} install DESTDIR=${CT_SYSROOT_DIR}
+ CT_DoExecLog ALL make install DESTDIR=${CT_SYSROOT_DIR}
CT_EndStep
+
+ if [ "${CT_THREADS}" = "posix" ]; then
+ do_pthreads
+ fi
}
do_libc_post_cc() {
:
}
+
+do_pthreads() {
+ CT_DoStep INFO "Building mingw-w64-winpthreads files"
+
+ CT_DoLog EXTRA "Configuring mingw-w64-winpthreads"
+
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-mingw-w64-winpthreads"
+
+ CT_DoExecLog CFG \
+ "${CT_SRC_DIR}/mingw-w64-${CT_WINAPI_VERSION_DOWNLOADED}/mingw-w64-libraries/winpthreads/configure" \
+ --with-sysroot=${CT_SYSROOT_DIR} \
+ --prefix=${MINGW_INSTALL_PREFIX} \
+ --build=${CT_BUILD} \
+ --host=${CT_TARGET} \
+
+ CT_DoLog EXTRA "Building mingw-w64-winpthreads"
+ CT_DoExecLog ALL make ${JOBSFLAGS}
+
+ CT_DoLog EXTRA "Installing mingw-w64-winpthreads"
+ CT_DoExecLog ALL make install DESTDIR=${CT_SYSROOT_DIR}
+
+ CT_EndStep
+}
diff --git a/scripts/build/libc/musl.sh b/scripts/build/libc/musl.sh
index 2a0c04f..acd14c2 100644
--- a/scripts/build/libc/musl.sh
+++ b/scripts/build/libc/musl.sh
@@ -120,9 +120,9 @@ do_libc_backend_once() {
if [ "${libc_mode}" = "startfiles" ]; then
CT_DoLog EXTRA "Installing C library headers"
- CT_DoExecLog ALL ${make} DESTDIR="${multi_root}" install-headers
+ CT_DoExecLog ALL make DESTDIR="${multi_root}" install-headers
CT_DoLog EXTRA "Building C library start files"
- CT_DoExecLog ALL ${make} DESTDIR="${multi_root}" \
+ CT_DoExecLog ALL make DESTDIR="${multi_root}" \
obj/crt/crt1.o obj/crt/crti.o obj/crt/crtn.o
CT_DoLog EXTRA "Installing C library start files"
CT_DoExecLog ALL cp -av obj/crt/crt*.o "${multi_root}${multilib_dir}"
@@ -137,10 +137,10 @@ do_libc_backend_once() {
"${multi_root}${multilib_dir}/libc.so"
CT_DoLog EXTRA "Building C library"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing C library"
- CT_DoExecLog ALL ${make} DESTDIR="${multi_root}" install
+ CT_DoExecLog ALL make DESTDIR="${multi_root}" install
# Convert /lib/ld-* symlinks to relative paths so that they are valid
# both on the host and on the target.
diff --git a/scripts/build/libc/newlib.sh b/scripts/build/libc/newlib.sh
index d9bda06..6ae579b 100644
--- a/scripts/build/libc/newlib.sh
+++ b/scripts/build/libc/newlib.sh
@@ -17,8 +17,8 @@ do_libc_get() {
CT_GetCustom "newlib" "${CT_LIBC_NEWLIB_CUSTOM_VERSION}" \
"${CT_LIBC_NEWLIB_CUSTOM_LOCATION}"
else # ! custom location
- if echo ${CT_LIBC_VERSION} |${grep} -q linaro; then
- YYMM=`echo ${CT_LIBC_VERSION} |cut -d- -f3 |${sed} -e 's,^..,,'`
+ if echo ${CT_LIBC_VERSION} |grep -q linaro; then
+ YYMM=`echo ${CT_LIBC_VERSION} |cut -d- -f3 |sed -e 's,^..,,'`
CT_GetFile "newlib-${CT_LIBC_VERSION}" ${libc_src} \
https://releases.linaro.org/${YYMM}/components/toolchain/newlib-linaro \
http://cbuild.validation.linaro.org/snapshots
@@ -121,16 +121,16 @@ do_libc() {
"${CT_LIBC_NEWLIB_EXTRA_CONFIG_ARRAY[@]}"
CT_DoLog EXTRA "Building C library"
- CT_DoExecLog ALL ${make} ${JOBSFLAGS}
+ CT_DoExecLog ALL make ${JOBSFLAGS}
CT_DoLog EXTRA "Installing C library"
- CT_DoExecLog ALL ${make} install install_root="${CT_SYSROOT_DIR}"
+ CT_DoExecLog ALL make install install_root="${CT_SYSROOT_DIR}"
if [ "${CT_BUILD_MANUALS}" = "y" ]; then
local -a doc_dir="${CT_BUILD_DIR}/build-libc/${CT_TARGET}"
CT_DoLog EXTRA "Building and installing the C library manual"
- CT_DoExecLog ALL ${make} pdf html
+ CT_DoExecLog ALL make pdf html
# NEWLIB install-{pdf.html} fail for some versions
CT_DoExecLog ALL mkdir -p "${CT_PREFIX_DIR}/share/doc/newlib"
diff --git a/scripts/build/libc/uClibc.sh b/scripts/build/libc/uClibc.sh
index 47e135b..96d4b51 100644
--- a/scripts/build/libc/uClibc.sh
+++ b/scripts/build/libc/uClibc.sh
@@ -104,7 +104,7 @@ do_libc_backend_once() {
# Simply copy files until uClibc has the ability to build out-of-tree
CT_DoLog EXTRA "Copying sources to build dir"
- CT_DoExecLog ALL cp -aT "${CT_SRC_DIR}/${uclibc_name}-${CT_LIBC_VERSION}" .
+ CT_DoExecLog ALL cp -aT "${CT_SRC_DIR}/${uclibc_name}-${CT_LIBC_VERSION}/." .
multilib_dir="lib/${multi_os_dir}"
startfiles_dir="${multi_root}/usr/${multilib_dir}"
@@ -138,7 +138,7 @@ do_libc_backend_once() {
fi
manage_uClibc_config "${CT_LIBC_UCLIBC_CONFIG_FILE}" .config "${multi_flags}"
- CT_DoYes | CT_DoExecLog ALL ${make} "${make_args[@]}" oldconfig
+ CT_DoYes | CT_DoExecLog ALL make "${make_args[@]}" oldconfig
# Now filter the multilib flags. manage_uClibc_config did the opposite of
# what Rules.mak in uClibc would do: by the multilib's CFLAGS, it determined
@@ -149,7 +149,7 @@ do_libc_backend_once() {
extra_cflags="-pipe"
{ echo "include Rules.mak"; echo "show-cpu-flags:"; printf '\t@echo $(CPU_CFLAGS)\n'; } \
> .show-cpu-cflags.mk
- cfg_cflags=$( ${make} "${make_args[@]}" \
+ cfg_cflags=$( make "${make_args[@]}" \
--no-print-directory -f .show-cpu-cflags.mk show-cpu-flags )
CT_DoExecLog ALL rm -f .show-cpu-cflags.mk
CT_DoLog DEBUG "CPU_CFLAGS detected by uClibc: ${cfg_cflags[@]}"
@@ -178,19 +178,19 @@ do_libc_backend_once() {
if [ "${libc_mode}" = "startfiles" ]; then
CT_DoLog EXTRA "Building headers"
- CT_DoExecLog ALL ${make} "${make_args[@]}" headers
+ CT_DoExecLog ALL make "${make_args[@]}" headers
# Ensure the directory for installing multilib-specific binaries exists.
CT_DoExecLog ALL mkdir -p "${startfiles_dir}"
CT_DoLog EXTRA "Installing headers"
- CT_DoExecLog ALL ${make} "${make_args[@]}" install_headers
+ CT_DoExecLog ALL make "${make_args[@]}" install_headers
# The check might look bogus, but it is the same condition as is used
# by GCC build script to enable/disable shared library support.
if [ "${CT_THREADS}" = "nptl" ]; then
CT_DoLog EXTRA "Building start files"
- CT_DoExecLog ALL ${make} ${jflag} "${make_args[@]}" \
+ CT_DoExecLog ALL make ${jflag} "${make_args[@]}" \
lib/crt1.o lib/crti.o lib/crtn.o
# From: http://git.openembedded.org/cgit.cgi/openembedded/commit/?id=ad5668a7ac7e0436db92e55caaf3fdf782b6ba3b
@@ -201,12 +201,12 @@ do_libc_backend_once() {
-shared ${multi_flags} -x c /dev/null -o libdummy.so
CT_DoLog EXTRA "Installing start files"
- CT_DoExecLog ALL ${install} -m 0644 lib/crt1.o lib/crti.o lib/crtn.o \
+ CT_DoExecLog ALL install -m 0644 lib/crt1.o lib/crti.o lib/crtn.o \
"${startfiles_dir}"
CT_DoLog EXTRA "Installing dummy shared libs"
- CT_DoExecLog ALL ${install} -m 0755 libdummy.so "${startfiles_dir}/libc.so"
- CT_DoExecLog ALL ${install} -m 0755 libdummy.so "${startfiles_dir}/libm.so"
+ CT_DoExecLog ALL install -m 0755 libdummy.so "${startfiles_dir}/libc.so"
+ CT_DoExecLog ALL install -m 0755 libdummy.so "${startfiles_dir}/libm.so"
fi # CT_THREADS == nptl
fi # libc_mode == startfiles
@@ -219,8 +219,8 @@ do_libc_backend_once() {
"${startfiles_dir}/libm.so"
CT_DoLog EXTRA "Building C library"
- CT_DoExecLog ALL ${make} "${make_args[@]}" pregen
- CT_DoExecLog ALL ${make} ${jflag} "${make_args[@]}" all
+ CT_DoExecLog ALL make "${make_args[@]}" pregen
+ CT_DoExecLog ALL make ${jflag} "${make_args[@]}" all
# YEM-FIXME:
# - we want to install 'runtime' files, eg. lib*.{a,so*}, crti.o and
@@ -231,7 +231,7 @@ do_libc_backend_once() {
# - "make install" calls install_runtime and install_dev
# - so we're left with re-installing the headers... Sigh...
CT_DoLog EXTRA "Installing C library"
- CT_DoExecLog ALL ${make} "${make_args[@]}" install install_utils
+ CT_DoExecLog ALL make "${make_args[@]}" install install_utils
fi # libc_mode == final
# Now, if installing headers into a subdirectory, put everything in its place.
@@ -377,6 +377,11 @@ manage_uClibc_config() {
case "${CT_THREADS}:${CT_LIBC_UCLIBC_LNXTHRD}" in
none:)
;;
+ linuxthreads:)
+ # Newer version of uClibc-ng, no old/new dichotomy
+ CT_KconfigEnableOption "UCLIBC_HAS_THREADS" "${dst}"
+ CT_KconfigEnableOption "UCLIBC_HAS_LINUXTHREADS" "${dst}"
+ ;;
linuxthreads:old)
CT_KconfigEnableOption "UCLIBC_HAS_THREADS" "${dst}"
CT_KconfigEnableOption "LINUXTHREADS_OLD" "${dst}"
diff --git a/scripts/build/test_suite/gcc.sh b/scripts/build/test_suite/gcc.sh
index 30ffd34..c829a43 100644
--- a/scripts/build/test_suite/gcc.sh
+++ b/scripts/build/test_suite/gcc.sh
@@ -21,7 +21,7 @@ do_test_suite_gcc_build() {
"${CT_SRC_DIR}/gcc-${CT_CC_GCC_VERSION}/gcc/testsuite" \
"${CT_TEST_SUITE_DIR}/gcc"
- CT_DoExecLog ALL ${sed} -i -r -e "s/@@DG_TARGET@@/${CT_TARGET}/g;" \
+ CT_DoExecLog ALL sed -i -r -e "s/@@DG_TARGET@@/${CT_TARGET}/g;" \
"${CT_TEST_SUITE_DIR}/gcc/Makefile"
CT_EndStep