aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mpc85xx/image/spi-loader/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mpc85xx/image/spi-loader/Makefile')
-rw-r--r--target/linux/mpc85xx/image/spi-loader/Makefile60
1 files changed, 60 insertions, 0 deletions
diff --git a/target/linux/mpc85xx/image/spi-loader/Makefile b/target/linux/mpc85xx/image/spi-loader/Makefile
new file mode 100644
index 0000000000..45af2c3b53
--- /dev/null
+++ b/target/linux/mpc85xx/image/spi-loader/Makefile
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: BSD-2-Clause
+#
+# Copyright (C) 2022 Matthias Schiffer <mschiffer@universe-factory.net>
+
+CONFIG ?= $(error No configuration set)
+
+include config/$(CONFIG).mk
+
+MKIMAGE := mkimage
+KARCH := powerpc
+CC := $(CROSS_COMPILE)gcc
+LD := $(CROSS_COMPILE)ld
+OBJCOPY := $(CROSS_COMPILE)objcopy
+
+PROGRAM_NAME := MPC85xx SPI loader
+
+BIN_FLAGS := -O binary --pad-to=$(PAD_TO)
+
+CFLAGS += -std=gnu17 -Os -Wall -Wstrict-prototypes \
+ -fomit-frame-pointer -ffreestanding \
+ -ffunction-sections -fno-pic \
+ -Iinclude -include ../config/$(CONFIG).h \
+ -DCONFIG_PROGRAM_NAME='"$(PROGRAM_NAME)"' \
+ -DCONFIG_IMAGE_OFFSET=$(IMAGE_OFFSET)
+ASFLAGS := $(CFLAGS)
+
+LDS := loader.lds
+LDFLAGS := -static --gc-sections -T $(LDS) -Ttext $(TEXT_START)
+
+OBJECTS := head.o loader.o string.o stdio.o drivers/serial/ns16550.o \
+ drivers/spi/fsl_espi.o drivers/spi/spi-nor.o
+
+OUTDIR := out
+
+all: $(OUTDIR)/uImage
+
+-include $(OBJECTS:%.o=$(OUTDIR)/%.d)
+
+$(OUTDIR)/%.o: %.c Makefile config/$(CONFIG).mk
+ @mkdir -p $(dir $@)
+ $(CC) $(CFLAGS) -c -o $@ -MD -MP $<
+
+$(OUTDIR)/%.o: %.S Makefile config/$(CONFIG).mk
+ @mkdir -p $(dir $@)
+ $(CC) $(ASFLAGS) -c -o $@ -MD -MP $<
+
+$(OUTDIR)/loader.elf: $(OBJECTS:%=$(OUTDIR)/%) $(LDS)
+ $(LD) $(LDFLAGS) -o $@ $(OBJECTS:%=$(OUTDIR)/%)
+
+$(OUTDIR)/loader.bin: $(OUTDIR)/loader.elf
+ $(OBJCOPY) $(BIN_FLAGS) $< $@
+
+$(OUTDIR)/uImage: $(OUTDIR)/loader.bin
+ $(MKIMAGE) -A $(KARCH) -O linux -T kernel -C none \
+ -a $(TEXT_START) -e $(TEXT_START) -n '$(PROGRAM_NAME)' -d $< $@
+
+clean:
+ rm -rf $(OUTDIR)
+
+.PHONY: all clean