mirror of
https://github.com/crosstool-ng/crosstool-ng.git
synced 2024-12-30 09:38:52 +00:00
842915db44
The generated sysnum.h is different for o32/n32/64 ABIs. This needs to be revisited; either do this for all architecutres or perhaps, compare the headers for various multilibs and combine them if the are identical. Signed-off-by: Alexey Neyman <stilor@att.net>
102 lines
3.7 KiB
Bash
102 lines
3.7 KiB
Bash
# Compute MIPS-specific values
|
|
|
|
CT_DoArchTupleValues() {
|
|
# The architecture part of the tuple
|
|
CT_TARGET_ARCH="${CT_ARCH}${target_bits_64}${CT_ARCH_SUFFIX:-${target_endian_el}}"
|
|
|
|
# Override CFLAGS for endianness:
|
|
case "${CT_ARCH_ENDIAN}" in
|
|
big) CT_ARCH_ENDIAN_CFLAG="-EB";;
|
|
little) CT_ARCH_ENDIAN_CFLAG="-EL";;
|
|
esac
|
|
|
|
# Override ABI flags
|
|
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}"
|
|
}
|
|
|
|
CT_DoArchUClibcHeaderDir() {
|
|
local dir_var="${1}"
|
|
local cflags="${2}"
|
|
|
|
# If it is non-default multilib, add a suffix with architecture (reported by gcc)
|
|
# to the headers installation path.
|
|
if [ -n "${cflags}" ]; then
|
|
eval "${dir_var}="$( ${CT_TARGET}-${CT_CC} -print-multiarch ${cflags} )
|
|
fi
|
|
}
|
|
|
|
CT_DoArchUClibcCflags() {
|
|
local cfg="${1}"
|
|
local cflags="${2}"
|
|
local f
|
|
|
|
for f in ${cflags}; do
|
|
case "${f}" in
|
|
-mabi=*)
|
|
CT_KconfigDisableOption "CONFIG_MIPS_O32_ABI" "${cfg}"
|
|
CT_KconfigDisableOption "CONFIG_MIPS_N32_ABI" "${cfg}"
|
|
CT_KconfigDisableOption "CONFIG_MIPS_N64_ABI" "${cfg}"
|
|
case "${f#-mabi=}" 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}";;
|
|
*) CT_Abort "Unsupported ABI: ${f#-mabi=}";;
|
|
esac
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
CT_DoArchMUSLPostInstall() {
|
|
# GDB and MUSL maintainers seem to disagree on whether <sgidefs.h>
|
|
# is to be provided as a part of C library. GDB guys think it is
|
|
# a C library responsibility, while MUSL authors think GDB should
|
|
# not be using <sgidefs.h>. Neither side is willing to reach out
|
|
# to the other and negotiate the needed changes, and I don't want
|
|
# to play the middle man. Hence, provide our own wrapper for
|
|
# for <sgidefs.h> - the only solution short of telling MUSL users
|
|
# stop using it. This is why MUSL is experimental in ct-ng and
|
|
# will likely remain in that status.
|
|
# References:
|
|
# http://www.openwall.com/lists/musl/2017/01/26/2
|
|
# https://sourceware.org/ml/gdb-patches/2017-01/msg00469.html
|
|
# https://www.sourceware.org/ml/libc-alpha/2004-11/msg00034.html
|
|
if [ ! -r "${CT_HEADERS_DIR}/sgidefs.h" ]; then
|
|
echo "#include <asm/sgidefs.h> // Redirected by ct-ng" > "${CT_HEADERS_DIR}/sgidefs.h"
|
|
fi
|
|
}
|