summaryrefslogtreecommitdiff
path: root/scripts/build/arch
diff options
context:
space:
mode:
authorAlexey Neyman <stilor@att.net>2016-04-04 15:25:07 (GMT)
committerAlexey Neyman <stilor@att.net>2016-08-23 18:00:27 (GMT)
commitbf3eceb5d9b27fc65c819abe0b7f3cec704917e7 (patch)
treef78ed912cda90436d540e39c54cfe0153958943a /scripts/build/arch
parent0fdc1887a7426bf7974f0ca6bb24815dff4a2997 (diff)
uClibc: Split configuration tweaker into per-arch functions.
Signed-off-by: Alexey Neyman <stilor@att.net>
Diffstat (limited to 'scripts/build/arch')
-rw-r--r--scripts/build/arch/arm.sh19
-rw-r--r--scripts/build/arch/m68k.sh6
-rw-r--r--scripts/build/arch/microblaze.sh6
-rw-r--r--scripts/build/arch/mips.sh33
-rw-r--r--scripts/build/arch/powerpc.sh17
-rw-r--r--scripts/build/arch/sh.sh15
-rw-r--r--scripts/build/arch/sparc.sh7
-rw-r--r--scripts/build/arch/x86.sh30
-rw-r--r--scripts/build/arch/xtensa.sh6
9 files changed, 139 insertions, 0 deletions
diff --git a/scripts/build/arch/arm.sh b/scripts/build/arch/arm.sh
index 5f6ce2f..8af0072 100644
--- a/scripts/build/arch/arm.sh
+++ b/scripts/build/arch/arm.sh
@@ -39,3 +39,22 @@ CT_DoArchTupleValues() {
CT_TARGET_SYS="${CT_TARGET_SYS}hf"
fi
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ CT_DoArchUClibcSelectArch "${cfg}" "arm"
+
+ # FIXME: CONFIG_ARM_OABI does not exist in neither uClibc/uClibc-ng
+ # FIXME: CONFIG_ARM_EABI does not seem to affect anything in either of them, too
+ # (both check the compiler's built-in define, __ARM_EABI__ instead) except for
+ # a check for match between toolchain configuration and uClibc-ng in
+ # uClibc_arch_features.h
+ if [ "${CT_ARCH_ARM_EABI}" = "y" ]; then
+ CT_KconfigDisableOption "CONFIG_ARM_OABI" "${cfg}"
+ CT_KconfigEnableOption "CONFIG_ARM_EABI" "${cfg}"
+ else
+ CT_KconfigDisableOption "CONFIG_ARM_EABI" "${cfg}"
+ CT_KconfigEnableOption "CONFIG_ARM_OABI" "${cfg}"
+ fi
+}
diff --git a/scripts/build/arch/m68k.sh b/scripts/build/arch/m68k.sh
index 052e4a7..3cba76c 100644
--- a/scripts/build/arch/m68k.sh
+++ b/scripts/build/arch/m68k.sh
@@ -1 +1,7 @@
# Compute M68k-specific values
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ CT_DoArchUClibcSelectArch "${cfg}" "m68k"
+}
diff --git a/scripts/build/arch/microblaze.sh b/scripts/build/arch/microblaze.sh
index 456a6e3..e9d9811 100644
--- a/scripts/build/arch/microblaze.sh
+++ b/scripts/build/arch/microblaze.sh
@@ -19,3 +19,9 @@ CT_DoArchTupleValues () {
esac
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ CT_DoArchUClibcSelectArch "${cfg}" "microblaze"
+}
diff --git a/scripts/build/arch/mips.sh b/scripts/build/arch/mips.sh
index 4d732be..030e77b 100644
--- a/scripts/build/arch/mips.sh
+++ b/scripts/build/arch/mips.sh
@@ -14,3 +14,36 @@ CT_DoArchTupleValues() {
CT_ARCH_ABI_CFLAG="-mabi=${CT_ARCH_mips_ABI}"
CT_ARCH_WITH_ABI="--with-abi=${CT_ARCH_mips_ABI}"
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ CT_DoArchUClibcSelectArch "${cfg}" "${CT_ARCH}"
+
+ CT_KconfigDisableOption "CONFIG_MIPS_O32_ABI" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_MIPS_N32_ABI" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_MIPS_N64_ABI" "${cfg}"
+ case "${CT_ARCH_mips_ABI}" in
+ 32)
+ CT_KconfigEnableOption "CONFIG_MIPS_O32_ABI" "${cfg}"
+ ;;
+ n32)
+ CT_KconfigEnableOption "CONFIG_MIPS_N32_ABI" "${cfg}"
+ ;;
+ 64)
+ CT_KconfigEnableOption "CONFIG_MIPS_N64_ABI" "${cfg}"
+ ;;
+ esac
+
+ # FIXME: uClibc (!ng) allows to select ISA in the config; should
+ # match from the selected ARCH_ARCH level... For now, delete and
+ # fall back to default.
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_1" "${cfg}"
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_2" "${cfg}"
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_3" "${cfg}"
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_4" "${cfg}"
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_MIPS32" "${cfg}"
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_MIPS32R2" "${cfg}"
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_MIPS64" "${cfg}"
+ CT_KconfigDeleteOption "CONFIG_MIPS_ISA_MIPS64R2" "${cfg}"
+}
diff --git a/scripts/build/arch/powerpc.sh b/scripts/build/arch/powerpc.sh
index 8015724..52f3f8b 100644
--- a/scripts/build/arch/powerpc.sh
+++ b/scripts/build/arch/powerpc.sh
@@ -71,3 +71,20 @@ CT_DoArchMultilibTarget ()
# Set the target variable
eval ${target_var}=\"${target_}\"
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ CT_DoArchUClibcSelectArch "${cfg}" "powerpc"
+
+ CT_KconfigDisableOption "CONFIG_E500" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_CLASSIC" "${cfg}"
+ CT_KconfigDeleteOption "TARGET_SUBARCH" "${cfg}"
+ if [ "${CT_ARCH_powerpc_ABI}" = "spe" ]; then
+ CT_KconfigEnableOption "CONFIG_E500" "${cfg}"
+ CT_KconfigSetOption "TARGET_SUBARCH" "e500" "${cfg}"
+ else
+ CT_KconfigEnableOption "CONFIG_CLASSIC" "${cfg}"
+ CT_KconfigSetOption "TARGET_SUBARCH" "classic" "${cfg}"
+ fi
+}
diff --git a/scripts/build/arch/sh.sh b/scripts/build/arch/sh.sh
index 7780e40..101e4ce 100644
--- a/scripts/build/arch/sh.sh
+++ b/scripts/build/arch/sh.sh
@@ -35,3 +35,18 @@ CT_DoArchTupleValues () {
esac
CT_ARCH_FLOAT_CFLAG=
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ # FIXME: uclibc (!ng) seems to support sh64 (sh5), too
+ CT_DoArchUClibcSelectArch "${cfg}" "sh"
+ CT_KconfigDisableOption "CONFIG_SH3" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_SH4" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_SH4A" "${cfg}"
+ case "${CT_ARCH_SH_VARIAN}" in
+ sh3) CT_KconfigEnableOption "CONFIG_SH3" "${cfg}";;
+ sh4) CT_KconfigEnableOption "CONFIG_SH4" "${cfg}";;
+ sh4a) CT_KconfigEnableOption "CONFIG_SH4A" "${cfg}";;
+ esac
+}
diff --git a/scripts/build/arch/sparc.sh b/scripts/build/arch/sparc.sh
index 15213a6..74f6f78 100644
--- a/scripts/build/arch/sparc.sh
+++ b/scripts/build/arch/sparc.sh
@@ -70,3 +70,10 @@ CT_DoArchGlibcAdjustTuple() {
# Set the target variable
eval ${target_var}=\"${target_}\"
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ CT_DoArchUClibcSelectArch "${cfg}" "${CT_ARCH}"
+ # FIXME: select CONFIG_SPARC_V7/V8/V9/V9B according to the CPU selector
+}
diff --git a/scripts/build/arch/x86.sh b/scripts/build/arch/x86.sh
index 5147678..4193278 100644
--- a/scripts/build/arch/x86.sh
+++ b/scripts/build/arch/x86.sh
@@ -100,3 +100,33 @@ CT_DoArchGlibcAdjustTuple() {
# Set the target variable
eval ${target_var}=\"${target_}\"
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ if [ "${CT_ARCH_BITNESS}" = 64 ]; then
+ CT_DoArchUClibcSelectArch "${cfg}" "x86_64"
+ else
+ CT_DoArchUClibcSelectArch "${cfg}" "i386"
+ fi
+
+ # FIXME This doesn't cover all cases of x86_32 on uClibc (!ng)
+ CT_KconfigDisableOption "CONFIG_386" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_486" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_586" "${cfg}"
+ CT_KconfigDisableOption "CONFIG_686" "${cfg}"
+ case ${CT_TARGET_ARCH} in
+ i386)
+ CT_KconfigEnableOption "CONFIG_386" "${cfg}"
+ ;;
+ i486)
+ CT_KconfigEnableOption "CONFIG_486" "${cfg}"
+ ;;
+ i586)
+ CT_KconfigEnableOption "CONFIG_586" "${cfg}"
+ ;;
+ i686)
+ CT_KconfigEnableOption "CONFIG_686" "${cfg}"
+ ;;
+ esac
+}
diff --git a/scripts/build/arch/xtensa.sh b/scripts/build/arch/xtensa.sh
index c7bd432..a3010c6 100644
--- a/scripts/build/arch/xtensa.sh
+++ b/scripts/build/arch/xtensa.sh
@@ -70,3 +70,9 @@ CT_ConfigureXtensa() {
CT_Popd
}
+
+CT_DoArchUClibcConfig() {
+ local cfg="${1}"
+
+ CT_DoArchUClibcSelectArch "${cfg}" "xtensa"
+}