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