Alexey Neyman 3ebc5d0c1e libc/*.sh: Deprecate libc_check_config step.
This step was only used in uClibc. However, with upcoming multilib, the
config management will have to be done for each variant differently,
anyway.

uClibc was the only user of libc_check_config step, as well as
CT_CONFIG_DIR directory. Retire these.

Two other clean-ups in uClibc.sh:
- KERNEL_HEADERS check seems to be bogus, this config option is not
  present even in 0.9.30 - which is not supported already.
- SHARED_LIB_LOADER_PREFIX was renamed to MULTILIB_DIR in 0.9.31,
  according to ChangeLog - and MULTILIB_DIR is passed from command line
  instead.

Signed-off-by: Alexey Neyman <stilor@att.net>
2016-08-23 11:00:27 -07:00

71 lines
2.2 KiB
Bash

# Compute powerpc-specific values
CT_DoArchTupleValues () {
# The architecture part of the tuple
CT_TARGET_ARCH="powerpc${target_bits_64}${target_endian_le}${CT_ARCH_SUFFIX}"
# Only override values when ABI is not the default
case "${CT_ARCH_powerpc_ABI}" in
eabi)
# EABI is only for bare-metal, so libc ∈ [none,newlib]
CT_TARGET_SYS="eabi"
;;
spe)
case "${CT_LIBC}" in
none|newlib) CT_TARGET_SYS="spe";;
*glibc) CT_TARGET_SYS="gnuspe";;
uClibc) CT_TARGET_SYS="uclibcgnuspe";;
esac
;;
esac
# Add extra flags for SPE if needed
if [ "${CT_ARCH_powerpc_ABI_SPE}" = "y" ]; then
CT_ARCH_TARGET_CFLAGS="-mabi=spe -mspe"
CT_ARCH_CC_CORE_EXTRA_CONFIG="--enable-e500_double"
CT_ARCH_CC_EXTRA_CONFIG="--enable-e500_double"
fi
}
#------------------------------------------------------------------------------
# Get multilib architecture-specific target
# Usage: CT_DoArchMultilibTarget "multilib flags" "target tuple"
CT_DoArchMultilibTarget ()
{
local target="${1}"; shift
local -a multi_flags=( "$@" )
local m32=false
local m64=false
local mlittle=false
local mbig=false
for m in "${multi_flags[@]}"; do
case "$m" in
-m32) m32=true ;;
-m64) m64=true ;;
-mbig) mbig=true ;;
-mlittle) mlittle=true ;;
esac
done
# Fix up bitness
case "${target}" in
powerpc-*) $m64 && target=${target/#powerpc-/powerpc64-} ;;
powerpcle-*) $m64 && target=${target/#powerpcle-/powerpc64le-} ;;
powerpc64-*) $m32 && target=${target/#powerpc64-/powerpc-} ;;
powerpc64le-*) $m32 && target=${target/#powerpc64le-/powerpcle-} ;;
esac
# Fix up endianness
case "${target}" in
powerpc-*) $mlittle && target=${target/#powerpc-/powerpcle-} ;;
powerpcle-*) $mbig && target=${target/#powerpcle-/powerpc-} ;;
powerpc64-*) $mlittle && target=${target/#powerpc64-/powerpc64le-} ;;
powerpc64le-*) $mbig && target=${target/#powerpc64le-/powerpc64-} ;;
esac
# return the target
echo "${target}"
}