Skip to content

Commit

Permalink
tests/tcg: invoke Makefile.target directly from QEMU's makefile
Browse files Browse the repository at this point in the history
Build the "docker.py cc" invocation directly in tests/tcg/configure.sh, and
remove the Makefile.qemu wrapper around Makefile.target.  The config-*.mak
files now include the actual variables used when building the tests, rather
than the CROSS_* variables that Makefile.qemu used to "translate".

This is a first step towards generalizing the cross-compilation infrastructure
so that it can be used for firmware as well.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <20220401141326.1244422-15-pbonzini@redhat.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220419091020.3008144-18-alex.bennee@linaro.org>
  • Loading branch information
bonzini authored and stsquad committed Apr 20, 2022
1 parent 5377a10 commit eebf199
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 146 deletions.
40 changes: 21 additions & 19 deletions tests/Makefile.include
Expand Up @@ -48,25 +48,27 @@ RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TCG_TESTS_TARGETS))
$(foreach TARGET,$(TCG_TESTS_TARGETS), \
$(eval $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak: config-host.mak))

$(BUILD_TCG_TARGET_RULES): build-tcg-tests-%: $(if $(CONFIG_PLUGIN),test-plugins)
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
-f $(SRC_PATH)/tests/tcg/Makefile.qemu \
SRC_PATH=$(SRC_PATH) \
V="$(V)" TARGET="$*" guest-tests, \
"BUILD", "TCG tests for $*")

$(RUN_TCG_TARGET_RULES): run-tcg-tests-%: build-tcg-tests-% all
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
-f $(SRC_PATH)/tests/tcg/Makefile.qemu \
SRC_PATH=$(SRC_PATH) SPEED="$(SPEED)" \
V="$(V)" TARGET="$*" run-guest-tests, \
"RUN", "TCG tests for $*")

$(CLEAN_TCG_TARGET_RULES): clean-tcg-tests-%:
$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \
-f $(SRC_PATH)/tests/tcg/Makefile.qemu \
SRC_PATH=$(SRC_PATH) TARGET="$*" clean-guest-tests, \
"CLEAN", "TCG tests for $*")
.PHONY: $(TCG_TESTS_TARGETS:%=build-tcg-tests-%)
$(TCG_TESTS_TARGETS:%=build-tcg-tests-%): build-tcg-tests-%: $(BUILD_DIR)/tests/tcg/config-%.mak
$(call quiet-command, \
$(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \
DOCKER_SCRIPT="$(DOCKER_SCRIPT)" \
TARGET="$*" SRC_PATH="$(SRC_PATH)", \
"BUILD","$* guest-tests")

.PHONY: $(TCG_TESTS_TARGETS:%=run-tcg-tests-%)
$(TCG_TESTS_TARGETS:%=run-tcg-tests-%): run-tcg-tests-%: build-tcg-tests-% $(if $(CONFIG_PLUGIN),test-plugins)
$(call quiet-command, \
$(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \
TARGET="$*" SRC_PATH="$(SRC_PATH)" SPEED=$(SPEED) run, \
"RUN", "$* guest-tests")

.PHONY: $(TCG_TESTS_TARGETS:%=clean-tcg-tests-%)
$(TCG_TESTS_TARGETS:%=clean-tcg-tests-%): clean-tcg-tests-%:
$(call quiet-command, \
$(MAKE) -C tests/tcg/$* -f ../Makefile.target $(SUBDIR_MAKEFLAGS) \
TARGET="$*" SRC_PATH="$(SRC_PATH)" clean, \
"CLEAN", "$* guest-tests")

.PHONY: build-tcg
build-tcg: $(BUILD_TCG_TARGET_RULES)
Expand Down
110 changes: 0 additions & 110 deletions tests/tcg/Makefile.qemu

This file was deleted.

3 changes: 2 additions & 1 deletion tests/tcg/Makefile.target
Expand Up @@ -187,4 +187,5 @@ gdb-%: %
.PHONY: run
run: $(RUN_TESTS)

# There is no clean target, the calling make just rm's the tests build dir
clean:
rm -f $(TESTS) *.o
28 changes: 12 additions & 16 deletions tests/tcg/configure.sh
Expand Up @@ -227,7 +227,6 @@ for target in $target_list; do

echo "# Automatically generated by configure - do not modify" > $config_target_mak
echo "TARGET_NAME=$arch" >> $config_target_mak
echo "target=$target" >> $config_target_mak
case $target in
*-softmmu)
test -f $source_path/tests/tcg/$arch/Makefile.softmmu-target || continue
Expand Down Expand Up @@ -257,13 +256,13 @@ for target in $target_list; do
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
echo "BUILD_STATIC=y" >> $config_target_mak
echo "CC=$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
echo "BUILD_STATIC=y" >> $config_target_mak
echo "CC=$target_compiler" >> $config_target_mak
fi
fi
fi
Expand All @@ -274,9 +273,8 @@ for target in $target_list; do
if has $target_as && has $target_ld; then
case $target in
tricore-softmmu)
echo "CROSS_CC_GUEST=$target_as" >> $config_target_mak
echo "CROSS_AS_GUEST=$target_as" >> $config_target_mak
echo "CROSS_LD_GUEST=$target_ld" >> $config_target_mak
echo "AS=$target_as" >> $config_target_mak
echo "LD=$target_ld" >> $config_target_mak
got_cross_cc=yes
;;
esac
Expand Down Expand Up @@ -334,16 +332,13 @@ for target in $target_list; do
for host in $container_hosts; do
if test "$host" = "$cpu"; then
echo "build-tcg-tests-$target: docker-image-$container_image" >> $makefile
echo "DOCKER_IMAGE=$container_image" >> $config_target_mak
echo "DOCKER_CROSS_CC_GUEST=$container_cross_cc" >> \
$config_target_mak
echo "BUILD_STATIC=y" >> $config_target_mak
echo "CC=\$(DOCKER_SCRIPT) cc --cc $container_cross_cc -i qemu/$container_image -s $source_path --" >> $config_target_mak
if test -n "$container_cross_as"; then
echo "DOCKER_CROSS_AS_GUEST=$container_cross_as" >> \
$config_target_mak
echo "AS=\$(DOCKER_SCRIPT) cc --cc $container_cross_as -i qemu/$container_image -s $source_path --" >> $config_target_mak
fi
if test -n "$container_cross_ld"; then
echo "DOCKER_CROSS_LD_GUEST=$container_cross_ld" >> \
$config_target_mak
echo "LD=\$(DOCKER_SCRIPT) cc --cc $container_cross_ld -i qemu/$container_image -s $source_path --" >> $config_target_mak
fi
case $target in
aarch64-*)
Expand All @@ -367,8 +362,9 @@ for target in $target_list; do
done
fi
if test $got_cross_cc = yes; then
mkdir -p tests/tcg/$target
echo "QEMU=$PWD/$qemu" >> $config_target_mak
echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak
echo "EXTRA_CFLAGS=$target_compiler_cflags" >> $config_target_mak
echo "run-tcg-tests-$target: $qemu\$(EXESUF)" >> $makefile
tcg_tests_targets="$tcg_tests_targets $target"
fi
Expand Down

0 comments on commit eebf199

Please sign in to comment.