mirror of https://gitee.com/openkylin/qemu.git
tests/tcg: don't iterate through other arch compilers
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>
This commit is contained in:
parent
910c40ee94
commit
d8e706da6c
|
@ -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
|
||||
if eval test "x\${cross_cc_$arch}" != xyes; then
|
||||
eval "target_compiler=\${cross_cc_$arch}"
|
||||
|
||||
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
|
||||
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
|
||||
fi
|
||||
|
||||
# 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 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.
|
||||
|
||||
enabled_cross_compilers="$enabled_cross_compilers $target_compiler"
|
||||
got_cross_cc=yes
|
||||
break
|
||||
done
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue