Makefile 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. # SPDX-License-Identifier: BSD-2-Clause
  2. #
  3. # Copyright (C) 2022 Matthias Schiffer <[email protected]>
  4. CONFIG ?= $(error No configuration set)
  5. include config/$(CONFIG).mk
  6. MKIMAGE := mkimage
  7. KARCH := powerpc
  8. CC := $(CROSS_COMPILE)gcc
  9. LD := $(CROSS_COMPILE)ld
  10. OBJCOPY := $(CROSS_COMPILE)objcopy
  11. PROGRAM_NAME := MPC85xx SPI loader
  12. BIN_FLAGS := -O binary --pad-to=$(PAD_TO)
  13. CFLAGS += -std=gnu17 -Os -Wall -Wstrict-prototypes \
  14. -fomit-frame-pointer -ffreestanding \
  15. -ffunction-sections -fno-pic \
  16. -Iinclude -include ../config/$(CONFIG).h \
  17. -DCONFIG_PROGRAM_NAME='"$(PROGRAM_NAME)"' \
  18. -DCONFIG_IMAGE_OFFSET=$(IMAGE_OFFSET)
  19. ASFLAGS := $(CFLAGS)
  20. LDS := loader.lds
  21. LDFLAGS := -static --gc-sections -T $(LDS) -Ttext $(TEXT_START)
  22. OBJECTS := head.o loader.o string.o stdio.o drivers/serial/ns16550.o \
  23. drivers/spi/fsl_espi.o drivers/spi/spi-nor.o
  24. OUTDIR := out
  25. all: $(OUTDIR)/uImage
  26. -include $(OBJECTS:%.o=$(OUTDIR)/%.d)
  27. $(OUTDIR)/%.o: %.c Makefile config/$(CONFIG).mk
  28. @mkdir -p $(dir $@)
  29. $(CC) $(CFLAGS) -c -o $@ -MD -MP $<
  30. $(OUTDIR)/%.o: %.S Makefile config/$(CONFIG).mk
  31. @mkdir -p $(dir $@)
  32. $(CC) $(ASFLAGS) -c -o $@ -MD -MP $<
  33. $(OUTDIR)/loader.elf: $(OBJECTS:%=$(OUTDIR)/%) $(LDS)
  34. $(LD) $(LDFLAGS) -o $@ $(OBJECTS:%=$(OUTDIR)/%)
  35. $(OUTDIR)/loader.bin: $(OUTDIR)/loader.elf
  36. $(OBJCOPY) $(BIN_FLAGS) $< $@
  37. $(OUTDIR)/uImage: $(OUTDIR)/loader.bin
  38. $(MKIMAGE) -A $(KARCH) -O linux -T kernel -C none \
  39. -a $(TEXT_START) -e $(TEXT_START) -n '$(PROGRAM_NAME)' -d $< $@
  40. clean:
  41. rm -rf $(OUTDIR)
  42. .PHONY: all clean