Makefile 3.8 KB
Newer Older
B
bellard 已提交
1
-include ../config-host.mak
2
-include $(SRC_PATH)/rules.mak
P
Paolo Bonzini 已提交
3 4

$(call set-vpath, $(SRC_PATH)/tests)
B
bellard 已提交
5

P
Paolo Bonzini 已提交
6 7 8 9
QEMU=../i386-linux-user/qemu-i386
QEMU_X86_64=../x86_64-linux-user/qemu-x86_64
CC_X86_64=$(CC_I386) -m64

10 11
QEMU_INCLUDES += -I..
CFLAGS=-Wall -O2 -g -fno-strict-aliasing
B
bellard 已提交
12
#CFLAGS+=-msse2
B
bellard 已提交
13 14
LDFLAGS=

P
Paolo Bonzini 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
# TODO: automatically detect ARM and MIPS compilers, and run those too

# runcom maps page 0, so it requires root privileges
# also, pi_10.com runs indefinitely

I386_TESTS=hello-i386 \
	   linux-test \
	   testthread \
	   sha1-i386 \
	   test-i386 \
	   test-mmap \
	   # runcom

# native i386 compilers sometimes are not biarch.  assume cross-compilers are
ifneq ($(ARCH),i386)
I386_TESTS+=run-test-x86_64
B
bellard 已提交
31
endif
P
Paolo Bonzini 已提交
32 33 34 35

TESTS = test_path
ifneq ($(call find-in-path, $(CC_I386)),)
TESTS += $(I386_TESTS)
B
bellard 已提交
36
endif
B
bellard 已提交
37

P
Paolo Bonzini 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
all: $(patsubst %,run-%,$(TESTS))

# rules to run tests

.PHONY: $(patsubst %,run-%,$(TESTS))

run-%: %
	-$(QEMU) ./$*

run-hello-i386: hello-i386
run-linux-test: linux-test
run-testthread: testthread
run-sha1-i386: sha1-i386

run-test-i386: test-i386
	./test-i386 > test-i386.ref
	-$(QEMU) test-i386 > test-i386.out
	@if diff -u test-i386.ref test-i386.out ; then echo "Auto Test OK"; fi

run-test-x86_64: test-x86_64
	./test-x86_64 > test-x86_64.ref
	-$(QEMU_X86_64) test-x86_64 > test-x86_64.out
	@if diff -u test-x86_64.ref test-x86_64.out ; then echo "Auto Test OK"; fi

run-test-mmap: test-mmap
	-$(QEMU) ./test-mmap
	-$(QEMU) -p 8192 ./test-mmap 8192
	-$(QEMU) -p 16384 ./test-mmap 16384
	-$(QEMU) -p 32768 ./test-mmap 32768

run-runcom: runcom
	-$(QEMU) ./runcom $(SRC_PATH)/tests/pi_10.com

run-test_path: test_path
	./test_path

# rules to compile tests
B
bellard 已提交
75

P
Paolo Bonzini 已提交
76 77
test_path: test_path.o
test_path.o: test_path.c
B
bellard 已提交
78

B
bellard 已提交
79
hello-i386: hello-i386.c
P
Paolo Bonzini 已提交
80
	$(CC_I386) -nostdlib $(CFLAGS) -static $(LDFLAGS) -o $@ $<
B
bellard 已提交
81
	strip $@
B
bellard 已提交
82

B
bellard 已提交
83
testthread: testthread.c
P
Paolo Bonzini 已提交
84
	$(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $< -lpthread
B
update  
bellard 已提交
85

B
bellard 已提交
86
# i386/x86_64 emulation test (test various opcodes) */
B
bellard 已提交
87
test-i386: test-i386.c test-i386-code16.S test-i386-vm86.S \
B
bellard 已提交
88
           test-i386.h test-i386-shift.h test-i386-muldiv.h
P
Paolo Bonzini 已提交
89
	$(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ \
M
malc 已提交
90
              $(<D)/test-i386.c $(<D)/test-i386-code16.S $(<D)/test-i386-vm86.S -lm
B
bellard 已提交
91 92 93

test-x86_64: test-i386.c \
           test-i386.h test-i386-shift.h test-i386-muldiv.h
P
Paolo Bonzini 已提交
94
	$(CC_X86_64) $(CFLAGS) $(LDFLAGS) -o $@ $(<D)/test-i386.c -lm
E
edgar_igl 已提交
95

B
bellard 已提交
96 97
# generic Linux and CPU test
linux-test: linux-test.c
P
Paolo Bonzini 已提交
98 99 100 101 102 103 104 105
	$(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $< -lm

# vm86 test
runcom: runcom.c
	$(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $<

test-mmap: test-mmap.c
	$(CC_I386) -m32 $(CFLAGS) -Wall -O2 $(LDFLAGS) -o $@ $<
B
bellard 已提交
106

B
bellard 已提交
107
# speed test
B
bellard 已提交
108
sha1-i386: sha1.c
P
Paolo Bonzini 已提交
109
	$(CC_I386) $(CFLAGS) $(LDFLAGS) -o $@ $<
B
bellard 已提交
110

B
bellard 已提交
111
sha1: sha1.c
P
Paolo Bonzini 已提交
112
	$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $<
B
bellard 已提交
113 114

speed: sha1 sha1-i386
B
bellard 已提交
115
	time ./sha1
B
bellard 已提交
116
	time $(QEMU) ./sha1-i386
B
bellard 已提交
117

P
Paolo Bonzini 已提交
118
# broken test
B
bellard 已提交
119
# NOTE: -fomit-frame-pointer is currently needed : this is a bug in libqemu
120
qruncom: qruncom.c ../ioport-user.c ../i386-user/libqemu.a
121
	$(CC) $(CFLAGS) -fomit-frame-pointer $(LDFLAGS) -I../target-i386 -I.. -I../i386-user -I../fpu \
122
              -o $@ $(filter %.c, $^) -L../i386-user -lqemu -lm
B
bellard 已提交
123

B
bellard 已提交
124 125 126 127 128 129 130
# arm test
hello-arm: hello-arm.o
	arm-linux-ld -o $@ $<

hello-arm.o: hello-arm.c
	arm-linux-gcc -Wall -g -O2 -c -o $@ $<

131 132 133
test-arm-iwmmxt: test-arm-iwmmxt.s
	cpp < $< | arm-linux-gnu-gcc -Wall -static -march=iwmmxt -mabi=aapcs -x assembler - -o $@

134 135 136 137 138 139 140
# MIPS test
hello-mips: hello-mips.c
	mips-linux-gnu-gcc -nostdlib -static -mno-abicalls -fno-PIC -mabi=32 -Wall -Wextra -g -O2 -o $@ $<

hello-mipsel: hello-mips.c
	mipsel-linux-gnu-gcc -nostdlib -static -mno-abicalls -fno-PIC -mabi=32 -Wall -Wextra -g -O2 -o $@ $<

141 142 143 144
# testsuite for the CRIS port.
test-cris:
	$(MAKE) -C cris check

M
Michael Walle 已提交
145 146 147 148
# testsuite for the LM32 port.
test-lm32:
	$(MAKE) -C lm32 check

B
bellard 已提交
149
clean:
B
bellard 已提交
150 151
	rm -f *~ *.o test-i386.out test-i386.ref \
           test-x86_64.log test-x86_64.ref qruncom $(TESTS)