aboutsummaryrefslogtreecommitdiff
path: root/el3_payload/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'el3_payload/Makefile')
-rw-r--r--el3_payload/Makefile91
1 files changed, 91 insertions, 0 deletions
diff --git a/el3_payload/Makefile b/el3_payload/Makefile
new file mode 100644
index 000000000..f6e809f2c
--- /dev/null
+++ b/el3_payload/Makefile
@@ -0,0 +1,91 @@
+#
+# Copyright (c) 2018, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+CROSS_COMPILE := aarch64-linux-gnu-
+CC := ${CROSS_COMPILE}gcc
+AS := ${CROSS_COMPILE}as
+LD := ${CROSS_COMPILE}ld
+OC := ${CROSS_COMPILE}objcopy
+OD := ${CROSS_COMPILE}objdump
+
+PLAT ?= fvp
+
+ASFLAGS := -nostdinc -ffreestanding -Wa,--fatal-warnings -Werror
+ASFLAGS += -Iplat/${PLAT}/ -I.
+
+PLAT_BUILD_DIR := build/${PLAT}
+SOURCES := entrypoint.S spin.S uart.S plat/${PLAT}/platform.S
+OBJS := $(patsubst %,$(PLAT_BUILD_DIR)/%,$(notdir $(SOURCES:.S=.o)))
+
+PROGRAM := el3_payload
+LINKER_SCRIPT := ${PLAT_BUILD_DIR}/${PROGRAM}.ld
+ELF := ${PLAT_BUILD_DIR}/${PROGRAM}.elf
+BIN := ${PLAT_BUILD_DIR}/${PROGRAM}.bin
+DUMP := ${PLAT_BUILD_DIR}/${PROGRAM}.dump
+
+include plat/${PLAT}/platform.mk
+
+all: ${BIN}
+
+${PLAT_BUILD_DIR}:
+ mkdir -p $@
+
+${PLAT_BUILD_DIR}/%.o: %.S ${PLAT_BUILD_DIR}
+ @echo " CC $<"
+ ${CC} ${ASFLAGS} -c $< -o $@
+
+# Specific rule for this '.o' file to avoid worrying about
+# plat/${PLAT}/platform.S being in a sub-directory...
+# TODO: Fix this workaround.
+${PLAT_BUILD_DIR}/platform.o: plat/${PLAT}/platform.S ${PLAT_BUILD_DIR}
+ @echo " CC $<"
+ ${CC} ${ASFLAGS} -c $< -o $@
+
+${PLAT_BUILD_DIR}/%.ld: %.ld.S ${PLAT_BUILD_DIR}
+ @echo " PP $<"
+ ${CC} -DDRAM_BASE=${DRAM_BASE} -DDRAM_SIZE=${DRAM_SIZE} -E -P -o $@ $<
+
+${ELF}: ${LINKER_SCRIPT} ${OBJS}
+ @echo " LD $<"
+ ${LD} ${LDFLAGS} ${OBJS} --script ${LINKER_SCRIPT} -o $@
+
+${BIN}: ${ELF}
+ @echo " BIN $@"
+ ${OC} -O binary $< $@
+
+${DUMP}: $(ELF)
+ @echo " OD $$@"
+ ${OD} -dx $< > $@
+
+dump: ${DUMP}
+
+clean:
+ rm -rf ${PLAT_BUILD_DIR}
+
+distclean: clean
+ rm -rf build/
+
+run: run_${PLAT}
+
+run_juno: ${ELF} scripts/juno/run_ds5_script.sh scripts/juno/load_el3_payload.ds
+ scripts/juno/run_ds5_script.sh scripts/juno/load_el3_payload.ds
+
+run_fvp: scripts/fvp/run_fvp.sh
+ scripts/fvp/run_fvp.sh
+
+help:
+ @echo "EL3 test payload"
+ @echo
+ @echo "To build:"
+ @echo "make [PLAT=fvp|juno] [TARGETS]"
+ @echo ""
+ @echo "The default platform is fvp."
+ @echo
+ @echo "TARGETS:"
+ @echo " all Build the payload [default target]"
+ @echo " dump Generate a dump file of the program"
+ @echo " run Run the payload on the given platform."
+ @echo " /!\ For Juno, requires a connection to a Juno board via DSTREAM"