On 07/08/19 15:10, Alex Bennée wrote: >> -DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos >> tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm" >> +DIRS="tests tests/tcg tests/tcg/lm32 tests/libqos tests/qapi-schema >> tests/qemu-iotests tests/vm" >> DIRS="$DIRS tests/fp tests/qgraph" >> DIRS="$DIRS docs docs/interop fsdev scsi" >> DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" >> DIRS="$DIRS roms/seabios roms/vgabios" >> -LINKS="Makefile tests/tcg/Makefile" >> -LINKS="$LINKS tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" >> -LINKS="$LINKS tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" >> -LINKS="$LINKS tests/fp/Makefile" >> +LINKS="Makefile" >> +LINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile" >> +LINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile" > > Is this why I get complaints on a clean tree: > > libpmem support no > libudev yes > default devices yes > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 179: > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create > tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 180: > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create > tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 183: > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create > tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 184: > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create > tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 193: > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create > tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 213: > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create > tests/tcg/config-aarch64-linux-user.mak: Directory nonexistent > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: 179: > /home/alex/lsrc/qemu.git/tests/tcg/configure.sh: cannot create > tests/tcg/config-arm-linux-user.mak: Directory nonexist
configure.sh is invoked too early. > > >> LINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps" >> LINKS="$LINKS pc-bios/spapr-rtas/Makefile" >> LINKS="$LINKS pc-bios/s390-ccw/Makefile" >> diff --git a/tests/Makefile.include b/tests/Makefile.include >> index 8bb5c97..a3ee649 100644 >> --- a/tests/Makefile.include >> +++ b/tests/Makefile.include >> @@ -1058,30 +1058,28 @@ BUILD_TCG_TARGET_RULES=$(patsubst >> %,build-tcg-tests-%, $(TARGET_DIRS)) >> CLEAN_TCG_TARGET_RULES=$(patsubst %,clean-tcg-tests-%, $(TARGET_DIRS)) >> RUN_TCG_TARGET_RULES=$(patsubst %,run-tcg-tests-%, $(TARGET_DIRS)) >> >> -ifeq ($(HAVE_USER_DOCKER),y) >> # Probe for the Docker Builds needed for each build >> $(foreach PROBE_TARGET,$(TARGET_DIRS), \ >> $(eval -include $(SRC_PATH)/tests/tcg/Makefile.prereqs)) >> -endif >> >> build-tcg-tests-%: >> $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ >> -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ >> SRC_PATH=$(SRC_PATH) \ >> - V="$(V)" TARGET_DIR="$*/" guest-tests, \ >> + V="$(V)" TARGET="$*" guest-tests, \ >> "BUILD", "TCG tests for $*") >> >> 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_DIR="$*/" run-guest-tests, \ >> + V="$(V)" TARGET="$*" run-guest-tests, \ >> "RUN", "TCG tests for $*") >> >> clean-tcg-tests-%: >> $(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) \ >> -f $(SRC_PATH)/tests/tcg/Makefile.qemu \ >> - SRC_PATH=$(SRC_PATH) TARGET_DIR="$*/" clean-guest-tests, \ >> + SRC_PATH=$(SRC_PATH) TARGET="$*" clean-guest-tests, \ >> "RUN", "TCG tests for $*") >> >> .PHONY: build-tcg >> diff --git a/tests/tcg/Makefile.prereqs b/tests/tcg/Makefile.prereqs >> index 53b0196..7494b31 100644 >> --- a/tests/tcg/Makefile.prereqs >> +++ b/tests/tcg/Makefile.prereqs >> @@ -7,24 +7,12 @@ >> # selection of required docker targets before we invoke a sub-make for >> # each target. >> >> -# First we need the target makefile which tells us the target architecture >> -CROSS_CC_GUEST:= >> --include $(BUILD_DIR)/$(PROBE_TARGET)/config-target.mak >> - >> -# Then we load up the target architecture makefiles which tell us >> -# about the compilers >> DOCKER_IMAGE:= >> >> --include $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include >> --include $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include >> +-include $(BUILD_DIR)/tests/tcg/config-$(PROBE_TARGET).mak >> >> -ifndef CROSS_CC_GUEST >> ifneq ($(DOCKER_IMAGE),) >> build-tcg-tests-$(PROBE_TARGET): docker-image-$(DOCKER_IMAGE) >> +$(BUILD_DIR)/tests/tcg/config_$(PROBE_TARGET).mak: config-host.mak >> +config-host.mak: $(SRC_PATH)/tests/tcg/configure.sh >> endif >> -endif >> - >> -# Clean-up >> -# undefine TARGET_NAME >> -# undefine TARGET_BASE_ARCH >> -# undefine TARGET_ABI_DIR >> diff --git a/tests/tcg/Makefile.qemu b/tests/tcg/Makefile.qemu >> index d3f3437..c8bec7b 100644 >> --- a/tests/tcg/Makefile.qemu >> +++ b/tests/tcg/Makefile.qemu >> @@ -8,17 +8,22 @@ >> # to do it for us. >> # >> >> -# The per ARCH makefile, if it exists, holds extra information about >> +include $(SRC_PATH)/rules.mak >> + >> +# The configure script fills in extra information about >> # useful docker images or alternative compiler flags. >> >> -include $(TARGET_DIR)config-target.mak >> -include $(SRC_PATH)/rules.mak >> -include $(wildcard \ >> - $(SRC_PATH)/tests/tcg/$(TARGET_BASE_ARCH)/Makefile.include \ >> - $(SRC_PATH)/tests/tcg/$(TARGET_NAME)/Makefile.include) >> +CROSS_CC_GUEST:= >> +DOCKER_IMAGE:= >> +-include $(BUILD_DIR)/tests/tcg/config-$(TARGET).mak >> >> GUEST_BUILD= >> TCG_MAKE=../Makefile.target >> + >> +# We also need the Docker make rules to depend on >> +SKIP_DOCKER_BUILD=1 >> +include $(SRC_PATH)/tests/docker/Makefile.include >> + >> # Support installed Cross Compilers >> >> ifdef CROSS_CC_GUEST >> @@ -26,11 +31,11 @@ ifdef CROSS_CC_GUEST >> .PHONY: cross-build-guest-tests >> cross-build-guest-tests: >> $(call quiet-command, \ >> - (mkdir -p tests/tcg/$(TARGET_DIR) && cd tests/tcg/$(TARGET_DIR) && \ >> - $(MAKE) -f $(TCG_MAKE) TARGET_DIR="$(TARGET_DIR)" >> CC="$(CROSS_CC_GUEST)" \ >> + (mkdir -p tests/tcg/$(TARGET) && cd tests/tcg/$(TARGET) && \ >> + $(MAKE) -f $(TCG_MAKE) TARGET="$(TARGET)" CC="$(CROSS_CC_GUEST)" \ >> SRC_PATH="$(SRC_PATH)" >> BUILD_STATIC=$(CROSS_CC_GUEST_STATIC) \ >> - EXTRA_CFLAGS=$(CROSS_CC_GUEST_CFLAGS)), \ > > I expect given we need config-FOO.mak files before that these mkdir's are in > the wrong place. These are mkdirs for tests/tcg/FOO, but I do need to add mkdir -p tests/tcg to the configure.sh script. Paolo