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