[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 08/29] tests/tcg: don't iterate through other arch compilers
From: |
Alex Bennée |
Subject: |
[PULL v2 08/29] tests/tcg: don't iterate through other arch compilers |
Date: |
Tue, 18 May 2021 10:06:59 +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>
Message-Id: <20210512102051.12134-10-alex.bennee@linaro.org>
diff --git a/tests/tcg/configure.sh b/tests/tcg/configure.sh
index cf6062a15f..e6c1be5450 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|microblaze|microblazeel|m68k|openrisc|riscv64|s390x|sh4|sparc64)
- arches=$target
- ;;
- *)
- continue
- ;;
- esac
container_image=
case $target in
@@ -236,70 +207,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
- [PULL v2 01/29] tests/docker: fix copying of executable in "update", (continued)
- [PULL v2 01/29] tests/docker: fix copying of executable in "update", Alex Bennée, 2021/05/18
- [PULL v2 02/29] tests/docker: make executable an optional argument to "update", Alex Bennée, 2021/05/18
- [PULL v2 03/29] tests/docker: allow "update" to add the current user, Alex Bennée, 2021/05/18
- [PULL v2 04/29] tests/docker: add "fetch" sub-command, Alex Bennée, 2021/05/18
- [PULL v2 06/29] tests/tcg: Use Hexagon Docker image, Alex Bennée, 2021/05/18
- [PULL v2 09/29] tests/docker: Added libbpf library to the docker files., Alex Bennée, 2021/05/18
- [PULL v2 13/29] tests/tcg/tricore: Add build infrastructure, Alex Bennée, 2021/05/18
- [PULL v2 10/29] tests/tcg: Add docker_as and docker_ld cmds, Alex Bennée, 2021/05/18
- [PULL v2 05/29] docker: Add Hexagon image, Alex Bennée, 2021/05/18
- [PULL v2 07/29] gitlab: add build-user-hexagon test, Alex Bennée, 2021/05/18
- [PULL v2 08/29] tests/tcg: don't iterate through other arch compilers,
Alex Bennée <=
- [PULL v2 12/29] hw/tricore: Add testdevice for tests in tests/tcg/, Alex Bennée, 2021/05/18
- [PULL v2 11/29] tests/tcg: Run timeout cmds using --foreground, Alex Bennée, 2021/05/18
- [PULL v2 16/29] tests/tcg/tricore: Add bmerge test, Alex Bennée, 2021/05/18
- [PULL v2 15/29] tests/tcg/tricore: Add macros to create tests and first test 'abs', Alex Bennée, 2021/05/18
- [PULL v2 19/29] tests/tcg/tricore: Add fadd test, Alex Bennée, 2021/05/18
- [PULL v2 26/29] tests/tcg/ppc64le: tests for brh/brw/brd, Alex Bennée, 2021/05/18
- [PULL v2 28/29] tests/tcg: don't allow clang as a cross compiler, Alex Bennée, 2021/05/18
- [PULL v2 25/29] tests/docker: gcc-10 based images for ppc64{, le} tests, Alex Bennée, 2021/05/18
- [PULL v2 18/29] tests/tcg/tricore: Add dvstep test, Alex Bennée, 2021/05/18
- [PULL v2 24/29] tests/tcg/tricore: Add muls test, Alex Bennée, 2021/05/18