blob: 690507e480cd4a0c95baad8e944a80e23b27ca89 [file] [log] [blame]
Yann Gautierdbe63ac2022-03-16 19:03:20 +01001#
Yann Gautier4f7cfa52024-10-29 13:42:07 +01002# Copyright (c) 2023-2024, STMicroelectronics - All Rights Reserved
Yann Gautierdbe63ac2022-03-16 19:03:20 +01003#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
7# Compilation rules
8.PHONY: check_dtc_version stm32image clean_stm32image check_boot_device
Yann Gautierdbe63ac2022-03-16 19:03:20 +01009
10all: check_dtc_version stm32image ${STM32_TF_STM32}
11
12distclean realclean clean: clean_stm32image
13
14bl2: check_boot_device
15
16check_boot_device:
Chris Kay1870c722024-05-02 17:52:37 +000017 $(q)if [ ${STM32MP_EMMC} != 1 ] && \
Yann Gautierdbe63ac2022-03-16 19:03:20 +010018 [ ${STM32MP_SDMMC} != 1 ] && \
19 [ ${STM32MP_RAW_NAND} != 1 ] && \
20 [ ${STM32MP_SPI_NAND} != 1 ] && \
21 [ ${STM32MP_SPI_NOR} != 1 ] && \
22 [ ${STM32MP_UART_PROGRAMMER} != 1 ] && \
23 [ ${STM32MP_USB_PROGRAMMER} != 1 ]; then \
24 echo "No boot device driver is enabled"; \
25 false; \
26 fi
27
28stm32image: ${STM32IMAGE}
29
30${STM32IMAGE}: ${STM32IMAGE_SRC}
Chris Kay1870c722024-05-02 17:52:37 +000031 $(q)${MAKE} CPPFLAGS="" --no-print-directory -C ${STM32IMAGEPATH}
Yann Gautierdbe63ac2022-03-16 19:03:20 +010032
33clean_stm32image:
Chris Kay1870c722024-05-02 17:52:37 +000034 $(q)${MAKE} --no-print-directory -C ${STM32IMAGEPATH} clean
Yann Gautierdbe63ac2022-03-16 19:03:20 +010035
36check_dtc_version:
Chris Kay1870c722024-05-02 17:52:37 +000037 $(q)if [ ${DTC_VERSION} -lt 10407 ]; then \
Yann Gautieraa039142023-03-02 11:20:44 +010038 echo "dtc version too old (${DTC_V}), you need at least version 1.4.7"; \
Yann Gautierdbe63ac2022-03-16 19:03:20 +010039 false; \
40 fi
41
42# Create DTB file for BL2
Chris Kay1559f642024-06-04 00:04:48 +000043${BUILD_PLAT}/fdts/%-bl2.dts: fdts/%.dts fdts/${BL2_DTSI} | $$(@D)/
Chris Kay1870c722024-05-02 17:52:37 +000044 $(q)echo '#include "$(patsubst fdts/%,%,$<)"' > $@
45 $(q)echo '#include "${BL2_DTSI}"' >> $@
Yann Gautierdbe63ac2022-03-16 19:03:20 +010046
47${BUILD_PLAT}/fdts/%-bl2.dtb: ${BUILD_PLAT}/fdts/%-bl2.dts
48
49${BUILD_PLAT}/$(PLAT)-%.o: ${BUILD_PLAT}/fdts/%-bl2.dtb $(STM32_BINARY_MAPPING) bl2
Chris Kay1870c722024-05-02 17:52:37 +000050 $(s)echo " AS $${PLAT}.S"
51 $(q)$($(ARCH)-as) -x assembler-with-cpp $(TF_CFLAGS_$(ARCH)) ${ASFLAGS} ${TF_CFLAGS} \
Yann Gautierdbe63ac2022-03-16 19:03:20 +010052 -DDTB_BIN_PATH=\"$<\" \
53 -c $(word 2,$^) -o $@
54
55$(eval $(call MAKE_LD,${STM32_TF_LINKERFILE},$(STM32_LD_FILE),bl2))
56
57tf-a-%.elf: $(PLAT)-%.o ${STM32_TF_LINKERFILE}
Chris Kay1870c722024-05-02 17:52:37 +000058 $(s)echo " LDS $<"
Chris Kaycfba6452023-12-04 09:55:50 +000059ifeq ($($(ARCH)-ld-id),gnu-gcc)
Yann Gautier4f7cfa52024-10-29 13:42:07 +010060 $(q)$($(ARCH)-ld) -o $@ $(subst --,-Wl$(comma)--,${STM32_TF_ELF_LDFLAGS}) -nostartfiles -no-pie -Wl,-Map=$(@:.elf=.map) -Wl,-dT ${STM32_TF_LINKERFILE} $<
Yann Gautier6c6e6d02023-03-09 13:45:24 +010061else
Yann Gautier4f7cfa52024-10-29 13:42:07 +010062 $(q)$($(ARCH)-ld) -o $@ ${STM32_TF_ELF_LDFLAGS} -no-pie -Map=$(@:.elf=.map) --script ${STM32_TF_LINKERFILE} $<
Yann Gautier6c6e6d02023-03-09 13:45:24 +010063endif
Yann Gautierdbe63ac2022-03-16 19:03:20 +010064
65tf-a-%.bin: tf-a-%.elf
Chris Kay1870c722024-05-02 17:52:37 +000066 $(q)$($(ARCH)-oc) -O binary $< $@
67 $(s)echo
68 $(s)echo "Built $@ successfully"
69 $(s)echo
Yann Gautierdbe63ac2022-03-16 19:03:20 +010070
71tf-a-%.stm32: tf-a-%.bin ${STM32_DEPS}
Chris Kay1870c722024-05-02 17:52:37 +000072 $(s)echo
73 $(s)echo "Generate $@"
Yann Gautier760a2d32023-09-20 15:12:26 +020074 $(eval LOADADDR = $(shell cat $(@:.stm32=.map) | grep '^RAM' | awk '{print $$2}'))
Yann Gautierdbe63ac2022-03-16 19:03:20 +010075 $(eval ENTRY = $(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}'))
Chris Kay1870c722024-05-02 17:52:37 +000076 $(q)${STM32IMAGE} -s $< -d $@ \
Yann Gautierdbe63ac2022-03-16 19:03:20 +010077 -l $(LOADADDR) -e ${ENTRY} \
78 -v ${STM32_TF_VERSION} \
79 -m ${STM32_HEADER_VERSION_MAJOR} \
80 -n ${STM32_HEADER_VERSION_MINOR} \
81 -b ${STM32_HEADER_BL2_BINARY_TYPE}
Chris Kay1870c722024-05-02 17:52:37 +000082 $(s)echo