You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
238 lines
4.5 KiB
238 lines
4.5 KiB
#!/bin/bash
|
|
# Copyright 1999-2021 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=7
|
|
source tests-common.sh || exit
|
|
|
|
inherit toolchain-funcs
|
|
|
|
#
|
|
# TEST: tc-arch-kernel
|
|
#
|
|
test-tc-arch-kernel() {
|
|
local ret=0
|
|
KV=$1 ; shift
|
|
for CHOST in "$@" ; do
|
|
exp=${CHOST##*:}
|
|
CHOST=${CHOST%%:*}
|
|
actual=$(tc-arch-kernel)
|
|
|
|
if [[ ${actual} != ${exp:-${CHOST}} ]] ; then
|
|
eerror "Failure for CHOST: ${CHOST} Expected: ${exp} != Actual: ${actual}"
|
|
((++ret))
|
|
fi
|
|
done
|
|
return ${ret}
|
|
}
|
|
tbegin "tc-arch-kernel() (KV=2.6.30)"
|
|
test-tc-arch-kernel 2.6.30 \
|
|
i{3..6}86:x86 x86_64:x86 \
|
|
powerpc{,64}:powerpc i{3..6}86-gentoo-freebsd:i386 \
|
|
or1k:openrisc or1k-linux-musl:openrisc
|
|
tend $?
|
|
|
|
#
|
|
# TEST: tc-arch
|
|
#
|
|
tbegin "tc-arch"
|
|
ret=0
|
|
for CHOST in \
|
|
alpha arm{,eb}:arm avr32:avr bfin cris hppa i{3..6}86:x86 ia64 m68k \
|
|
mips{,eb}:mips nios2 powerpc:ppc powerpc64:ppc64 s390{,x}:s390 \
|
|
sh{1..4}{,eb}:sh sparc{,64}:sparc vax x86_64:amd64
|
|
do
|
|
exp=${CHOST##*:}
|
|
CHOST=${CHOST%%:*}
|
|
actual=$(tc-arch)
|
|
|
|
if [[ ${actual} != ${exp:-${CHOST}} ]] ; then
|
|
eerror "Failure for CHOST: ${CHOST} Expected: ${exp} != Actual: ${actual}"
|
|
: $((++ret))
|
|
fi
|
|
done
|
|
tend ${ret}
|
|
|
|
#
|
|
# TEST: tc-ld-is-gold
|
|
#
|
|
tbegin "tc-ld-is-gold (ld=bfd cc=bfd)"
|
|
LD=ld.bfd LDFLAGS=-fuse-ld=bfd tc-ld-is-gold && ret=1 || ret=0
|
|
tend ${ret}
|
|
|
|
if type -P ld.gold &>/dev/null; then
|
|
tbegin "tc-ld-is-gold (ld=gold cc=default)"
|
|
LD=ld.gold tc-ld-is-gold
|
|
ret=$?
|
|
tend ${ret}
|
|
|
|
tbegin "tc-ld-is-gold (ld=gold cc=bfd)"
|
|
LD=ld.gold LDFLAGS=-fuse-ld=bfd tc-ld-is-gold
|
|
ret=$?
|
|
tend ${ret}
|
|
|
|
tbegin "tc-ld-is-gold (ld=bfd cc=gold)"
|
|
LD=ld.bfd LDFLAGS=-fuse-ld=gold tc-ld-is-gold
|
|
ret=$?
|
|
tend ${ret}
|
|
fi
|
|
|
|
#
|
|
# TEST: tc-ld-disable-gold
|
|
#
|
|
tbegin "tc-ld-disable-gold (bfd selected)"
|
|
(
|
|
export LD=ld.bfd LDFLAGS=-fuse-ld=bfd
|
|
ewarn() { :; }
|
|
tc-ld-disable-gold
|
|
[[ ${LD} == "ld.bfd" && ${LDFLAGS} == "-fuse-ld=bfd" ]]
|
|
)
|
|
tend $?
|
|
|
|
if type -P ld.gold &>/dev/null; then
|
|
tbegin "tc-ld-disable-gold (ld=gold)"
|
|
(
|
|
export LD=ld.gold LDFLAGS=
|
|
ewarn() { :; }
|
|
tc-ld-disable-gold
|
|
[[ ${LD} == "ld.bfd" || ${LDFLAGS} == *"-fuse-ld=bfd"* ]]
|
|
)
|
|
tend $?
|
|
|
|
tbegin "tc-ld-disable-gold (cc=gold)"
|
|
(
|
|
export LD= LDFLAGS="-fuse-ld=gold"
|
|
ewarn() { :; }
|
|
tc-ld-disable-gold
|
|
[[ ${LD} == *"/ld.bfd" || ${LDFLAGS} == "-fuse-ld=gold -fuse-ld=bfd" ]]
|
|
)
|
|
tend $?
|
|
fi
|
|
|
|
unset CPP
|
|
|
|
tbegin "tc-get-compiler-type (gcc)"
|
|
(
|
|
export CC=gcc
|
|
[[ $(tc-get-compiler-type) == gcc ]]
|
|
)
|
|
tend $?
|
|
|
|
tbegin "tc-is-gcc (gcc)"
|
|
(
|
|
export CC=gcc
|
|
tc-is-gcc
|
|
)
|
|
tend $?
|
|
|
|
tbegin "! tc-is-clang (gcc)"
|
|
(
|
|
export CC=gcc
|
|
! tc-is-clang
|
|
)
|
|
tend $?
|
|
|
|
if type -P clang &>/dev/null; then
|
|
tbegin "tc-get-compiler-type (clang)"
|
|
(
|
|
export CC=clang
|
|
[[ $(tc-get-compiler-type) == clang ]]
|
|
)
|
|
tend $?
|
|
|
|
tbegin "! tc-is-gcc (clang)"
|
|
(
|
|
export CC=clang
|
|
! tc-is-gcc
|
|
)
|
|
tend $?
|
|
|
|
tbegin "tc-is-clang (clang)"
|
|
(
|
|
export CC=clang
|
|
tc-is-clang
|
|
)
|
|
tend $?
|
|
fi
|
|
|
|
if type -P pathcc &>/dev/null; then
|
|
tbegin "tc-get-compiler-type (pathcc)"
|
|
(
|
|
export CC=pathcc
|
|
[[ $(tc-get-compiler-type) == pathcc ]]
|
|
)
|
|
tend $?
|
|
|
|
tbegin "! tc-is-gcc (pathcc)"
|
|
(
|
|
export CC=pathcc
|
|
! tc-is-gcc
|
|
)
|
|
tend $?
|
|
|
|
tbegin "! tc-is-clang (pathcc)"
|
|
(
|
|
export CC=pathcc
|
|
! tc-is-clang
|
|
)
|
|
tend $?
|
|
fi
|
|
|
|
for compiler in gcc clang not-really-a-compiler; do
|
|
if type -P ${compiler} &>/dev/null; then
|
|
tbegin "tc-cpp-is-true ($compiler, defined)"
|
|
(
|
|
export CC=${compiler}
|
|
tc-cpp-is-true "defined(SOME_DEFINED_SYMBOL)" -DSOME_DEFINED_SYMBOL
|
|
)
|
|
tend $?
|
|
tbegin "tc-cpp-is-true ($compiler, not defined)"
|
|
(
|
|
export CC=${compiler}
|
|
! tc-cpp-is-true "defined(SOME_UNDEFINED_SYMBOL)"
|
|
)
|
|
tend $?
|
|
|
|
tbegin "tc-cpp-is-true ($compiler, defined on -ggdb3)"
|
|
(
|
|
export CC=${compiler}
|
|
tc-cpp-is-true "defined(SOME_DEFINED_SYMBOL)" -DSOME_DEFINED_SYMBOL -ggdb3
|
|
)
|
|
tend $?
|
|
fi
|
|
done
|
|
|
|
if type -P gcc &>/dev/null; then
|
|
tbegin "tc-get-cxx-stdlib (gcc)"
|
|
[[ $(CXX=g++ tc-get-cxx-stdlib) == libstdc++ ]]
|
|
tend $?
|
|
|
|
tbegin "tc-get-c-rtlib (gcc)"
|
|
[[ $(CC=gcc tc-get-c-rtlib) == libgcc ]]
|
|
tend $?
|
|
fi
|
|
|
|
if type -P clang &>/dev/null; then
|
|
for stdlib in libc++ libstdc++; do
|
|
if clang++ -stdlib=${stdlib} -x c++ -E -P - &>/dev/null \
|
|
<<<'#include <ciso646>'
|
|
then
|
|
tbegin "tc-get-cxx-stdlib (clang, ${stdlib})"
|
|
[[ $(CXX=clang++ CXXFLAGS="-stdlib=${stdlib}" tc-get-cxx-stdlib) == ${stdlib} ]]
|
|
tend $?
|
|
fi
|
|
done
|
|
|
|
tbegin "tc-get-cxx-stdlib (clang, invalid)"
|
|
! CXX=clang++ CXXFLAGS="-stdlib=invalid" tc-get-cxx-stdlib
|
|
tend $?
|
|
|
|
for rtlib in compiler-rt libgcc; do
|
|
tbegin "tc-get-c-rtlib (clang, ${rtlib})"
|
|
[[ $(CC=clang CFLAGS="--rtlib=${rtlib}" tc-get-c-rtlib) == ${rtlib} ]]
|
|
tend $?
|
|
done
|
|
fi
|
|
|
|
texit
|