1*40d6ee94SAlex Bennée#
2*40d6ee94SAlex Bennée# x86 system tests
3*40d6ee94SAlex Bennée#
4*40d6ee94SAlex Bennée# This currently builds only for i386. The common C code is built
5*40d6ee94SAlex Bennée# with standard compiler flags however so we can support both by
6*40d6ee94SAlex Bennée# adding additional boot files for x86_64.
7*40d6ee94SAlex Bennée#
8*40d6ee94SAlex Bennée
9*40d6ee94SAlex BennéeI386_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/i386/system
10*40d6ee94SAlex BennéeX64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/x86_64/system
11*40d6ee94SAlex Bennée# Set search path for all sources
12*40d6ee94SAlex BennéeVPATH+=$(I386_SYSTEM_SRC)
13*40d6ee94SAlex Bennée
14*40d6ee94SAlex Bennée# These objects provide the basic boot code and helper functions for all tests
15*40d6ee94SAlex BennéeCRT_OBJS=boot.o
16*40d6ee94SAlex Bennée
17*40d6ee94SAlex BennéeX86_TEST_SRCS=$(wildcard $(I386_SYSTEM_SRC)/*.c)
18*40d6ee94SAlex BennéeX86_TESTS = $(patsubst $(I386_SYSTEM_SRC)/%.c, %, $(X86_TEST_SRCS))
19*40d6ee94SAlex Bennée
20*40d6ee94SAlex Bennéeifeq ($(TARGET_X86_64), y)
21*40d6ee94SAlex BennéeCRT_PATH=$(X64_SYSTEM_SRC)
22*40d6ee94SAlex BennéeLINK_SCRIPT=$(X64_SYSTEM_SRC)/kernel.ld
23*40d6ee94SAlex BennéeLDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_x86_64
24*40d6ee94SAlex Bennéeelse
25*40d6ee94SAlex BennéeCRT_PATH=$(I386_SYSTEM_SRC)
26*40d6ee94SAlex BennéeCFLAGS+=-m32
27*40d6ee94SAlex BennéeLINK_SCRIPT=$(I386_SYSTEM_SRC)/kernel.ld
28*40d6ee94SAlex BennéeLDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_i386
29*40d6ee94SAlex Bennée# FIXME: move to common once x86_64 is bootstrapped
30*40d6ee94SAlex BennéeTESTS+=$(X86_TESTS)
31*40d6ee94SAlex Bennéeendif
32*40d6ee94SAlex BennéeCFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
33*40d6ee94SAlex BennéeLDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
34*40d6ee94SAlex Bennée
35*40d6ee94SAlex Bennée# building head blobs
36*40d6ee94SAlex Bennée.PRECIOUS: $(CRT_OBJS)
37*40d6ee94SAlex Bennée
38*40d6ee94SAlex Bennée%.o: $(CRT_PATH)/%.S
39*40d6ee94SAlex Bennée	$(CC) $(CFLAGS) -c $< -o $@
40*40d6ee94SAlex Bennée
41*40d6ee94SAlex Bennée# Build and link the tests
42*40d6ee94SAlex Bennée%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
43*40d6ee94SAlex Bennée	$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
44*40d6ee94SAlex Bennée
45*40d6ee94SAlex Bennée# Running
46*40d6ee94SAlex BennéeQEMU_OPTS+=-device isa-debugcon,chardev=output -device isa-debug-exit,iobase=0xf4,iosize=0x4 -kernel
47