1# 2# powerpc common makefile 3# 4# Authors: Andrew Jones <drjones@redhat.com> 5# 6 7tests-common = \ 8 $(TEST_DIR)/selftest.elf 9 10all: $(TEST_DIR)/boot_rom.bin test_cases 11 12################################################################## 13 14CFLAGS += -std=gnu99 15CFLAGS += -ffreestanding 16CFLAGS += -Wextra 17CFLAGS += -O2 18CFLAGS += -I lib -I lib/libfdt 19CFLAGS += -Wa,-mregnames 20CFLAGS += -fpie 21 22asm-offsets = lib/$(ARCH)/asm-offsets.h 23include scripts/asm-offsets.mak 24 25cflatobjs += lib/util.o 26cflatobjs += lib/alloc.o 27cflatobjs += lib/devicetree.o 28cflatobjs += lib/powerpc/io.o 29cflatobjs += lib/powerpc/hcall.o 30cflatobjs += lib/powerpc/setup.o 31cflatobjs += lib/powerpc/rtas.o 32 33libgcc := $(shell $(CC) $(machine) --print-libgcc-file-name) 34 35FLATLIBS = $(libcflat) $(LIBFDT_archive) $(libgcc) 36%.elf: LDFLAGS = $(CFLAGS) -nostdlib -pie 37%.elf: %.o $(FLATLIBS) powerpc/flat.lds 38 $(CC) $(LDFLAGS) -o $@ \ 39 -Wl,-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: $(TEST_DIR)/boot_rom.o 53 $(LD) -nostdlib -Ttext=0x100 --entry=start --build-id=none -o $@ $< 54 55powerpc_clean: libfdt_clean asm_offsets_clean 56 $(RM) $(TEST_DIR)/*.{o,elf} $(TEST_DIR)/boot_rom.bin \ 57 $(TEST_DIR)/.*.d lib/powerpc/.*.d 58 59################################################################## 60 61generated_files = $(asm-offsets) 62 63test_cases: $(generated_files) $(tests-common) $(tests) 64 65$(TEST_DIR)/selftest.elf: $(cstart.o) $(reloc.o) $(TEST_DIR)/selftest.o 66