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