xref: /kvm-unit-tests/powerpc/Makefile.common (revision 52266791750d89b7f4ab6bad4d42de0056e4fb32)
1#
2# powerpc common makefile
3#
4# Authors: Andrew Jones <drjones@redhat.com>
5#
6
7tests-common = \
8	$(TEST_DIR)/selftest.elf \
9	$(TEST_DIR)/spapr_hcall.elf \
10	$(TEST_DIR)/rtas.elf \
11	$(TEST_DIR)/emulator.elf
12
13all: $(TEST_DIR)/boot_rom.bin test_cases
14
15##################################################################
16
17CFLAGS += -std=gnu99
18CFLAGS += -ffreestanding
19CFLAGS += -Wextra
20CFLAGS += -O2
21CFLAGS += -I lib -I lib/libfdt
22CFLAGS += -Wa,-mregnames
23CFLAGS += -fpie
24
25asm-offsets = lib/$(ARCH)/asm-offsets.h
26include scripts/asm-offsets.mak
27
28cflatobjs += lib/util.o
29cflatobjs += lib/alloc.o
30cflatobjs += lib/devicetree.o
31cflatobjs += lib/powerpc/io.o
32cflatobjs += lib/powerpc/hcall.o
33cflatobjs += lib/powerpc/setup.o
34cflatobjs += lib/powerpc/rtas.o
35cflatobjs += lib/powerpc/processor.o
36
37FLATLIBS = $(libcflat) $(LIBFDT_archive)
38%.elf: CFLAGS += $(arch_CFLAGS)
39%.elf: LDFLAGS = $(arch_LDFLAGS) -nostdlib -pie
40%.elf: %.o $(FLATLIBS) powerpc/flat.lds
41	$(LD) $(LDFLAGS) -o $@ \
42	      -T powerpc/flat.lds --build-id=none \
43		$(filter %.o, $^) $(FLATLIBS)
44	@echo -n Checking $@ for unsupported reloc types...
45	@if $(OBJDUMP) -R $@ | grep R_ | grep -v R_PPC64_RELATIVE; then	\
46		false;							\
47	else								\
48		echo " looks good.";					\
49	fi
50
51$(TEST_DIR)/boot_rom.bin: $(TEST_DIR)/boot_rom.elf
52	dd if=/dev/zero of=$@ bs=256 count=1
53	$(OBJCOPY) -O binary $^ $@.tmp
54	cat $@.tmp >> $@
55	$(RM) $@.tmp
56
57$(TEST_DIR)/boot_rom.elf: CFLAGS = -mbig-endian
58$(TEST_DIR)/boot_rom.elf: $(TEST_DIR)/boot_rom.o
59	$(LD) -EB -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $<
60
61powerpc_clean: libfdt_clean asm_offsets_clean
62	$(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \
63	      $(TEST_DIR)/.*.d lib/powerpc/.*.d
64
65##################################################################
66
67generated_files = $(asm-offsets)
68
69test_cases: $(generated_files) $(tests-common) $(tests)
70
71$(cstart.o): $(asm-offsets)
72
73$(TEST_DIR)/selftest.elf: $(cstart.o) $(reloc.o) $(TEST_DIR)/selftest.o
74
75$(TEST_DIR)/spapr_hcall.elf: $(cstart.o) $(reloc.o) $(TEST_DIR)/spapr_hcall.o
76
77$(TEST_DIR)/rtas.elf: $(cstart.o) $(reloc.o) $(TEST_DIR)/rtas.o
78
79$(TEST_DIR)/emulator.elf: $(cstart.o) $(reloc.o) $(TEST_DIR)/emulator.o
80