diff options
Diffstat (limited to 'scripts/build')
35 files changed, 510 insertions, 235 deletions
diff --git a/scripts/build/arch.sh b/scripts/build/arch.sh index 5c5edc9f..3d3611b1 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 a3010c69..bf94ddfa 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 65a2dcce..0e285b61 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 db147287..b0b713db 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 b727f2b9..f0df3d1b 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 0d024d76..bcbe90f2 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 a93d1aad..823dbd50 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 23765701..5504ac25 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 f753a272..f68e18ed 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 b373b547..7d015634 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 251d590d..3a6deb53 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 a7403395..6366049d 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 0c9e5cf6..ffe60c23 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 7a8755e5..19d3ca8b 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 b703c415..415f3a2b 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 3d6da7c3..d8f6b665 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 35721d52..96cde39d 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 def6ddc7..95b7115f 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 ff286dd5..85afaea0 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 fa5dc599..39aa204e 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 d72069bc..47d2caea 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 1cfbdc0d..ad0d78dd 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 4f6a5c3b..0e5291c1 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 d3510d63..ba135911 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 f8d61441..fdf1e40d 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 79406a75..0d33ca09 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 08a5be91..18ada66a 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 09a928df..064631b8 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 3dc91a42..431e8768 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 8027b8f8..2db69cbe 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 44ca008e..705f8c95 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 2a0c04fd..acd14c2c 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 d9bda06f..6ae579ba 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 47e135b9..96d4b517 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 30ffd34a..c829a438 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 |