summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/arch/arm.in2
-rw-r--r--config/arch/microblaze.in4
-rw-r--r--config/arch/mips.in2
-rw-r--r--config/arch/powerpc.in2
-rw-r--r--config/arch/sh.in41
-rw-r--r--config/arch/xtensa.in2
-rw-r--r--config/target.in38
-rw-r--r--configure.ac2
-rwxr-xr-xmaintainer/test-packages.sh2
-rw-r--r--packages/uClibc-ng/1.0.25/0001-gdb8.patch64
-rw-r--r--packages/uClibc-ng/1.0.26/0001-gdb8.patch64
-rw-r--r--samples/sh-multilib-linux-gnu/crosstool.config (renamed from samples/sh4-multilib-linux-gnu/crosstool.config)5
-rw-r--r--samples/sh-multilib-linux-gnu/reported.by (renamed from samples/sh4-multilib-linux-gnu/reported.by)0
-rw-r--r--samples/sh-multilib-linux-uclibc/crosstool.config (renamed from samples/sh4-multilib-linux-uclibc/crosstool.config)5
-rw-r--r--samples/sh-multilib-linux-uclibc/reported.by (renamed from samples/sh4-multilib-linux-uclibc/reported.by)0
-rw-r--r--samples/sh-unknown-elf/crosstool.config5
-rw-r--r--samples/sh-unknown-elf/reported.by3
-rw-r--r--samples/sh4-unknown-linux-gnu/crosstool.config7
-rw-r--r--samples/sh4-unknown-linux-gnu/reported.by3
-rw-r--r--scripts/build/arch.sh6
-rw-r--r--scripts/build/arch/microblaze.sh15
-rw-r--r--scripts/build/arch/sh.sh160
-rw-r--r--scripts/build/arch/x86.sh2
-rw-r--r--scripts/build/cc/gcc.sh13
-rw-r--r--scripts/build/libc/glibc.sh73
-rw-r--r--scripts/build/libc/uClibc.sh4
-rw-r--r--scripts/crosstool-NG.sh.in13
-rw-r--r--scripts/functions40
28 files changed, 470 insertions, 107 deletions
diff --git a/config/arch/arm.in b/config/arch/arm.in
index 269310d..72c329f 100644
--- a/config/arch/arm.in
+++ b/config/arch/arm.in
@@ -5,7 +5,7 @@
## select ARCH_DEFAULT_32
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_CPU
diff --git a/config/arch/microblaze.in b/config/arch/microblaze.in
index d236007..8c73b00 100644
--- a/config/arch/microblaze.in
+++ b/config/arch/microblaze.in
@@ -2,9 +2,9 @@
## depends on EXPERIMENTAL
##
-## select ARCH_SUPPORT_ARCH
+## select ARCH_SUPPORTS_WITH_CPU
## select ARCH_FLOAT_SW
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
diff --git a/config/arch/mips.in b/config/arch/mips.in
index 850fe11..8cc68dc 100644
--- a/config/arch/mips.in
+++ b/config/arch/mips.in
@@ -4,7 +4,7 @@
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_SUPPORTS_WITH_ARCH
## select ARCH_SUPPORTS_WITH_TUNE
diff --git a/config/arch/powerpc.in b/config/arch/powerpc.in
index 276438f..ae10e2d 100644
--- a/config/arch/powerpc.in
+++ b/config/arch/powerpc.in
@@ -3,7 +3,7 @@
## select ARCH_SUPPORTS_32
## select ARCH_SUPPORTS_64
## select ARCH_DEFAULT_32
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_BE
## select ARCH_USE_MMU
## select ARCH_SUPPORTS_WITH_ABI
diff --git a/config/arch/sh.in b/config/arch/sh.in
index be525b4..efced07 100644
--- a/config/arch/sh.in
+++ b/config/arch/sh.in
@@ -3,9 +3,10 @@
## select ARCH_SUPPORTS_32
## select ARCH_DEFAULT_32
## select ARCH_USE_MMU
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_REQUIRES_MULTILIB
+## select ARCH_SUPPORTS_WITH_ENDIAN
##
## help The Super-H architecture, as defined by:
## help http://www.renesas.com/fmwk.jsp?cnt=superh_family_landing.jsp&fp=/products/mpumcu/superh_family/
@@ -14,10 +15,42 @@ choice
bool
prompt "Variant"
+# GCC supports both endiannesses even if a specific CPU is selected (so long
+# as that CPU can be both BE/LE), but the binutils (or specifically, ld)
+# configures for both endiannesses only if sh-*-linux target is selected.
+config ARCH_SH_SH
+ bool
+ prompt "unspecified"
+ select ARCH_SUPPORTS_BOTH_ENDIAN
+ select ARCH_SUPPORTS_WITH_CPU
+ help
+ If left unspecified, GCC will determine the set of multilibs to compile automatically
+ based on selected endianness, FPU mode and OS.
+
+config ARCH_SH_SH1
+ bool
+ prompt "sh1"
+
+config ARCH_SH_SH2
+ bool
+ prompt "sh2"
+
+config ARCH_SH_SH2E
+ bool
+ prompt "sh2e"
+
+config ARCH_SH_SH2A
+ bool
+ prompt "sh2a"
+
config ARCH_SH_SH3
bool
prompt "sh3"
+config ARCH_SH_SH3E
+ bool
+ prompt "sh3e"
+
config ARCH_SH_SH4
bool
prompt "sh4"
@@ -30,6 +63,12 @@ endchoice
config ARCH_SH_VARIANT
string
+ default "sh" if ARCH_SH_SH
+ default "sh1" if ARCH_SH_SH1
+ default "sh2" if ARCH_SH_SH2
+ default "sh2e" if ARCH_SH_SH2E
+ default "sh2a" if ARCH_SH_SH2A
default "sh3" if ARCH_SH_SH3
+ default "sh3e" if ARCH_SH_SH3E
default "sh4" if ARCH_SH_SH4
default "sh4a" if ARCH_SH_SH4A
diff --git a/config/arch/xtensa.in b/config/arch/xtensa.in
index bf4fcb6..a376523 100644
--- a/config/arch/xtensa.in
+++ b/config/arch/xtensa.in
@@ -1,7 +1,7 @@
# xtensa specific configuration file
## select ARCH_SUPPORTS_32
-## select ARCH_SUPPORTS_BOTH_ENDIAN
+## select ARCH_SUPPORTS_EITHER_ENDIAN
## select ARCH_DEFAULT_LE
## select ARCH_SUPPORTS_BOTH_MMU
## select ARCH_DEFAULT_HAS_MMU
diff --git a/config/target.in b/config/target.in
index 738f06b..d3b5f08 100644
--- a/config/target.in
+++ b/config/target.in
@@ -93,8 +93,16 @@ config ARCH_USE_MMU
have one (eg. ARM Cortex-A8).
#--------------------------------------
+config ARCH_SUPPORTS_EITHER_ENDIAN
+ bool
+ help
+ Architecture allows to select endianness at the time the toolchain is built.
+
config ARCH_SUPPORTS_BOTH_ENDIAN
bool
+ select ARCH_SUPPORTS_EITHER_ENDIAN
+ help
+ Toolchain supports both big/little endian.
config ARCH_DEFAULT_BE
bool
@@ -102,12 +110,22 @@ config ARCH_DEFAULT_BE
config ARCH_DEFAULT_LE
bool
+config ARCH_DEFAULT_BE_LE
+ bool
+ depends on ARCH_SUPPORTS_BOTH_ENDIAN
+
+config ARCH_DEFAULT_LE_BE
+ bool
+ depends on ARCH_SUPPORTS_BOTH_ENDIAN
+
choice
bool
prompt "Endianness:"
depends on ARCH_SUPPORTS_BOTH_ENDIAN
default ARCH_BE if ARCH_DEFAULT_BE
default ARCH_LE if ARCH_DEFAULT_LE
+ default ARCH_BE_LE if ARCH_DEFAULT_BE_LE
+ default ARCH_LE_BE if ARCH_DEFAULT_LE_BE
config ARCH_BE
bool
@@ -117,13 +135,23 @@ config ARCH_LE
bool
prompt "Little endian"
+config ARCH_BE_LE
+ bool
+ prompt "Both, default big endian"
+
+config ARCH_LE_BE
+ bool
+ prompt "Both, default little endian"
+
endchoice
config ARCH_ENDIAN
string
- depends on ARCH_SUPPORTS_BOTH_ENDIAN
- default "big" if ARCH_BE
- default "little" if ARCH_LE
+ depends on ARCH_SUPPORTS_EITHER_ENDIAN
+ default "big" if ARCH_BE
+ default "little" if ARCH_LE
+ default "big,little" if ARCH_BE_LE
+ default "little,big" if ARCH_LE_BE
#--------------------------------------
config ARCH_SUPPORTS_8
@@ -208,6 +236,9 @@ config ARCH_SUPPORTS_WITH_FLOAT
config ARCH_SUPPORTS_WITH_FPU
bool
+config ARCH_SUPPORTS_WITH_ENDIAN
+ bool
+
config ARCH_SUPPORTS_SOFTFP
bool
@@ -396,7 +427,6 @@ config TARGET_LDFLAGS
config ARCH_FLOAT
string
- default "" if ! ARCH_SUPPORTS_WITH_FLOAT
default "auto" if ARCH_FLOAT_AUTO
default "hard" if ARCH_FLOAT_HW
default "soft" if ARCH_FLOAT_SW
diff --git a/configure.ac b/configure.ac
index 4f7d3d3..d84b609 100644
--- a/configure.ac
+++ b/configure.ac
@@ -313,7 +313,7 @@ ACX_PROG_VERSION([LIBTOOLIZE],
ACX_PROG_VERSION([AUTOCONF],
[GNU autoconf >= 2.65],
- [AUTOCONF],
+ [autoconf],
[autoconf],
['\(GNU Autoconf\) ([3-9]\.|2\.[7-9][0-9]|2\.6[5-9])'],
[autoconf_2_63_or_newer])
diff --git a/maintainer/test-packages.sh b/maintainer/test-packages.sh
index 26caaf8..d6b84be 100755
--- a/maintainer/test-packages.sh
+++ b/maintainer/test-packages.sh
@@ -189,6 +189,8 @@ EOF
CT_EndStep
}
+mv .config .config-saved
. maintainer/package-versions
+mv .config-saved .config
rm -rf ${CT_TARBALLS_DIR} ${CT_COMMON_SRC_DIR}
diff --git a/packages/uClibc-ng/1.0.25/0001-gdb8.patch b/packages/uClibc-ng/1.0.25/0001-gdb8.patch
new file mode 100644
index 0000000..b4a70eb
--- /dev/null
+++ b/packages/uClibc-ng/1.0.25/0001-gdb8.patch
@@ -0,0 +1,64 @@
+commit 111f01d432d542a153c1cad83def3a6ab57df7af
+Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
+Date: Sat Aug 5 11:28:07 2017 +0200
+
+ fix issues with gdb 8.0
+
+ GDB 8.0 is compiled and linked with g++, but the
+ linking of static targets (f.e. coldfire) fails,
+ without declaring the functions in thread_db.h
+ extern C.
+
+ The compilation of gdb errors out with:
+ thread-db.o: In function `thread_db_init()':
+ thread-db.c:(.text+0x5b6): undefined reference to `td_ta_new(ps_prochandle*, td_thragent**)'
+ thread-db.c:(.text+0x61e): undefined reference to `td_thr_get_info(td_thrhandle const*, td_thrinfo*)'
+ thread-db.c:(.text+0x632): undefined reference to `td_symbol_list()'
+ ..
+
+diff --git a/libpthread/linuxthreads_db/thread_db.h b/libpthread/linuxthreads_db/thread_db.h
+index 13c30af5b..ec79f6022 100644
+--- a/libpthread/linuxthreads_db/thread_db.h
++++ b/libpthread/linuxthreads_db/thread_db.h
+@@ -27,6 +27,9 @@
+ #include <sys/types.h>
+ #include <sys/procfs.h>
+
++#ifdef __cplusplus
++extern "C" {
++#endif
+
+ /* Error codes of the library. */
+ typedef enum
+@@ -455,4 +458,8 @@ extern td_err_e td_thr_dbsuspend (const td_thrhandle_t *__th);
+ /* Resume execution of thread TH. */
+ extern td_err_e td_thr_dbresume (const td_thrhandle_t *__th);
+
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* thread_db.h */
+diff --git a/libpthread/nptl_db/thread_db.h b/libpthread/nptl_db/thread_db.h
+index 27ea69af8..993842ff5 100644
+--- a/libpthread/nptl_db/thread_db.h
++++ b/libpthread/nptl_db/thread_db.h
+@@ -27,6 +27,9 @@
+ #include <sys/types.h>
+ #include <sys/procfs.h>
+
++#ifdef __cplusplus
++extern "C" {
++#endif
+
+ /* Error codes of the library. */
+ typedef enum
+@@ -455,4 +458,8 @@ extern td_err_e td_thr_dbsuspend (const td_thrhandle_t *__th);
+ /* Resume execution of thread TH. */
+ extern td_err_e td_thr_dbresume (const td_thrhandle_t *__th);
+
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* thread_db.h */
diff --git a/packages/uClibc-ng/1.0.26/0001-gdb8.patch b/packages/uClibc-ng/1.0.26/0001-gdb8.patch
new file mode 100644
index 0000000..b4a70eb
--- /dev/null
+++ b/packages/uClibc-ng/1.0.26/0001-gdb8.patch
@@ -0,0 +1,64 @@
+commit 111f01d432d542a153c1cad83def3a6ab57df7af
+Author: Waldemar Brodkorb <wbx@uclibc-ng.org>
+Date: Sat Aug 5 11:28:07 2017 +0200
+
+ fix issues with gdb 8.0
+
+ GDB 8.0 is compiled and linked with g++, but the
+ linking of static targets (f.e. coldfire) fails,
+ without declaring the functions in thread_db.h
+ extern C.
+
+ The compilation of gdb errors out with:
+ thread-db.o: In function `thread_db_init()':
+ thread-db.c:(.text+0x5b6): undefined reference to `td_ta_new(ps_prochandle*, td_thragent**)'
+ thread-db.c:(.text+0x61e): undefined reference to `td_thr_get_info(td_thrhandle const*, td_thrinfo*)'
+ thread-db.c:(.text+0x632): undefined reference to `td_symbol_list()'
+ ..
+
+diff --git a/libpthread/linuxthreads_db/thread_db.h b/libpthread/linuxthreads_db/thread_db.h
+index 13c30af5b..ec79f6022 100644
+--- a/libpthread/linuxthreads_db/thread_db.h
++++ b/libpthread/linuxthreads_db/thread_db.h
+@@ -27,6 +27,9 @@
+ #include <sys/types.h>
+ #include <sys/procfs.h>
+
++#ifdef __cplusplus
++extern "C" {
++#endif
+
+ /* Error codes of the library. */
+ typedef enum
+@@ -455,4 +458,8 @@ extern td_err_e td_thr_dbsuspend (const td_thrhandle_t *__th);
+ /* Resume execution of thread TH. */
+ extern td_err_e td_thr_dbresume (const td_thrhandle_t *__th);
+
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* thread_db.h */
+diff --git a/libpthread/nptl_db/thread_db.h b/libpthread/nptl_db/thread_db.h
+index 27ea69af8..993842ff5 100644
+--- a/libpthread/nptl_db/thread_db.h
++++ b/libpthread/nptl_db/thread_db.h
+@@ -27,6 +27,9 @@
+ #include <sys/types.h>
+ #include <sys/procfs.h>
+
++#ifdef __cplusplus
++extern "C" {
++#endif
+
+ /* Error codes of the library. */
+ typedef enum
+@@ -455,4 +458,8 @@ extern td_err_e td_thr_dbsuspend (const td_thrhandle_t *__th);
+ /* Resume execution of thread TH. */
+ extern td_err_e td_thr_dbresume (const td_thrhandle_t *__th);
+
++#ifdef __cplusplus
++}
++#endif
++
+ #endif /* thread_db.h */
diff --git a/samples/sh4-multilib-linux-gnu/crosstool.config b/samples/sh-multilib-linux-gnu/crosstool.config
index 7965da6..9fe6e41 100644
--- a/samples/sh4-multilib-linux-gnu/crosstool.config
+++ b/samples/sh-multilib-linux-gnu/crosstool.config
@@ -1,9 +1,10 @@
CT_ARCH_SH=y
-CT_ARCH_SH_SH4=y
+CT_ARCH_CPU="sh4"
+CT_ARCH_LE_BE=y
CT_TARGET_VENDOR="multilib"
CT_KERNEL_LINUX=y
CT_BINUTILS_PLUGINS=y
-CT_CC_GCC_MULTILIB_LIST="m4a"
+CT_CC_GCC_MULTILIB_LIST="m4-nofpu,m4a,m3"
CT_CC_LANG_CXX=y
CT_DEBUG_GDB=y
# CT_GDB_CROSS_PYTHON is not set
diff --git a/samples/sh4-multilib-linux-gnu/reported.by b/samples/sh-multilib-linux-gnu/reported.by
index f03f2c5..f03f2c5 100644
--- a/samples/sh4-multilib-linux-gnu/reported.by
+++ b/samples/sh-multilib-linux-gnu/reported.by
diff --git a/samples/sh4-multilib-linux-uclibc/crosstool.config b/samples/sh-multilib-linux-uclibc/crosstool.config
index 2fc3406..66caf04 100644
--- a/samples/sh4-multilib-linux-uclibc/crosstool.config
+++ b/samples/sh-multilib-linux-uclibc/crosstool.config
@@ -1,10 +1,11 @@
CT_ARCH_SH=y
-CT_ARCH_SH_SH4=y
+CT_ARCH_CPU="sh4"
+CT_ARCH_LE_BE=y
CT_TARGET_VENDOR="multilib"
CT_KERNEL_LINUX=y
CT_BINUTILS_PLUGINS=y
CT_LIBC_UCLIBC=y
-CT_CC_GCC_MULTILIB_LIST="m4a,m3"
+CT_CC_GCC_MULTILIB_LIST="sh3,sh4,sh4a,sh4a-nofpu"
CT_CC_LANG_CXX=y
CT_DEBUG_GDB=y
# CT_GDB_CROSS_PYTHON is not set
diff --git a/samples/sh4-multilib-linux-uclibc/reported.by b/samples/sh-multilib-linux-uclibc/reported.by
index 2d3a629..2d3a629 100644
--- a/samples/sh4-multilib-linux-uclibc/reported.by
+++ b/samples/sh-multilib-linux-uclibc/reported.by
diff --git a/samples/sh-unknown-elf/crosstool.config b/samples/sh-unknown-elf/crosstool.config
new file mode 100644
index 0000000..9387a51
--- /dev/null
+++ b/samples/sh-unknown-elf/crosstool.config
@@ -0,0 +1,5 @@
+CT_ARCH_SH=y
+CT_ARCH_LE_BE=y
+CT_BINUTILS_PLUGINS=y
+CT_CC_LANG_CXX=y
+CT_GETTEXT=y
diff --git a/samples/sh-unknown-elf/reported.by b/samples/sh-unknown-elf/reported.by
new file mode 100644
index 0000000..0435479
--- /dev/null
+++ b/samples/sh-unknown-elf/reported.by
@@ -0,0 +1,3 @@
+reporter_name="Alexey Neyman"
+reporter_url=""
+reporter_comment="Sample SuperH/baremetal configuration with all default multilibs."
diff --git a/samples/sh4-unknown-linux-gnu/crosstool.config b/samples/sh4-unknown-linux-gnu/crosstool.config
deleted file mode 100644
index 36d806f..0000000
--- a/samples/sh4-unknown-linux-gnu/crosstool.config
+++ /dev/null
@@ -1,7 +0,0 @@
-CT_ARCH_SH=y
-CT_ARCH_SH_SH4=y
-CT_KERNEL_LINUX=y
-CT_BINUTILS_PLUGINS=y
-CT_CC_LANG_CXX=y
-CT_DEBUG_GDB=y
-# CT_GDB_CROSS_PYTHON is not set
diff --git a/samples/sh4-unknown-linux-gnu/reported.by b/samples/sh4-unknown-linux-gnu/reported.by
deleted file mode 100644
index 4e2eae7..0000000
--- a/samples/sh4-unknown-linux-gnu/reported.by
+++ /dev/null
@@ -1,3 +0,0 @@
-reporter_name="YEM"
-reporter_url="http://ymorin.is-a-geek.org/"
-reporter_comment="EXPERIMENTAL Super-H sh4 sample."
diff --git a/scripts/build/arch.sh b/scripts/build/arch.sh
index 5a8d84c..de3e3c9 100644
--- a/scripts/build/arch.sh
+++ b/scripts/build/arch.sh
@@ -22,6 +22,12 @@ CT_DoArchGlibcAdjustTuple() {
:;
}
+# Multilib: Adjust configure arguments for GLIBC
+# Usage: CT_DoArchGlibcAdjustConfigure <configure-args-array-name> <cflags>
+CT_DoArchGlibcAdjustConfigure() {
+ :;
+}
+
# Helper for uClibc configurators: select the architecture
# Usage: CT_DoArchUClibcSelectArch <config-file> <architecture>
CT_DoArchUClibcSelectArch() {
diff --git a/scripts/build/arch/microblaze.sh b/scripts/build/arch/microblaze.sh
index e9d9811..5b85012 100644
--- a/scripts/build/arch/microblaze.sh
+++ b/scripts/build/arch/microblaze.sh
@@ -3,21 +3,6 @@
CT_DoArchTupleValues () {
# The architecture part of the tuple:
CT_TARGET_ARCH="${CT_ARCH}${CT_ARCH_SUFFIX:-${target_endian_el}}"
-
- # gcc ./configure flags
- CT_ARCH_WITH_ARCH=
- CT_ARCH_WITH_ABI=
- CT_ARCH_WITH_CPU=
- CT_ARCH_WITH_TUNE=
- CT_ARCH_WITH_FPU=
- CT_ARCH_WITH_FLOAT=
-
- # CFLAGS
- case "${CT_ARCH_FLOAT_HW},${CT_ARCH_FLOAT_SW}" in
- y,) CT_ARCH_FLOAT_CFLAG="-mhard-float" ;;
- ,y) CT_ARCH_FLOAT_CFLAG="-msoft-float" ;;
- esac
-
}
CT_DoArchUClibcConfig() {
diff --git a/scripts/build/arch/sh.sh b/scripts/build/arch/sh.sh
index 59bc08a..1911b20 100644
--- a/scripts/build/arch/sh.sh
+++ b/scripts/build/arch/sh.sh
@@ -4,36 +4,29 @@ CT_DoArchTupleValues () {
# The architecture part of the tuple:
CT_TARGET_ARCH="${CT_ARCH_SH_VARIANT}${CT_ARCH_SUFFIX:-${target_endian_eb}}"
- # gcc ./configure flags
- CT_ARCH_WITH_ARCH=
- CT_ARCH_WITH_ABI=
- CT_ARCH_WITH_CPU=
- CT_ARCH_WITH_TUNE=
- CT_ARCH_WITH_FPU=
- CT_ARCH_WITH_FLOAT=
-
- # Endianness stuff
+ # Endianness stuff (uses non-standard CFLAGS). If both are compiled, let the
+ # compiler's default or multilib iterator be used.
case "${CT_ARCH_ENDIAN}" in
big) CT_ARCH_ENDIAN_CFLAG=-mb;;
little) CT_ARCH_ENDIAN_CFLAG=-ml;;
esac
- # CFLAGS
+ # Instead of -m{soft,hard}-float, uses CPU type
+ CT_ARCH_FLOAT_CFLAG=
case "${CT_ARCH_SH_VARIANT}" in
sh3) CT_ARCH_ARCH_CFLAG=-m3;;
- sh4*)
+ sh4*|sh2*)
# softfp is not possible for SuperH, no need to test for it.
case "${CT_ARCH_FLOAT}" in
hard)
- CT_ARCH_ARCH_CFLAG="-m4${CT_ARCH_SH_VARIANT##sh?}"
+ CT_ARCH_ARCH_CFLAG="-m${CT_ARCH_SH_VARIANT##sh}"
;;
soft)
- CT_ARCH_ARCH_CFLAG="-m4${CT_ARCH_SH_VARIANT##sh?}-nofpu"
+ CT_ARCH_ARCH_CFLAG="-m${CT_ARCH_SH_VARIANT##sh}-nofpu"
;;
esac
;;
esac
- CT_ARCH_FLOAT_CFLAG=
}
CT_DoArchMultilibList() {
@@ -45,13 +38,19 @@ CT_DoArchMultilibList() {
# the default CPU. E.g. if configuring for sh4-*-*, we need to remove
# "sh4" or "m4" from the multilib list. Otherwise, the resulting compiler
# will fail when that CPU is selected explicitly "sh4-multilib-linux-gnu-gcc -m4 ..."
- # as it will fail to find the sysroot with that suffix.
+ # as it will fail to find the sysroot with that suffix. This applies to both
+ # the CPU type inferred from the target tuple (CT_ARCH_SH_VARIANT) as well as
+ # the default CPU configured with --with-cpu (CT_ARCH_CPU).
IFS=,
for x in ${CT_CC_GCC_MULTILIB_LIST}; do
if [ "${x}" = "${CT_ARCH_SH_VARIANT}" -o "sh${x#m}" = "${CT_ARCH_SH_VARIANT}" ]; then
CT_DoLog WARN "Ignoring '${x}' in multilib list: it is the default multilib"
continue
fi
+ if [ "${x}" = "${CT_ARCH_CPU}" -o "sh${x#m}" = "${CT_ARCH_CPU}" ]; then
+ CT_DoLog WARN "Ignoring '${x}' in multilib list: it is the default multilib"
+ continue
+ fi
new="${new:+${new},}${x}"
done
IFS="${save_ifs}"
@@ -59,15 +58,110 @@ CT_DoArchMultilibList() {
CT_DoLog DEBUG "Adjusted CT_CC_GCC_MULTILIB_LIST to '${CT_CC_GCC_MULTILIB_LIST}'"
}
+#------------------------------------------------------------------------------
+# Get multilib architecture-specific target
+# Usage: CT_DoArchMultilibTarget "target variable" "multilib flags"
+CT_DoArchMultilibTarget ()
+{
+ local target_var="${1}"; shift
+ local -a multi_flags=( "$@" )
+ local target_
+ local newcpu
+
+ for m in "${multi_flags[@]}"; do
+ case "${m}" in
+ -m4*) newcpu=sh4;;
+ -m3*) newcpu=sh3;;
+ -m2*) newcpu=sh2;;
+ -m1*) newcpu=sh1;;
+ esac
+ done
+
+ eval target_=\"\${${target_var}}\"
+
+ # Strip CPU name and append the new one if an option has been seen.
+ if [ -n "${newcpu}" ]; then
+ target_="${newcpu}-${target_#*-}"
+ fi
+
+ # Set the target variable
+ eval ${target_var}=\"${target_}\"
+}
+
+# Adjust target tuple for GLIBC
+CT_DoArchGlibcAdjustTuple() {
+ local target_var="${1}"
+ local target_
+
+ eval target_=\"\${${target_var}}\"
+
+ case "${target_}" in
+ sh-*)
+ # Glibc does not build unless configured with 'shX-*' tuple.
+ # Since we ended up here, no architecture variant has been
+ # specified, so the only source of default is CT_ARCH_CPU.
+ # GCC defaults to sh1, but this Glibc cannot compile for it.
+ if [ -n "${CT_ARCH_CPU}" ]; then
+ target_=${target_/#sh-/${CT_ARCH_CPU}-}
+ CT_DoLog DEBUG "Adjusted target tuple ${target_}"
+ else
+ CT_Abort "GNU C library cannot build for sh1 (GCC default). " \
+ "Specify architecture variant or the default CPU type."
+ fi
+ ;;
+ esac
+
+ # Set the target variable
+ eval ${target_var}=\"${target_}\"
+}
+
+# Multilib: Adjust configure arguments for GLIBC
+# Usage: CT_DoArchGlibcAdjustConfigure <configure-args-array-name> <cflags>
+CT_DoArchGlibcAdjustConfigure() {
+ local -a add_args
+ local array="${1}"
+ local cflags="${2}"
+ local opt
+
+ for opt in ${cflags}; do
+ case "${opt}" in
+ -m[1-5]*-nofpu)
+ add_args+=( "--without-fp" )
+ ;;
+ -m[1-5]*)
+ add_args+=( "--with-fp" )
+ ;;
+ esac
+ done
+
+ # If architecture variant was specified, we'd have CT_ARCH_ARCH_CFLAG
+ # and it would've been handled above. Our last resort: CT_ARCH_CPU
+ if [ "${#add_args[@]}" = 0 ]; then
+ case "${CT_ARCH_CPU}" in
+ sh[34]*-nofpu)
+ add_args+=( "--without-fp" )
+ ;;
+ sh[34]*)
+ add_args+=( "--with-fp" )
+ ;;
+ esac
+ fi
+
+ eval "${array}+=( \"\${add_args[@]}\" )"
+}
+
CT_DoArchUClibcConfig() {
local cfg="${1}"
- # FIXME: uclibc (!ng) seems to support sh64 (sh5), too
CT_DoArchUClibcSelectArch "${cfg}" "sh"
+ CT_KconfigDisableOption "CONFIG_SH2" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_SH2A" "${cfg}"
CT_KconfigDisableOption "CONFIG_SH3" "${cfg}"
CT_KconfigDisableOption "CONFIG_SH4" "${cfg}"
CT_KconfigDisableOption "CONFIG_SH4A" "${cfg}"
case "${CT_ARCH_SH_VARIANT}" in
+ sh2) CT_KconfigEnableOption "CONFIG_SH2" "${cfg}";;
+ sh2a) CT_KconfigEnableOption "CONFIG_SH2A" "${cfg}";;
sh3) CT_KconfigEnableOption "CONFIG_SH3" "${cfg}";;
sh4) CT_KconfigEnableOption "CONFIG_SH4" "${cfg}";;
sh4a) CT_KconfigEnableOption "CONFIG_SH4A" "${cfg}";;
@@ -81,6 +175,36 @@ CT_DoArchUClibcCflags() {
for f in ${cflags}; do
case "${f}" in
+ -ml)
+ CT_KconfigDisableOption "ARCH_BIG_ENDIAN" "${dst}"
+ CT_KconfigDisableOption "ARCH_WANTS_BIG_ENDIAN" "${dst}"
+ CT_KconfigEnableOption "ARCH_LITTLE_ENDIAN" "${dst}"
+ CT_KconfigEnableOption "ARCH_WANTS_LITTLE_ENDIAN" "${dst}"
+ ;;
+ -mb)
+ CT_KconfigEnableOption "ARCH_BIG_ENDIAN" "${dst}"
+ CT_KconfigEnableOption "ARCH_WANTS_BIG_ENDIAN" "${dst}"
+ CT_KconfigDisableOption "ARCH_LITTLE_ENDIAN" "${dst}"
+ CT_KconfigDisableOption "ARCH_WANTS_LITTLE_ENDIAN" "${dst}"
+ ;;
+ -m2|-m2a|-m2a-nofpu|-m3|-m4|-m4-nofpu|-m4a|-m4a-nofpu)
+ CT_KconfigDisableOption "CONFIG_SH2" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_SH2A" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_SH3" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_SH4" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_SH4A" "${cfg}"
+ CT_KconfigDisableOption "UCLIBC_HAS_FPU" "${cfg}"
+ case "${f}" in
+ -m2)
+ CT_KconfigEnableOption "CONFIG_SH2" "${cfg}"
+ ;;
+ -m2a)
+ CT_KconfigEnableOption "CONFIG_SH2A" "${cfg}"
+ CT_KconfigEnableOption "UCLIBC_HAS_FPU" "${cfg}"
+ ;;
+ -m2a-nofpu)
+ CT_KconfigEnableOption "CONFIG_SH2A" "${cfg}"
+ ;;
-m3)
CT_KconfigEnableOption "CONFIG_SH3" "${cfg}"
;;
@@ -90,7 +214,6 @@ CT_DoArchUClibcCflags() {
;;
-m4-nofpu)
CT_KconfigEnableOption "CONFIG_SH4" "${cfg}"
- CT_KconfigDisableOption "UCLIBC_HAS_FPU" "${cfg}"
;;
-m4a)
CT_KconfigEnableOption "CONFIG_SH4A" "${cfg}"
@@ -98,8 +221,9 @@ CT_DoArchUClibcCflags() {
;;
-m4a-nofpu)
CT_KconfigEnableOption "CONFIG_SH4A" "${cfg}"
- CT_KconfigDisableOption "UCLIBC_HAS_FPU" "${cfg}"
;;
+ esac
+ ;;
esac
done
}
diff --git a/scripts/build/arch/x86.sh b/scripts/build/arch/x86.sh
index 3a7a2ce..471d377 100644
--- a/scripts/build/arch/x86.sh
+++ b/scripts/build/arch/x86.sh
@@ -86,7 +86,7 @@ CT_DoArchGlibcAdjustTuple() {
# x86 quirk: architecture name is i386, but glibc expects i[4567]86 - to
# indicate the desired optimization. If it was a multilib variant of x86_64,
# then it targets at least NetBurst a.k.a. i786, but we'll follow the model
- # above # and set the optimization to i686. Otherwise, replace with the most
+ # above and set the optimization to i686. Otherwise, replace with the most
# conservative choice, i486.
i386-*)
if [ "${CT_TARGET_ARCH}" = "x86_64" ]; then
diff --git a/scripts/build/cc/gcc.sh b/scripts/build/cc/gcc.sh
index 2609873..5430341 100644
--- a/scripts/build/cc/gcc.sh
+++ b/scripts/build/cc/gcc.sh
@@ -233,7 +233,11 @@ do_cc_core_pass_2() {
# later, we need to build libgcc
case "${CT_THREADS}" in
nptl)
- core_opts+=( "mode=shared" )
+ if [ "${CT_SHARED_LIBS}" = "y" ]; then
+ core_opts+=( "mode=shared" )
+ else
+ core_opts+=( "mode=static" )
+ fi
core_opts+=( "build_libgcc=yes" )
;;
win32)
@@ -350,7 +354,7 @@ do_gcc_core_backend() {
CT_DoExecLog ALL cp -a "${CT_HEADERS_DIR}" "${prefix}/${CT_TARGET}/include"
fi
- for tmp in ARCH ABI CPU TUNE FPU FLOAT; do
+ for tmp in ARCH ABI CPU TUNE FPU FLOAT ENDIAN; do
eval tmp="\${CT_ARCH_WITH_${tmp}}"
if [ -n "${tmp}" ]; then
extra_config+=("${tmp}")
@@ -873,10 +877,13 @@ do_gcc_backend() {
fi
done
- [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared")
[ -n "${CT_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_PKGVERSION}")
[ -n "${CT_TOOLCHAIN_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_TOOLCHAIN_BUGURL}")
+ if [ "${CT_SHARED_LIBS}" != "y" ]; then
+ extra_config+=("--disable-shared")
+ fi
+
case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in
y) extra_config+=("--enable-sjlj-exceptions");;
m) ;;
diff --git a/scripts/build/libc/glibc.sh b/scripts/build/libc/glibc.sh
index 0cf58f3..3b4b626 100644
--- a/scripts/build/libc/glibc.sh
+++ b/scripts/build/libc/glibc.sh
@@ -150,6 +150,9 @@ do_libc_backend_once() {
;;
esac
+ # FIXME static version of glibc seems to be broken:
+ # build tries to use libc-modules.h which is generated from
+ # soversions.i, which is only created for builds with shared libs.
case "${CT_SHARED_LIBS}" in
y) extra_config+=("--enable-shared");;
*) extra_config+=("--disable-shared");;
@@ -208,6 +211,7 @@ do_libc_backend_once() {
;;
esac
done
+ CT_DoArchGlibcAdjustConfigure extra_config "${glibc_cflags}"
# ./configure is mislead by our tools override wrapper for bash
# so just tell it where the real bash is _on_the_target_!
@@ -308,42 +312,39 @@ do_libc_backend_once() {
"${extra_make_args[@]}" \
install-headers
- # For glibc, a few headers need to be manually installed
- if [ "${CT_LIBC}" = "glibc" ]; then
- # Two headers -- stubs.h and features.h -- aren't installed by install-headers,
- # so do them by hand. We can tolerate an empty stubs.h for the moment.
- # See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
- mkdir -p "${CT_HEADERS_DIR}/gnu"
- CT_DoExecLog ALL touch "${CT_HEADERS_DIR}/gnu/stubs.h"
- CT_DoExecLog ALL cp -v "${CT_SRC_DIR}/glibc/include/features.h" \
- "${CT_HEADERS_DIR}/features.h"
-
- # Building the bootstrap gcc requires either setting inhibit_libc, or
- # having a copy of stdio_lim.h... see
- # http://sources.redhat.com/ml/libc-alpha/2003-11/msg00045.html
- CT_DoExecLog ALL cp -v bits/stdio_lim.h "${CT_HEADERS_DIR}/bits/stdio_lim.h"
-
- # Following error building gcc-4.0.0's gcj:
- # error: bits/syscall.h: No such file or directory
- # solved by following copy; see http://sourceware.org/ml/crossgcc/2005-05/msg00168.html
- # but it breaks arm, see http://sourceware.org/ml/crossgcc/2006-01/msg00091.html
- # Of course, only copy it if it does not already exist
- case "${CT_ARCH}" in
- arm) ;;
- *) if [ -f "${CT_HEADERS_DIR}/bits/syscall.h" ]; then
- CT_DoLog ALL "Not over-writing existing bits/syscall.h"
- elif [ -f "misc/bits/syscall.h" ]; then
- CT_DoExecLog ALL cp -v "misc/bits/syscall.h" \
- "${CT_HEADERS_DIR}/bits/syscall.h"
- else
- # "Old" glibces do not have the above file,
- # but provide this one:
- CT_DoExecLog ALL cp -v "misc/syscall-list.h" \
- "${CT_HEADERS_DIR}/bits/syscall.h"
- fi
- ;;
- esac
- fi
+ # Two headers -- stubs.h and features.h -- aren't installed by install-headers,
+ # so do them by hand. We can tolerate an empty stubs.h for the moment.
+ # See e.g. http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html
+ mkdir -p "${CT_HEADERS_DIR}/gnu"
+ CT_DoExecLog ALL touch "${CT_HEADERS_DIR}/gnu/stubs.h"
+ CT_DoExecLog ALL cp -v "${CT_SRC_DIR}/glibc/include/features.h" \
+ "${CT_HEADERS_DIR}/features.h"
+
+ # Building the bootstrap gcc requires either setting inhibit_libc, or
+ # having a copy of stdio_lim.h... see
+ # http://sources.redhat.com/ml/libc-alpha/2003-11/msg00045.html
+ CT_DoExecLog ALL cp -v bits/stdio_lim.h "${CT_HEADERS_DIR}/bits/stdio_lim.h"
+
+ # Following error building gcc-4.0.0's gcj:
+ # error: bits/syscall.h: No such file or directory
+ # solved by following copy; see http://sourceware.org/ml/crossgcc/2005-05/msg00168.html
+ # but it breaks arm, see http://sourceware.org/ml/crossgcc/2006-01/msg00091.html
+ # Of course, only copy it if it does not already exist
+ case "${CT_ARCH}" in
+ arm) ;;
+ *) if [ -f "${CT_HEADERS_DIR}/bits/syscall.h" ]; then
+ CT_DoLog ALL "Not over-writing existing bits/syscall.h"
+ elif [ -f "misc/bits/syscall.h" ]; then
+ CT_DoExecLog ALL cp -v "misc/bits/syscall.h" \
+ "${CT_HEADERS_DIR}/bits/syscall.h"
+ else
+ # "Old" glibces do not have the above file,
+ # but provide this one:
+ CT_DoExecLog ALL cp -v "misc/syscall-list.h" \
+ "${CT_HEADERS_DIR}/bits/syscall.h"
+ fi
+ ;;
+ esac
elif [ "${libc_mode}" = "final" -a -r "${multi_root}/.libc_headers_installed" ]; then
CT_DoExecLog ALL rm -f "${multi_root}/.libc_headers_installed"
fi # installing headers
diff --git a/scripts/build/libc/uClibc.sh b/scripts/build/libc/uClibc.sh
index af07888..599283e 100644
--- a/scripts/build/libc/uClibc.sh
+++ b/scripts/build/libc/uClibc.sh
@@ -224,13 +224,13 @@ manage_uClibc_config() {
CT_DoExecLog ALL cp "${src}" "${dst}"
case "${CT_ARCH_ENDIAN}" in
- big)
+ big|big,little)
CT_KconfigDisableOption "ARCH_LITTLE_ENDIAN" "${dst}"
CT_KconfigDisableOption "ARCH_WANTS_LITTLE_ENDIAN" "${dst}"
CT_KconfigEnableOption "ARCH_BIG_ENDIAN" "${dst}"
CT_KconfigEnableOption "ARCH_WANTS_BIG_ENDIAN" "${dst}"
;;
- little)
+ little|little,big)
CT_KconfigDisableOption "ARCH_BIG_ENDIAN" "${dst}"
CT_KconfigDisableOption "ARCH_WANTS_BIG_ENDIAN" "${dst}"
CT_KconfigEnableOption "ARCH_LITTLE_ENDIAN" "${dst}"
diff --git a/scripts/crosstool-NG.sh.in b/scripts/crosstool-NG.sh.in
index 9c09b5e..cc216f9 100644
--- a/scripts/crosstool-NG.sh.in
+++ b/scripts/crosstool-NG.sh.in
@@ -164,9 +164,22 @@ CT_PREFIX_DIR="$( ${sed} -r -e 's:/+:/:g; s:/*$::;' <<<"${CT_PREFIX_DIR}" )"
# Put user-supplied flags at the end, so that they take precedence.
CT_TARGET_CFLAGS="${CT_ARCH_TARGET_CFLAGS} ${CT_TARGET_CFLAGS}"
CT_TARGET_LDFLAGS="${CT_ARCH_TARGET_LDFLAGS} ${CT_TARGET_LDFLAGS}"
+
+# FIXME move to gcc.sh
CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_CORE_EXTRA_CONFIG} "${CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY[@]}" )
CT_CC_GCC_EXTRA_CONFIG_ARRAY=( ${CT_ARCH_CC_EXTRA_CONFIG} "${CT_CC_GCC_EXTRA_CONFIG_ARRAY[@]}" )
+# Starting with 1.0.20, applications using uClibc-ng do not link with
+# the default libgcc_c_spec used by GCC if only static libc.a exists - unless
+# -static is thrown in. The difference is that with -static, gcc passes
+# "--start-group -lgcc -lc --end-group" and without -static, it passes
+# "-lgcc -lc -lgcc" instead. The latter leaves a symbol from 2nd libgcc
+# (dl_iterate_phdr) unresolved because -lc is already done at this point.
+# Force static link on the target.
+if [ "${CT_SHARED_LIBS}" != "y" ]; then
+ CT_TARGET_LDFLAGS+=" -static"
+fi
+
# Compute the package version string
if [ "${CT_SHOW_CT_VERSION}" = "y" ]; then
CT_PKGVERSION="crosstool-NG ${CT_VERSION}${CT_TOOLCHAIN_PKGVERSION:+ - ${CT_TOOLCHAIN_PKGVERSION}}"
diff --git a/scripts/functions b/scripts/functions
index f11ce23..b8b4913 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -318,10 +318,24 @@ CT_DoExecLog() {
local level="$1"
local cur_cmd
local ret
+ local cmd_seen
shift
+
(
for i in "$@"; do
- cur_cmd+="'${i}' "
+ case "${i}" in
+ *=*)
+ if [ -z "${cmd_seen}" ]; then
+ cur_cmd+=" ${i%%=*}='${i#*=}'"
+ else
+ cur_cmd+=" '${i}'"
+ fi
+ ;;
+ *)
+ cur_cmd+=" '${i}'"
+ cmd_seen=y
+ ;;
+ esac
done
while true; do
case "${1}" in
@@ -851,23 +865,33 @@ CT_EnvModify() {
# sample saving sequence.
CT_DoBuildTargetTuple() {
# Set the endianness suffix, and the default endianness gcc option
+ target_endian_eb=
+ target_endian_be=
+ target_endian_el=
+ target_endian_le=
case "${CT_ARCH_ENDIAN}" in
big)
target_endian_eb=eb
target_endian_be=be
- target_endian_el=
- target_endian_le=
CT_ARCH_ENDIAN_CFLAG="-mbig-endian"
CT_ARCH_ENDIAN_LDFLAG="-Wl,-EB"
;;
little)
- target_endian_eb=
- target_endian_be=
target_endian_el=el
target_endian_le=le
CT_ARCH_ENDIAN_CFLAG="-mlittle-endian"
CT_ARCH_ENDIAN_LDFLAG="-Wl,-EL"
;;
+ # big,little and little,big do not need to pass the flags;
+ # gcc is expected to be configured for that as default.
+ big,little)
+ target_endian_eb=eb
+ target_endian_be=be
+ ;;
+ little,big)
+ target_endian_el=el
+ target_endian_le=le
+ ;;
esac
# Set the bitness suffix
@@ -902,7 +926,7 @@ CT_DoBuildTargetTuple() {
# Set the default values for ARCH, ABI, CPU, TUNE, FPU and FLOAT
unset CT_ARCH_ARCH_CFLAG CT_ARCH_ABI_CFLAG CT_ARCH_CPU_CFLAG CT_ARCH_TUNE_CFLAG CT_ARCH_FPU_CFLAG CT_ARCH_FLOAT_CFLAG
- unset CT_ARCH_WITH_ARCH CT_ARCH_WITH_ABI CT_ARCH_WITH_CPU CT_ARCH_WITH_TUNE CT_ARCH_WITH_FPU CT_ARCH_WITH_FLOAT
+ unset CT_ARCH_WITH_ARCH CT_ARCH_WITH_ABI CT_ARCH_WITH_CPU CT_ARCH_WITH_TUNE CT_ARCH_WITH_FPU CT_ARCH_WITH_FLOAT CT_ARCH_WITH_ENDIAN
[ "${CT_ARCH_ARCH}" ] && { CT_ARCH_ARCH_CFLAG="-march=${CT_ARCH_ARCH}"; CT_ARCH_WITH_ARCH="--with-arch=${CT_ARCH_ARCH}"; }
[ "${CT_ARCH_ABI}" ] && { CT_ARCH_ABI_CFLAG="-mabi=${CT_ARCH_ABI}"; CT_ARCH_WITH_ABI="--with-abi=${CT_ARCH_ABI}"; }
[ "${CT_ARCH_CPU}" ] && { CT_ARCH_CPU_CFLAG="-mcpu=${CT_ARCH_CPU}"; CT_ARCH_WITH_CPU="--with-cpu=${CT_ARCH_CPU}"; }
@@ -924,6 +948,10 @@ CT_DoBuildTargetTuple() {
;;
esac
+ if [ "${CT_ARCH_SUPPORTS_WITH_ENDIAN}" = "y" ]; then
+ CT_ARCH_WITH_ENDIAN="--with-endian=${CT_ARCH_ENDIAN}"
+ fi
+
# Build the default kernel tuple part
CT_TARGET_KERNEL="${CT_KERNEL}"