[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v1 09/25] tests/tcg: don't iterate through other arch compilers
From: |
Alex Bennée |
Subject: |
[PATCH v1 09/25] tests/tcg: don't iterate through other arch compilers |
Date: |
Mon, 19 Apr 2021 15:54:19 +0100 |
There should only be one compiler per architecture. Those cases where
the same compiler can deal with a different architecture should be
explicitly set for both cross_cc and docker configurations. Otherwise
you get strangeness like:
--cross-cc-aarch64=/bin/false
causing the logic to attempt to use a locally available
arm-linux-gnueabihf-gcc rather than forcing the use of the docker
image which is what is implied by the command line option.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
tests/tcg/configure.sh | 148 ++++++++++++++++-------------------------
1 file changed, 59 insertions(+), 89 deletions(-)
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index 8b97cc9a19..bfe9619217 100755
--- a/tests/tcg/configure.sh
+++ b/tests/tcg/configure.sh
@@ -74,35 +74,6 @@ fi
for target in $target_list; do
arch=${target%%-*}
- case $arch in
- arm|armeb)
- arches=arm
- ;;
- aarch64|aarch64_be)
- arches="aarch64 arm"
- ;;
- mips*)
- arches=mips
- ;;
- ppc*)
- arches=ppc
- ;;
- sh4|sh4eb)
- arches=sh4
- ;;
- x86_64)
- arches="x86_64 i386"
- ;;
- xtensa|xtensaeb)
- arches=xtensa
- ;;
-
alpha|cris|hexagon|hppa|i386|lm32|microblaze|microblazeel|m68k|openrisc|riscv64|s390x|sh4|sparc64)
- arches=$target
- ;;
- *)
- continue
- ;;
- esac
container_image=
case $target in
@@ -235,70 +206,69 @@ for target in $target_list; do
echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
got_cross_cc=no
- for i in $arch $arches; do
- if eval test "x\${cross_cc_$i+yes}" != xyes; then
- continue
- fi
- eval "target_compiler=\${cross_cc_$i}"
- if ! has $target_compiler; then
- continue
- fi
- write_c_skeleton
- if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC
-static ; then
- # For host systems we might get away with building without -static
- if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE
$TMPC ; then
- continue
- fi
- echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak
- else
- echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak
- fi
- echo "CROSS_CC_GUEST=$target_compiler" >> $config_target_mak
+ if eval test "x\${cross_cc_$arch}" != xyes; then
+ eval "target_compiler=\${cross_cc_$arch}"
- # Test for compiler features for optional tests. We only do this
- # for cross compilers because ensuring the docker containers based
- # compilers is a requirememt for adding a new test that needs a
- # compiler feature.
- case $target in
- aarch64-*)
- if do_compiler "$target_compiler" $target_compiler_cflags \
- -march=armv8.1-a+sve -o $TMPE $TMPC; then
- echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
- fi
- if do_compiler "$target_compiler" $target_compiler_cflags \
- -march=armv8.3-a -o $TMPE $TMPC; then
- echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
- fi
- if do_compiler "$target_compiler" $target_compiler_cflags \
- -mbranch-protection=standard -o $TMPE $TMPC; then
- echo "CROSS_CC_HAS_ARMV8_BTI=y" >> $config_target_mak
- fi
- if do_compiler "$target_compiler" $target_compiler_cflags \
- -march=armv8.5-a+memtag -o $TMPE $TMPC; then
- echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
- fi
- ;;
- ppc*)
- if do_compiler "$target_compiler" $target_compiler_cflags \
- -mpower8-vector -o $TMPE $TMPC; then
- echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
- fi
- ;;
- i386-linux-user)
- if do_compiler "$target_compiler" $target_compiler_cflags \
- -Werror -fno-pie -o $TMPE $TMPC; then
- echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
- fi
- ;;
- esac
+ if has $target_compiler; then
+ write_c_skeleton
+ if ! do_compiler "$target_compiler" $target_compiler_cflags \
+ -o $TMPE $TMPC -static ; then
+ # For host systems we might get away with building without
-static
+ if do_compiler "$target_compiler" $target_compiler_cflags \
+ -o $TMPE $TMPC ; then
+ got_cross_cc=yes
+ echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak
+ echo "CROSS_CC_GUEST=$target_compiler" >> $config_target_mak
+ fi
+ else
+ got_cross_cc=yes
+ echo "CROSS_CC_GUEST_STATIC=y" >> $config_target_mak
+ echo "CROSS_CC_GUEST=$target_compiler" >> $config_target_mak
+ fi
+ fi
+ fi
- enabled_cross_compilers="$enabled_cross_compilers $target_compiler"
- got_cross_cc=yes
- break
- done
+ if test $got_cross_cc = yes; then
+ # Test for compiler features for optional tests. We only do this
+ # for cross compilers because ensuring the docker containers based
+ # compilers is a requirememt for adding a new test that needs a
+ # compiler feature.
- if test $got_cross_cc = no && test "$container" != no && test -n
"$container_image"; then
+ case $target in
+ aarch64-*)
+ if do_compiler "$target_compiler" $target_compiler_cflags \
+ -march=armv8.1-a+sve -o $TMPE $TMPC; then
+ echo "CROSS_CC_HAS_SVE=y" >> $config_target_mak
+ fi
+ if do_compiler "$target_compiler" $target_compiler_cflags \
+ -march=armv8.3-a -o $TMPE $TMPC; then
+ echo "CROSS_CC_HAS_ARMV8_3=y" >> $config_target_mak
+ fi
+ if do_compiler "$target_compiler" $target_compiler_cflags \
+ -mbranch-protection=standard -o $TMPE $TMPC; then
+ echo "CROSS_CC_HAS_ARMV8_BTI=y" >> $config_target_mak
+ fi
+ if do_compiler "$target_compiler" $target_compiler_cflags \
+ -march=armv8.5-a+memtag -o $TMPE $TMPC; then
+ echo "CROSS_CC_HAS_ARMV8_MTE=y" >> $config_target_mak
+ fi
+ ;;
+ ppc*)
+ if do_compiler "$target_compiler" $target_compiler_cflags \
+ -mpower8-vector -o $TMPE $TMPC; then
+ echo "CROSS_CC_HAS_POWER8_VECTOR=y" >> $config_target_mak
+ fi
+ ;;
+ i386-linux-user)
+ if do_compiler "$target_compiler" $target_compiler_cflags \
+ -Werror -fno-pie -o $TMPE $TMPC; then
+ echo "CROSS_CC_HAS_I386_NOPIE=y" >> $config_target_mak
+ fi
+ ;;
+ esac
+ elif test $got_cross_cc = no && test "$container" != no && \
+ test -n "$container_image"; then
for host in $container_hosts; do
if test "$host" = "$ARCH"; then
echo "DOCKER_IMAGE=$container_image" >> $config_target_mak
--
2.20.1
- Re: [PATCH v1 08/25] gitlab: add build-user-hexagon test, (continued)
- [PATCH v1 10/25] tests/docker: Added libbpf library to the docker files., Alex Bennée, 2021/04/19
- [PATCH v1 11/25] tests/tcg: Add docker_as and docker_ld cmds, Alex Bennée, 2021/04/19
- [PATCH v1 06/25] docker: Add Hexagon image, Alex Bennée, 2021/04/19
- [PATCH v1 09/25] tests/tcg: don't iterate through other arch compilers,
Alex Bennée <=
- [PATCH v1 14/25] tests/tcg/tricore: Add build infrastructure, Alex Bennée, 2021/04/19
- [PATCH v1 13/25] hw/tricore: Add testdevice for tests in tests/tcg/, Alex Bennée, 2021/04/19
- [PATCH v1 15/25] configure: Emit HOST_CC to config-host.mak, Alex Bennée, 2021/04/19
- [PATCH v1 18/25] tests/tcg/tricore: Add clz test, Alex Bennée, 2021/04/19
- [PATCH v1 17/25] tests/tcg/tricore: Add bmerge test, Alex Bennée, 2021/04/19
- [PATCH v1 21/25] tests/tcg/tricore: Add fmul test, Alex Bennée, 2021/04/19