blob: 984f60d552f421a6f86b31b8250405324f7e8b74 [file] [log] [blame]
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02001#
2# Copyright (c) 2018, Arm Limited. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +02007CC := ${CROSS_COMPILE}gcc
8AS := ${CROSS_COMPILE}as
9LD := ${CROSS_COMPILE}ld
10OC := ${CROSS_COMPILE}objcopy
11OD := ${CROSS_COMPILE}objdump
12
13PLAT ?= fvp
14
15ASFLAGS := -nostdinc -ffreestanding -Wa,--fatal-warnings -Werror
16ASFLAGS += -Iplat/${PLAT}/ -I.
17
18PLAT_BUILD_DIR := build/${PLAT}
19SOURCES := entrypoint.S spin.S uart.S plat/${PLAT}/platform.S
20OBJS := $(patsubst %,$(PLAT_BUILD_DIR)/%,$(notdir $(SOURCES:.S=.o)))
21
22PROGRAM := el3_payload
23LINKER_SCRIPT := ${PLAT_BUILD_DIR}/${PROGRAM}.ld
24ELF := ${PLAT_BUILD_DIR}/${PROGRAM}.elf
25BIN := ${PLAT_BUILD_DIR}/${PROGRAM}.bin
26DUMP := ${PLAT_BUILD_DIR}/${PROGRAM}.dump
27
28include plat/${PLAT}/platform.mk
29
30all: ${BIN}
31
32${PLAT_BUILD_DIR}:
33 mkdir -p $@
34
35${PLAT_BUILD_DIR}/%.o: %.S ${PLAT_BUILD_DIR}
36 @echo " CC $<"
37 ${CC} ${ASFLAGS} -c $< -o $@
38
39# Specific rule for this '.o' file to avoid worrying about
40# plat/${PLAT}/platform.S being in a sub-directory...
41# TODO: Fix this workaround.
42${PLAT_BUILD_DIR}/platform.o: plat/${PLAT}/platform.S ${PLAT_BUILD_DIR}
43 @echo " CC $<"
44 ${CC} ${ASFLAGS} -c $< -o $@
45
46${PLAT_BUILD_DIR}/%.ld: %.ld.S ${PLAT_BUILD_DIR}
47 @echo " PP $<"
48 ${CC} -DDRAM_BASE=${DRAM_BASE} -DDRAM_SIZE=${DRAM_SIZE} -E -P -o $@ $<
49
50${ELF}: ${LINKER_SCRIPT} ${OBJS}
51 @echo " LD $<"
52 ${LD} ${LDFLAGS} ${OBJS} --script ${LINKER_SCRIPT} -o $@
53
54${BIN}: ${ELF}
55 @echo " BIN $@"
56 ${OC} -O binary $< $@
57
58${DUMP}: $(ELF)
59 @echo " OD $$@"
60 ${OD} -dx $< > $@
61
62dump: ${DUMP}
63
64clean:
65 rm -rf ${PLAT_BUILD_DIR}
66
67distclean: clean
68 rm -rf build/
69
70run: run_${PLAT}
71
Sandrine Bailleux47ab4f42019-05-10 13:23:41 +020072run_juno: ${ELF} scripts/juno/run_armds_script.sh scripts/juno/load_el3_payload.ds
73 scripts/juno/run_armds_script.sh scripts/juno/load_el3_payload.ds
Sandrine Bailleux3cd87d72018-10-09 11:12:55 +020074
75run_fvp: scripts/fvp/run_fvp.sh
76 scripts/fvp/run_fvp.sh
77
78help:
79 @echo "EL3 test payload"
80 @echo
81 @echo "To build:"
82 @echo "make [PLAT=fvp|juno] [TARGETS]"
83 @echo ""
84 @echo "The default platform is fvp."
85 @echo
86 @echo "TARGETS:"
87 @echo " all Build the payload [default target]"
88 @echo " dump Generate a dump file of the program"
89 @echo " run Run the payload on the given platform."
90 @echo " /!\ For Juno, requires a connection to a Juno board via DSTREAM"