1 -include ..
/..
/config-host.mak
2 -include $(SRC_PATH
)/rules.mak
4 $(call set-vpath
, $(SRC_PATH
)/tests
/tcg
)
6 QEMU
=..
/..
/i386-linux-user
/qemu-i386
7 QEMU_X86_64
=..
/..
/x86_64-linux-user
/qemu-x86_64
8 CC_X86_64
=$(CC_I386
) -m64
10 QEMU_INCLUDES
+= -I..
/..
11 CFLAGS
=-Wall
-O2
-g
-fno-strict-aliasing
15 # TODO: automatically detect ARM and MIPS compilers, and run those too
17 # runcom maps page 0, so it requires root privileges
18 # also, pi_10.com runs indefinitely
20 I386_TESTS
=hello-i386 \
29 # native i386 compilers sometimes are not biarch. assume cross-compilers are
31 I386_TESTS
+=run-test-x86_64
35 ifneq ($(call find-in-path
, $(CC_I386
)),)
36 TESTS
+= $(I386_TESTS
)
39 all: $(patsubst %,run-
%,$(TESTS
))
44 .PHONY
: $(patsubst %,run-
%,$(TESTS
))
49 run-hello-i386
: hello-i386
50 run-linux-test
: linux-test
51 run-testthread
: testthread
52 run-sha1-i386
: sha1-i386
54 run-test-i386
: test-i386
55 .
/test-i386
> test-i386.ref
56 -$(QEMU
) test-i386
> test-i386.out
57 @if diff
-u test-i386.ref test-i386.out
; then echo
"Auto Test OK"; fi
59 run-test-i386-fprem
: test-i386-fprem
60 .
/test-i386-fprem
> test-i386-fprem.ref
61 -$(QEMU
) test-i386-fprem
> test-i386-fprem.out
62 @if diff
-u test-i386-fprem.ref test-i386-fprem.out
; then echo
"Auto Test OK"; fi
64 run-test-x86_64
: test-x86_64
65 .
/test-x86_64
> test-x86_64.ref
66 -$(QEMU_X86_64
) test-x86_64
> test-x86_64.out
67 @if diff
-u test-x86_64.ref test-x86_64.out
; then echo
"Auto Test OK"; fi
69 run-test-mmap
: test-mmap
71 -$(QEMU
) -p
8192 .
/test-mmap
8192
72 -$(QEMU
) -p
16384 .
/test-mmap
16384
73 -$(QEMU
) -p
32768 .
/test-mmap
32768
76 -$(QEMU
) .
/runcom
$(SRC_PATH
)/tests
/pi_10.com
78 run-test_path
: test_path
81 # rules to compile tests
83 test_path
: test_path.o
84 $(CC_I386
) $(LDFLAGS
) -o
$@
$^
$(LIBS
)
86 test_path.o
: test_path.c
87 $(CC_I386
) $(QEMU_INCLUDES
) $(GLIB_CFLAGS
) $(CFLAGS
) -c
-o
$@
$^
89 hello-i386
: hello-i386.c
90 $(CC_I386
) -nostdlib
$(CFLAGS
) -static
$(LDFLAGS
) -o
$@
$<
93 testthread
: testthread.c
94 $(CC_I386
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$< -lpthread
96 # i386/x86_64 emulation test (test various opcodes) */
97 test-i386
: test-i386.c test-i386-code16.S test-i386-vm86.S \
98 test-i386.h test-i386-shift.h test-i386-muldiv.h
99 $(CC_I386
) $(QEMU_INCLUDES
) $(CFLAGS
) $(LDFLAGS
) -o
$@ \
100 $(<D
)/test-i386.c
$(<D
)/test-i386-code16.S
$(<D
)/test-i386-vm86.S
-lm
102 test-i386-fprem
: test-i386-fprem.c
103 $(CC_I386
) $(QEMU_INCLUDES
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$^
105 test-x86_64
: test-i386.c \
106 test-i386.h test-i386-shift.h test-i386-muldiv.h
107 $(CC_X86_64
) $(QEMU_INCLUDES
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$(<D
)/test-i386.c
-lm
109 # generic Linux and CPU test
110 linux-test
: linux-test.c
111 $(CC_I386
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$< -lm
115 $(CC_I386
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$<
117 test-mmap
: test-mmap.c
118 $(CC_I386
) -m32
$(CFLAGS
) -Wall
-O2
$(LDFLAGS
) -o
$@
$<
122 $(CC_I386
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$<
125 $(CC
) $(CFLAGS
) $(LDFLAGS
) -o
$@
$<
127 speed
: sha1 sha1-i386
129 time
$(QEMU
) .
/sha1-i386
132 hello-arm
: hello-arm.o
133 arm-linux-ld
-o
$@
$<
135 hello-arm.o
: hello-arm.c
136 arm-linux-gcc
-Wall
-g
-O2
-c
-o
$@
$<
138 test-arm-iwmmxt
: test-arm-iwmmxt.s
139 cpp < $< | arm-linux-gnu-gcc
-Wall
-static
-march
=iwmmxt
-mabi
=aapcs
-x assembler
- -o
$@
142 hello-mips
: hello-mips.c
143 mips-linux-gnu-gcc
-nostdlib
-static
-mno-abicalls
-fno-PIC
-mabi
=32 -Wall
-Wextra
-g
-O2
-o
$@
$<
145 hello-mipsel
: hello-mips.c
146 mipsel-linux-gnu-gcc
-nostdlib
-static
-mno-abicalls
-fno-PIC
-mabi
=32 -Wall
-Wextra
-g
-O2
-o
$@
$<
148 # testsuite for the CRIS port.
150 $(MAKE
) -C cris
check
152 # testsuite for the LM32 port.
154 $(MAKE
) -C lm32
check
157 rm -f
*~
*.o test-i386.out test-i386.ref \
158 test-x86_64.log test-x86_64.ref qruncom
$(TESTS
)