diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/build/arch/bpf.sh | 7 | ||||
-rw-r--r-- | scripts/build/cc/gcc.sh | 29 | ||||
-rw-r--r-- | scripts/build/companion_libs/050-zlib.sh | 4 | ||||
-rw-r--r-- | scripts/build/companion_libs/100-gmp.sh | 6 | ||||
-rw-r--r-- | scripts/build/companion_libs/110-mpfr.sh | 14 | ||||
-rw-r--r-- | scripts/build/companion_libs/121-isl.sh | 4 | ||||
-rw-r--r-- | scripts/build/companion_libs/130-cloog.sh | 4 | ||||
-rw-r--r-- | scripts/build/companion_libs/140-mpc.sh | 12 | ||||
-rwxr-xr-x | scripts/config.guess | 10 | ||||
-rwxr-xr-x | scripts/config.sub | 29 | ||||
-rw-r--r-- | scripts/crosstool-NG.sh | 2 | ||||
-rw-r--r-- | scripts/functions | 5 |
12 files changed, 104 insertions, 22 deletions
diff --git a/scripts/build/arch/bpf.sh b/scripts/build/arch/bpf.sh new file mode 100644 index 00000000..de427283 --- /dev/null +++ b/scripts/build/arch/bpf.sh @@ -0,0 +1,7 @@ +# Compute BPF-specific values + +CT_DoArchTupleValues() { + CT_TARGET_ARCH=bpf + CT_TARGET_VENDOR=unknown + CT_TARGET_SYS=none +} diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh index d75ad986..18558533 100644 --- a/scripts/build/cc/gcc.sh +++ b/scripts/build/cc/gcc.sh @@ -45,6 +45,7 @@ cc_gcc_lang_list() { [ "${CT_CC_LANG_ADA}" = "y" ] && lang_list+=",ada" [ "${CT_CC_LANG_D}" = "y" ] && lang_list+=",d" [ "${CT_CC_LANG_JAVA}" = "y" ] && lang_list+=",java" + [ "${CT_CC_LANG_JIT}" = "y" ] && lang_list+=",jit" [ "${CT_CC_LANG_OBJC}" = "y" ] && lang_list+=",objc" [ "${CT_CC_LANG_OBJCXX}" = "y" ] && lang_list+=",obj-c++" [ "${CT_CC_LANG_GOLANG}" = "y" ] && lang_list+=",go" @@ -288,14 +289,13 @@ do_gcc_core_backend() { ;; libstdcxx) CT_DoLog EXTRA "Configuring libstdc++ for ${libstdcxx_name}" - if [ "${header_dir}" = "" ]; then + if [ -z "${header_dir}" ]; then header_dir="${CT_PREFIX_DIR}/${libstdcxx_name}/include" fi - if [ "${exec_prefix}" = "" ]; then + if [ -z "${exec_prefix}" ]; then exec_prefix="${CT_PREFIX_DIR}/${libstdcxx_name}" fi extra_config+=( "${CT_CC_SYSROOT_ARG[@]}" ) - extra_config+=( "--with-headers=${header_dir}" ) extra_user_config=( "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" ) log_txt="libstdc++ ${libstdcxx_name} library" # to inhibit the libiberty and libgcc tricks later on @@ -306,7 +306,7 @@ do_gcc_core_backend() { ;; esac - if [ "${exec_prefix}" = "" ]; then + if [ -z "${exec_prefix}" ]; then exec_prefix="${prefix}" fi @@ -344,6 +344,10 @@ do_gcc_core_backend() { extra_config+=("--enable-newlib-nano-formatted-io") fi + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + extra_config+=("--enable-host-shared") + fi + if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then extra_config+=("--enable-__cxa_atexit") else @@ -554,6 +558,13 @@ do_gcc_core_backend() { fi fi + # Add an extra system include dir if we have one. This is especially useful + # when building libstdc++ with a libc other than the system libc (e.g. + # picolibc) + if [ -n "${header_dir}" ]; then + cflags_for_target="${cflags_for_target} -idirafter ${header_dir}" + fi + # For non-sysrooted toolchain, GCC doesn't search except at the installation # prefix; in core stage we use a temporary installation prefix - but # we may have installed something into the final prefix. This is less than ideal: @@ -911,7 +922,6 @@ do_gcc_backend() { local extra_cxxflags_for_target local ldflags local build_manuals - local exec_prefix local header_dir local libstdcxx_name local -a host_libstdcxx_flags @@ -926,7 +936,7 @@ do_gcc_backend() { eval "${arg// /\\ }" done - if [ "${exec_prefix}" = "" ]; then + if [ -z "${exec_prefix}" ]; then exec_prefix="${prefix}" fi @@ -1201,6 +1211,13 @@ do_gcc_backend() { fi fi + # Add an extra system include dir if we have one. This is especially useful + # when building libstdc++ with a libc other than the system libc (e.g. + # picolibc) + if [ -n "${header_dir}" ]; then + cflags_for_target="${cflags_for_target} -idirafter ${header_dir}" + fi + # Assume '-O2' by default for building target libraries. cflags_for_target="-g -O2 ${cflags_for_target}" diff --git a/scripts/build/companion_libs/050-zlib.sh b/scripts/build/companion_libs/050-zlib.sh index 8c6a0f6f..07c95496 100644 --- a/scripts/build/companion_libs/050-zlib.sh +++ b/scripts/build/companion_libs/050-zlib.sh @@ -80,6 +80,10 @@ do_zlib_backend() { eval "${arg// /\\ }" done + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + cflags="${cflags} -fPIC" + fi + case "${host}" in *-mingw32) # zlib treats mingw host differently and requires using a different diff --git a/scripts/build/companion_libs/100-gmp.sh b/scripts/build/companion_libs/100-gmp.sh index 8afa5aec..28deff97 100644 --- a/scripts/build/companion_libs/100-gmp.sh +++ b/scripts/build/companion_libs/100-gmp.sh @@ -109,7 +109,7 @@ do_gmp_backend() { CT_DoLog EXTRA "Configuring GMP" - # To avoind “illegal text-relocation” linking error against + # To avoid “illegal text-relocation” linking error against # the static library, see: # https://github.com/Homebrew/homebrew-core/pull/25470 case "${host}" in @@ -118,6 +118,10 @@ do_gmp_backend() { ;; esac + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + extra_config+=("--with-pic") + fi + # GMP's configure script doesn't respect the host parameter # when not cross-compiling, ie when build == host so set # CC_FOR_BUILD and CPP_FOR_BUILD. diff --git a/scripts/build/companion_libs/110-mpfr.sh b/scripts/build/companion_libs/110-mpfr.sh index d2cb9f68..3a1916c5 100644 --- a/scripts/build/companion_libs/110-mpfr.sh +++ b/scripts/build/companion_libs/110-mpfr.sh @@ -94,6 +94,7 @@ do_mpfr_backend() { local cflags local ldflags local arg + local -a extra_config for arg in "$@"; do eval "${arg// /\\ }" @@ -101,12 +102,16 @@ do_mpfr_backend() { # Under Cygwin, we can't build a thread-safe library case "${CT_HOST}" in - *cygwin*) mpfr_opts+=( --disable-thread-safe );; - *mingw*) mpfr_opts+=( --disable-thread-safe );; - *darwin*) mpfr_opts+=( --disable-thread-safe );; - *) mpfr_opts+=( --enable-thread-safe );; + *cygwin*) extra_config+=( --disable-thread-safe );; + *mingw*) extra_config+=( --disable-thread-safe );; + *darwin*) extra_config+=( --disable-thread-safe );; + *) extra_config+=( --enable-thread-safe );; esac + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + extra_config+=("--with-pic") + fi + CT_DoLog EXTRA "Configuring MPFR" CT_DoExecLog CFG \ CC="${host}-gcc" \ @@ -117,6 +122,7 @@ do_mpfr_backend() { --build=${CT_BUILD} \ --host=${host} \ --prefix="${prefix}" \ + "${extra_config[@]}" \ --with-gmp="${prefix}" \ --disable-shared \ --enable-static diff --git a/scripts/build/companion_libs/121-isl.sh b/scripts/build/companion_libs/121-isl.sh index 3577b756..d7f69256 100644 --- a/scripts/build/companion_libs/121-isl.sh +++ b/scripts/build/companion_libs/121-isl.sh @@ -82,6 +82,10 @@ do_isl_backend() { eval "${arg// /\\ }" done + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + extra_config+=("--with-pic") + fi + CT_DoLog EXTRA "Configuring ISL" CT_DoExecLog CFG \ diff --git a/scripts/build/companion_libs/130-cloog.sh b/scripts/build/companion_libs/130-cloog.sh index 9ee897ab..5170b53b 100644 --- a/scripts/build/companion_libs/130-cloog.sh +++ b/scripts/build/companion_libs/130-cloog.sh @@ -83,6 +83,10 @@ do_cloog_backend() { cloog_opts+=( --with-isl=system --with-isl-prefix="${prefix}" ) cloog_opts+=( --without-osl ) + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + cloog_opts+=("--with-pic") + fi + CT_DoLog EXTRA "Configuring CLooG" CT_DoExecLog CFG \ diff --git a/scripts/build/companion_libs/140-mpc.sh b/scripts/build/companion_libs/140-mpc.sh index 2166ef1b..2bbba2d9 100644 --- a/scripts/build/companion_libs/140-mpc.sh +++ b/scripts/build/companion_libs/140-mpc.sh @@ -38,6 +38,11 @@ do_mpc_for_build() { mpc_opts+=( "prefix=${CT_BUILDTOOLS_PREFIX_DIR}" ) mpc_opts+=( "cflags=${CT_CFLAGS_FOR_BUILD}" ) mpc_opts+=( "ldflags=${CT_LDFLAGS_FOR_BUILD}" ) + + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + mpc_opts+=("--with-pic") + fi + do_mpc_backend "${mpc_opts[@]}" CT_Popd @@ -73,11 +78,17 @@ do_mpc_backend() { local cflags local ldflags local arg + local -a extra_config for arg in "$@"; do eval "${arg// /\\ }" done + if [ "${CT_CC_LANG_JIT}" = "y" ]; then + extra_config+=("--with-pic") + fi + + CT_DoLog EXTRA "Configuring MPC" CT_DoExecLog CFG \ @@ -87,6 +98,7 @@ do_mpc_backend() { "${CT_SRC_DIR}/mpc/configure" \ --build=${CT_BUILD} \ --host=${host} \ + "${extra_config[@]}" \ --prefix="${prefix}" \ --with-gmp="${prefix}" \ --with-mpfr="${prefix}" \ diff --git a/scripts/config.guess b/scripts/config.guess index 1817bdce..980b0208 100755 --- a/scripts/config.guess +++ b/scripts/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-05-25' +timestamp='2022-09-17' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -966,6 +966,12 @@ EOF GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC ;; + x86_64:[Mm]anagarm:*:*|i?86:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-pc-managarm-mlibc" + ;; + *:[Mm]anagarm:*:*) + GUESS="$UNAME_MACHINE-unknown-managarm-mlibc" + ;; *:Minix:*:*) GUESS=$UNAME_MACHINE-unknown-minix ;; @@ -1036,7 +1042,7 @@ EOF k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; - loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; m32r*:Linux:*:*) diff --git a/scripts/config.sub b/scripts/config.sub index dba16e84..baf1512b 100755 --- a/scripts/config.sub +++ b/scripts/config.sub @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-01-03' +timestamp='2022-09-17' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -145,7 +145,7 @@ case $1 in nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova*) + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) basic_machine=$field1 basic_os=$maybe_os ;; @@ -1207,7 +1207,7 @@ case $cpu-$vendor in | k1om \ | le32 | le64 \ | lm32 \ - | loongarch32 | loongarch64 | loongarchx32 \ + | loongarch32 | loongarch64 \ | m32c | m32r | m32rle \ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ @@ -1341,6 +1341,10 @@ EOF kernel=linux os=`echo "$basic_os" | sed -e 's|linux|gnu|'` ;; + managarm*) + kernel=managarm + os=`echo "$basic_os" | sed -e 's|managarm|mlibc|'` + ;; *) kernel= os=$basic_os @@ -1754,7 +1758,7 @@ case $os in | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ - | fiwix* ) + | fiwix* | mlibc* ) ;; # This one is extra strict with allowed versions sco3.2v2 | sco3.2v[4-9]* | sco5v6*) @@ -1762,6 +1766,9 @@ case $os in ;; none) ;; + kernel* ) + # Restricted further below + ;; *) echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 exit 1 @@ -1772,16 +1779,26 @@ esac # (given a valid OS), if there is a kernel. case $kernel-$os in linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ - | linux-musl* | linux-relibc* | linux-uclibc* ) + | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) ;; uclinux-uclibc* ) ;; - -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + managarm-mlibc* | managarm-kernel* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) # These are just libc implementations, not actual OSes, and thus # require a kernel. echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 exit 1 ;; + -kernel* ) + echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + *-kernel* ) + echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 + exit 1 + ;; kfreebsd*-gnu* | kopensolaris*-gnu*) ;; vxworks-simlinux | vxworks-simwindows | vxworks-spe) diff --git a/scripts/crosstool-NG.sh b/scripts/crosstool-NG.sh index f695613c..383de66d 100644 --- a/scripts/crosstool-NG.sh +++ b/scripts/crosstool-NG.sh @@ -437,7 +437,7 @@ if [ -z "${CT_RESTART}" ]; then t="${!r}-" fi - for tool in ar as dlltool gcc g++ gcj gnatbind gnatmake ld libtool nm objcopy objdump ranlib strip windres; do + for tool in ar as dlltool gcc g++ gcj gnatbind gdc gnatmake ld libtool nm objcopy objdump ranlib strip windres; do # First try with prefix + suffix # Then try with prefix only # Then try with suffix only, but only for BUILD, and HOST iff REAL_BUILD == REAL_HOST diff --git a/scripts/functions b/scripts/functions index c2c1493c..09fa29af 100644 --- a/scripts/functions +++ b/scripts/functions @@ -1806,7 +1806,7 @@ CT_Mirrors() '') # Ignore, this happens before .config is fully evaluated ;; - [345].*) + [3456].*) echo "https://cdn.kernel.org/pub/linux/kernel/v${version%%.*}.x" ;; 2.6.*) @@ -2283,10 +2283,11 @@ CT_DoExtractPatch() CT_DoExecLog ALL rm -f "${src_dir}/.${basename}".* fi - if [ -f "${src_dir}/.${basename}.extracted" ]; then + if [ -f "${src_dir}/.${basename}.extracted" -a -d "${src_dir}/${basename}" ]; then CT_DoLog DEBUG "Already extracted ${basename}" else CT_DoLog EXTRA "Extracting ${basename}" + CT_DoExecLog ALL rm -f "${src_dir}/.${basename}".* CT_DoExecLog ALL touch "${src_dir}/.${basename}.extracting" if [ "${src_release}" = "y" ]; then archive="${archive_filename}" |