aboutsummaryrefslogtreecommitdiff
path: root/tests/tcg/i386/Makefile.softmmu-target
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tcg/i386/Makefile.softmmu-target')
-rw-r--r--tests/tcg/i386/Makefile.softmmu-target46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/tcg/i386/Makefile.softmmu-target b/tests/tcg/i386/Makefile.softmmu-target
new file mode 100644
index 0000000000..53c9c5ece0
--- /dev/null
+++ b/tests/tcg/i386/Makefile.softmmu-target
@@ -0,0 +1,46 @@
+#
+# x86 system tests
+#
+# This currently builds only for i386. The common C code is built
+# with standard compiler flags however so we can support both by
+# adding additional boot files for x86_64.
+#
+
+I386_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/i386/system
+X64_SYSTEM_SRC=$(SRC_PATH)/tests/tcg/x86_64/system
+# Set search path for all sources
+VPATH+=$(I386_SYSTEM_SRC)
+
+# These objects provide the basic boot code and helper functions for all tests
+CRT_OBJS=boot.o
+
+X86_TEST_SRCS=$(wildcard $(I386_SYSTEM_SRC)/*.c)
+X86_TESTS = $(patsubst $(I386_SYSTEM_SRC)/%.c, %, $(X86_TEST_SRCS))
+
+ifeq ($(TARGET_X86_64), y)
+CRT_PATH=$(X64_SYSTEM_SRC)
+LINK_SCRIPT=$(X64_SYSTEM_SRC)/kernel.ld
+LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_x86_64
+else
+CRT_PATH=$(I386_SYSTEM_SRC)
+CFLAGS+=-m32
+LINK_SCRIPT=$(I386_SYSTEM_SRC)/kernel.ld
+LDFLAGS=-Wl,-T$(LINK_SCRIPT) -Wl,-melf_i386
+# FIXME: move to common once x86_64 is bootstrapped
+TESTS+=$(X86_TESTS)
+endif
+CFLAGS+=-nostdlib -ggdb -O0 $(MINILIB_INC)
+LDFLAGS+=-static -nostdlib $(CRT_OBJS) $(MINILIB_OBJS) -lgcc
+
+# building head blobs
+.PRECIOUS: $(CRT_OBJS)
+
+%.o: $(CRT_PATH)/%.S
+ $(CC) $(CFLAGS) -c $< -o $@
+
+# Build and link the tests
+%: %.c $(LINK_SCRIPT) $(CRT_OBJS) $(MINILIB_OBJS)
+ $(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
+
+# Running
+QEMU_OPTS+=-device isa-debugcon,chardev=output -device isa-debug-exit,iobase=0xf4,iosize=0x4 -kernel