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