xref: /kvm-unit-tests/x86/Makefile.common (revision 6ed97c50871a0d85e9ef5e1f4da96bc4263b4b97)
1#This is a make file with common rules for both x86 & x86-64
2
3all: test_cases
4
5cflatobjs += lib/pci.o
6cflatobjs += lib/x86/io.o
7cflatobjs += lib/x86/smp.o
8cflatobjs += lib/x86/vm.o
9cflatobjs += lib/x86/fwcfg.o
10cflatobjs += lib/x86/apic.o
11cflatobjs += lib/x86/atomic.o
12cflatobjs += lib/x86/desc.o
13cflatobjs += lib/x86/isr.o
14cflatobjs += lib/x86/acpi.o
15
16$(libcflat): LDFLAGS += -nostdlib
17$(libcflat): CFLAGS += -ffreestanding -I lib
18
19CFLAGS += -m$(bits)
20CFLAGS += -O1
21
22libgcc := $(shell $(CC) -m$(bits) --print-libgcc-file-name)
23
24FLATLIBS = lib/libcflat.a $(libgcc)
25%.elf: %.o $(FLATLIBS) x86/flat.lds
26	$(CC) $(CFLAGS) -nostdlib -o $@ -Wl,-T,x86/flat.lds \
27		$(filter %.o, $^) $(FLATLIBS)
28
29%.flat: %.elf
30	$(OBJCOPY) -O elf32-i386 $^ $@
31
32tests-common = $(TEST_DIR)/vmexit.flat $(TEST_DIR)/tsc.flat \
33               $(TEST_DIR)/smptest.flat  $(TEST_DIR)/port80.flat \
34               $(TEST_DIR)/realmode.flat $(TEST_DIR)/msr.flat \
35               $(TEST_DIR)/hypercall.flat $(TEST_DIR)/sieve.flat \
36               $(TEST_DIR)/kvmclock_test.flat  $(TEST_DIR)/eventinj.flat \
37               $(TEST_DIR)/s3.flat $(TEST_DIR)/pmu.flat $(TEST_DIR)/setjmp.flat \
38               $(TEST_DIR)/tsc_adjust.flat $(TEST_DIR)/asyncpf.flat \
39               $(TEST_DIR)/init.flat $(TEST_DIR)/smap.flat \
40               $(TEST_DIR)/hyperv_synic.flat $(TEST_DIR)/hyperv_stimer.flat \
41
42ifdef API
43tests-common += api/api-sample
44tests-common += api/dirty-log
45tests-common += api/dirty-log-perf
46endif
47
48test_cases: $(tests-common) $(tests)
49
50$(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I lib -I lib/x86
51
52$(TEST_DIR)/access.elf: $(cstart.o) $(TEST_DIR)/access.o
53
54$(TEST_DIR)/hypercall.elf: $(cstart.o) $(TEST_DIR)/hypercall.o
55
56$(TEST_DIR)/sieve.elf: $(cstart.o) $(TEST_DIR)/sieve.o
57
58$(TEST_DIR)/vmexit.elf: $(cstart.o) $(TEST_DIR)/vmexit.o
59
60$(TEST_DIR)/smptest.elf: $(cstart.o) $(TEST_DIR)/smptest.o
61
62$(TEST_DIR)/emulator.elf: $(cstart.o) $(TEST_DIR)/emulator.o
63
64$(TEST_DIR)/port80.elf: $(cstart.o) $(TEST_DIR)/port80.o
65
66$(TEST_DIR)/tsc.elf: $(cstart.o) $(TEST_DIR)/tsc.o
67
68$(TEST_DIR)/tsc_adjust.elf: $(cstart.o) $(TEST_DIR)/tsc_adjust.o
69
70$(TEST_DIR)/apic.elf: $(cstart.o) $(TEST_DIR)/apic.o
71
72$(TEST_DIR)/ioapic.elf: $(cstart.o) $(TEST_DIR)/ioapic.o
73
74$(TEST_DIR)/tscdeadline_latency.elf: $(cstart.o) $(TEST_DIR)/tscdeadline_latency.o
75
76$(TEST_DIR)/init.elf: $(cstart.o) $(TEST_DIR)/init.o
77
78$(TEST_DIR)/realmode.elf: $(TEST_DIR)/realmode.o
79	$(CC) -m32 -nostdlib -o $@ -Wl,-T,$(TEST_DIR)/realmode.lds $^
80
81$(TEST_DIR)/realmode.o: bits = 32
82
83$(TEST_DIR)/msr.elf: $(cstart.o) $(TEST_DIR)/msr.o
84
85$(TEST_DIR)/idt_test.elf: $(cstart.o) $(TEST_DIR)/idt_test.o
86
87$(TEST_DIR)/xsave.elf: $(cstart.o) $(TEST_DIR)/xsave.o
88
89$(TEST_DIR)/rmap_chain.elf: $(cstart.o) $(TEST_DIR)/rmap_chain.o
90
91$(TEST_DIR)/svm.elf: $(cstart.o) $(TEST_DIR)/svm.o
92
93$(TEST_DIR)/kvmclock_test.elf: $(cstart.o) $(TEST_DIR)/kvmclock.o \
94                                $(TEST_DIR)/kvmclock_test.o
95
96$(TEST_DIR)/eventinj.elf: $(cstart.o) $(TEST_DIR)/eventinj.o
97
98$(TEST_DIR)/s3.elf: $(cstart.o) $(TEST_DIR)/s3.o
99
100$(TEST_DIR)/pmu.elf: $(cstart.o) $(TEST_DIR)/pmu.o
101
102$(TEST_DIR)/asyncpf.elf: $(cstart.o) $(TEST_DIR)/asyncpf.o
103
104$(TEST_DIR)/pcid.elf: $(cstart.o) $(TEST_DIR)/pcid.o
105
106$(TEST_DIR)/smap.elf: $(cstart.o) $(TEST_DIR)/smap.o
107
108$(TEST_DIR)/pku.elf: $(cstart.o) $(TEST_DIR)/pku.o
109
110$(TEST_DIR)/vmx.elf: $(cstart.o) $(TEST_DIR)/vmx.o $(TEST_DIR)/vmx_tests.o
111
112$(TEST_DIR)/debug.elf: $(cstart.o) $(TEST_DIR)/debug.o
113
114$(TEST_DIR)/memory.elf: $(cstart.o) $(TEST_DIR)/memory.o
115
116$(TEST_DIR)/hyperv_synic.elf: $(cstart.o) $(TEST_DIR)/hyperv.o \
117                              $(TEST_DIR)/hyperv_synic.o
118
119$(TEST_DIR)/hyperv_stimer.elf: $(cstart.o) $(TEST_DIR)/hyperv.o \
120                               $(TEST_DIR)/hyperv_stimer.o
121
122$(TEST_DIR)/setjmp.elf: $(cstart.o) $(TEST_DIR)/setjmp.o
123
124arch_clean:
125	$(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \
126	$(TEST_DIR)/.*.d lib/x86/.*.d
127
128api/%.o: CFLAGS += -m32
129
130api/%: LDLIBS += -lstdc++ -lboost_thread -lpthread -lrt
131api/%: LDFLAGS += -m32
132
133api/libapi.a: api/kvmxx.o api/identity.o api/exception.o api/memmap.o
134	$(AR) rcs $@ $^
135
136api/api-sample: api/api-sample.o api/libapi.a
137
138api/dirty-log: api/dirty-log.o api/libapi.a
139
140api/dirty-log-perf: api/dirty-log-perf.o api/libapi.a
141