mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2025-01-30 16:14:09 +00:00
Use the new SuperH fixes in the two multilib samples
- Glibc configure args and tuple need adjustment on SuperH - Only allow "both endian" and "with CPU" for unspecified arch variant. May reconsider endianness (was breaking things before adjusting glibc tuple) - Retire non-multilib sample, it should be a subset of the multilib one now. Signed-off-by: Alexey Neyman <stilor@att.net>
This commit is contained in:
parent
1e4eeb5c3b
commit
602304b230
@ -4,10 +4,9 @@
|
|||||||
## select ARCH_DEFAULT_32
|
## select ARCH_DEFAULT_32
|
||||||
## select ARCH_USE_MMU
|
## select ARCH_USE_MMU
|
||||||
## select ARCH_SUPPORTS_EITHER_ENDIAN
|
## select ARCH_SUPPORTS_EITHER_ENDIAN
|
||||||
## select ARCH_DEFAULT_LE_BE
|
## select ARCH_DEFAULT_LE
|
||||||
## select ARCH_REQUIRES_MULTILIB
|
## select ARCH_REQUIRES_MULTILIB
|
||||||
## select ARCH_SUPPORTS_WITH_ENDIAN
|
## select ARCH_SUPPORTS_WITH_ENDIAN
|
||||||
## select ARCH_SUPPORTS_WITH_CPU
|
|
||||||
##
|
##
|
||||||
## help The Super-H architecture, as defined by:
|
## 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/
|
## help http://www.renesas.com/fmwk.jsp?cnt=superh_family_landing.jsp&fp=/products/mpumcu/superh_family/
|
||||||
@ -23,6 +22,7 @@ config ARCH_SH_SH
|
|||||||
bool
|
bool
|
||||||
prompt "unspecified"
|
prompt "unspecified"
|
||||||
select ARCH_SUPPORTS_BOTH_ENDIAN
|
select ARCH_SUPPORTS_BOTH_ENDIAN
|
||||||
|
select ARCH_SUPPORTS_WITH_CPU
|
||||||
help
|
help
|
||||||
If left unspecified, GCC will determine the set of multilibs to compile automatically
|
If left unspecified, GCC will determine the set of multilibs to compile automatically
|
||||||
based on selected endianness, FPU mode and OS.
|
based on selected endianness, FPU mode and OS.
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
CT_ARCH_SH=y
|
CT_ARCH_SH=y
|
||||||
CT_ARCH_SH_SH4=y
|
CT_ARCH_CPU="sh4"
|
||||||
|
CT_ARCH_LE_BE=y
|
||||||
CT_TARGET_VENDOR="multilib"
|
CT_TARGET_VENDOR="multilib"
|
||||||
CT_KERNEL_LINUX=y
|
CT_KERNEL_LINUX=y
|
||||||
CT_BINUTILS_PLUGINS=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_CC_LANG_CXX=y
|
||||||
CT_DEBUG_GDB=y
|
CT_DEBUG_GDB=y
|
||||||
# CT_GDB_CROSS_PYTHON is not set
|
# CT_GDB_CROSS_PYTHON is not set
|
@ -1,10 +1,11 @@
|
|||||||
CT_ARCH_SH=y
|
CT_ARCH_SH=y
|
||||||
CT_ARCH_SH_SH4=y
|
CT_ARCH_CPU="sh4"
|
||||||
|
CT_ARCH_LE_BE=y
|
||||||
CT_TARGET_VENDOR="multilib"
|
CT_TARGET_VENDOR="multilib"
|
||||||
CT_KERNEL_LINUX=y
|
CT_KERNEL_LINUX=y
|
||||||
CT_BINUTILS_PLUGINS=y
|
CT_BINUTILS_PLUGINS=y
|
||||||
CT_LIBC_UCLIBC=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_CC_LANG_CXX=y
|
||||||
CT_DEBUG_GDB=y
|
CT_DEBUG_GDB=y
|
||||||
# CT_GDB_CROSS_PYTHON is not set
|
# CT_GDB_CROSS_PYTHON is not set
|
@ -1,4 +1,5 @@
|
|||||||
CT_ARCH_SH=y
|
CT_ARCH_SH=y
|
||||||
|
CT_ARCH_LE_BE=y
|
||||||
CT_BINUTILS_PLUGINS=y
|
CT_BINUTILS_PLUGINS=y
|
||||||
CT_CC_LANG_CXX=y
|
CT_CC_LANG_CXX=y
|
||||||
CT_GETTEXT=y
|
CT_GETTEXT=y
|
||||||
|
@ -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
|
|
@ -1,3 +0,0 @@
|
|||||||
reporter_name="YEM"
|
|
||||||
reporter_url="http://ymorin.is-a-geek.org/"
|
|
||||||
reporter_comment="EXPERIMENTAL Super-H sh4 sample."
|
|
@ -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
|
# Helper for uClibc configurators: select the architecture
|
||||||
# Usage: CT_DoArchUClibcSelectArch <config-file> <architecture>
|
# Usage: CT_DoArchUClibcSelectArch <config-file> <architecture>
|
||||||
CT_DoArchUClibcSelectArch() {
|
CT_DoArchUClibcSelectArch() {
|
||||||
|
@ -15,14 +15,14 @@ CT_DoArchTupleValues () {
|
|||||||
CT_ARCH_FLOAT_CFLAG=
|
CT_ARCH_FLOAT_CFLAG=
|
||||||
case "${CT_ARCH_SH_VARIANT}" in
|
case "${CT_ARCH_SH_VARIANT}" in
|
||||||
sh3) CT_ARCH_ARCH_CFLAG=-m3;;
|
sh3) CT_ARCH_ARCH_CFLAG=-m3;;
|
||||||
sh4*)
|
sh4*|sh2*)
|
||||||
# softfp is not possible for SuperH, no need to test for it.
|
# softfp is not possible for SuperH, no need to test for it.
|
||||||
case "${CT_ARCH_FLOAT}" in
|
case "${CT_ARCH_FLOAT}" in
|
||||||
hard)
|
hard)
|
||||||
CT_ARCH_ARCH_CFLAG="-m4${CT_ARCH_SH_VARIANT##sh4}"
|
CT_ARCH_ARCH_CFLAG="-m${CT_ARCH_SH_VARIANT##sh}"
|
||||||
;;
|
;;
|
||||||
soft)
|
soft)
|
||||||
CT_ARCH_ARCH_CFLAG="-m4${CT_ARCH_SH_VARIANT##sh4}-nofpu"
|
CT_ARCH_ARCH_CFLAG="-m${CT_ARCH_SH_VARIANT##sh}-nofpu"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
@ -38,13 +38,19 @@ CT_DoArchMultilibList() {
|
|||||||
# the default CPU. E.g. if configuring for sh4-*-*, we need to remove
|
# the default CPU. E.g. if configuring for sh4-*-*, we need to remove
|
||||||
# "sh4" or "m4" from the multilib list. Otherwise, the resulting compiler
|
# "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 ..."
|
# 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=,
|
IFS=,
|
||||||
for x in ${CT_CC_GCC_MULTILIB_LIST}; do
|
for x in ${CT_CC_GCC_MULTILIB_LIST}; do
|
||||||
if [ "${x}" = "${CT_ARCH_SH_VARIANT}" -o "sh${x#m}" = "${CT_ARCH_SH_VARIANT}" ]; then
|
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"
|
CT_DoLog WARN "Ignoring '${x}' in multilib list: it is the default multilib"
|
||||||
continue
|
continue
|
||||||
fi
|
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}"
|
new="${new:+${new},}${x}"
|
||||||
done
|
done
|
||||||
IFS="${save_ifs}"
|
IFS="${save_ifs}"
|
||||||
@ -52,15 +58,110 @@ CT_DoArchMultilibList() {
|
|||||||
CT_DoLog DEBUG "Adjusted CT_CC_GCC_MULTILIB_LIST to '${CT_CC_GCC_MULTILIB_LIST}'"
|
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() {
|
CT_DoArchUClibcConfig() {
|
||||||
local cfg="${1}"
|
local cfg="${1}"
|
||||||
|
|
||||||
# FIXME: uclibc (!ng) seems to support sh64 (sh5), too
|
|
||||||
CT_DoArchUClibcSelectArch "${cfg}" "sh"
|
CT_DoArchUClibcSelectArch "${cfg}" "sh"
|
||||||
|
CT_KconfigDisableOption "CONFIG_SH2" "${cfg}"
|
||||||
|
CT_KconfigDisableOption "CONFIG_SH2A" "${cfg}"
|
||||||
CT_KconfigDisableOption "CONFIG_SH3" "${cfg}"
|
CT_KconfigDisableOption "CONFIG_SH3" "${cfg}"
|
||||||
CT_KconfigDisableOption "CONFIG_SH4" "${cfg}"
|
CT_KconfigDisableOption "CONFIG_SH4" "${cfg}"
|
||||||
CT_KconfigDisableOption "CONFIG_SH4A" "${cfg}"
|
CT_KconfigDisableOption "CONFIG_SH4A" "${cfg}"
|
||||||
case "${CT_ARCH_SH_VARIANT}" in
|
case "${CT_ARCH_SH_VARIANT}" in
|
||||||
|
sh2) CT_KconfigEnableOption "CONFIG_SH2" "${cfg}";;
|
||||||
|
sh2a) CT_KconfigEnableOption "CONFIG_SH2A" "${cfg}";;
|
||||||
sh3) CT_KconfigEnableOption "CONFIG_SH3" "${cfg}";;
|
sh3) CT_KconfigEnableOption "CONFIG_SH3" "${cfg}";;
|
||||||
sh4) CT_KconfigEnableOption "CONFIG_SH4" "${cfg}";;
|
sh4) CT_KconfigEnableOption "CONFIG_SH4" "${cfg}";;
|
||||||
sh4a) CT_KconfigEnableOption "CONFIG_SH4A" "${cfg}";;
|
sh4a) CT_KconfigEnableOption "CONFIG_SH4A" "${cfg}";;
|
||||||
|
@ -86,7 +86,7 @@ CT_DoArchGlibcAdjustTuple() {
|
|||||||
# x86 quirk: architecture name is i386, but glibc expects i[4567]86 - to
|
# 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,
|
# 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
|
# 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.
|
# conservative choice, i486.
|
||||||
i386-*)
|
i386-*)
|
||||||
if [ "${CT_TARGET_ARCH}" = "x86_64" ]; then
|
if [ "${CT_TARGET_ARCH}" = "x86_64" ]; then
|
||||||
|
@ -211,6 +211,7 @@ do_libc_backend_once() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
CT_DoArchGlibcAdjustConfigure extra_config "${glibc_cflags}"
|
||||||
|
|
||||||
# ./configure is mislead by our tools override wrapper for bash
|
# ./configure is mislead by our tools override wrapper for bash
|
||||||
# so just tell it where the real bash is _on_the_target_!
|
# so just tell it where the real bash is _on_the_target_!
|
||||||
|
Loading…
x
Reference in New Issue
Block a user