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