1 # -*- Mode: makefile -*-
5 # These are complicated by the fact we want to build them for guest
6 # systems. This requires knowing what guests we are building and which
7 # ones we have cross-compilers for or docker images with
10 # The tests themselves should be as minimal as possible as
11 # cross-compilers don't always have a large amount of libraries
14 # We only include the host build system for SRC_PATH and we don't
15 # bother with the common rules.mk. We expect the following:
17 # CC - the C compiler command
18 # EXTRA_CFLAGS - any extra CFLAGS
19 # BUILD_STATIC - are we building static binaries
21 # By default all tests are statically compiled but some host systems
22 # may not package static libraries by default. If an external
23 # cross-compiler can only build dynamic libraries the user might need
24 # to make extra efforts to ensure ld.so can link at runtime when the
27 # We also accept SPEED=slow to enable slower running tests
29 # We also expect to be in the tests build dir for the FOO-linux-user.
32 -include ..
/..
/config-host.mak
33 -include ..
/config-target.mak
35 quiet-command
= $(if
$(V
),$1,$(if
$(2),@printf
" %-7s %s\n" $2 $3 && $1, @
$1))
37 # $1 = test name, $2 = cmd, $3 = desc
38 run-test
= $(call quiet-command
, timeout
$(TIMEOUT
) $2 > $1.out
,"TEST",$3)
40 # $1 = test name, $2 = reference
41 diff-out
= $(call quiet-command
, diff
-u
$1.out
$2 | head
-n
10,"DIFF","$1.out with $2")
43 # $1 = test name, $2 = reason
44 skip-test
= @printf
" SKIPPED %s on $(TARGET_NAME) because %s\n" $1 $2
46 # Tests we are building
49 # Start with a blank slate, the build targets get to add stuff first
54 # The QEMU for this TARGET
55 QEMU
=..
/qemu-
$(TARGET_NAME
)
57 # If TCG debugging is enabled things are a lot slower
58 ifeq ($(CONFIG_DEBUG_TCG
),y
)
64 # The order we include is important. We include multiarch, base arch
65 # and finally arch if it's not the same as base arch.
66 -include $(SRC_PATH
)/tests
/tcg
/multiarch
/Makefile.target
67 -include $(SRC_PATH
)/tests
/tcg
/$(TARGET_BASE_ARCH
)/Makefile.target
68 ifneq ($(TARGET_BASE_ARCH
),$(TARGET_NAME
))
69 -include $(SRC_PATH
)/tests
/tcg
/$(TARGET_NAME
)/Makefile.target
72 # Add the common build options
73 CFLAGS
+=-Wall
-O0
-g
-fno-strict-aliasing
74 ifeq ($(BUILD_STATIC
),y
)
79 $(CC
) $(CFLAGS
) $(EXTRA_CFLAGS
) $< -o
$@
$(LDFLAGS
)
86 # By default we just run the test with the appropriate QEMU for the
87 # target. More advanced tests may want to override the runner in their
88 # specific make rules. Additional runners for the same binary should
89 # be added to EXTRA_RUNS.
92 RUN_TESTS
=$(patsubst %,run-
%, $(TESTS
))
93 RUN_TESTS
+=$(EXTRA_RUNS
)
96 $(call run-test
, $<, $(QEMU
) $<, "$< on $(TARGET_NAME)")
101 # There is no clean target, the calling make just rm's the tests build dir