xref: /arm-trusted-firmware/plat/st/common/common_rules.mk (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu#
2*91f16700Schasinglulu# Copyright (c) 2023, STMicroelectronics - All Rights Reserved
3*91f16700Schasinglulu#
4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu#
6*91f16700Schasinglulu
7*91f16700Schasinglulu# Compilation rules
8*91f16700Schasinglulu.PHONY: check_dtc_version stm32image clean_stm32image check_boot_device
9*91f16700Schasinglulu.SUFFIXES:
10*91f16700Schasinglulu
11*91f16700Schasingluluall: check_dtc_version stm32image ${STM32_TF_STM32}
12*91f16700Schasinglulu
13*91f16700Schasingluludistclean realclean clean: clean_stm32image
14*91f16700Schasinglulu
15*91f16700Schasinglulubl2: check_boot_device
16*91f16700Schasinglulu
17*91f16700Schasinglulucheck_boot_device:
18*91f16700Schasinglulu	@if [ ${STM32MP_EMMC} != 1 ] && \
19*91f16700Schasinglulu	    [ ${STM32MP_SDMMC} != 1 ] && \
20*91f16700Schasinglulu	    [ ${STM32MP_RAW_NAND} != 1 ] && \
21*91f16700Schasinglulu	    [ ${STM32MP_SPI_NAND} != 1 ] && \
22*91f16700Schasinglulu	    [ ${STM32MP_SPI_NOR} != 1 ] && \
23*91f16700Schasinglulu	    [ ${STM32MP_UART_PROGRAMMER} != 1 ] && \
24*91f16700Schasinglulu	    [ ${STM32MP_USB_PROGRAMMER} != 1 ]; then \
25*91f16700Schasinglulu		echo "No boot device driver is enabled"; \
26*91f16700Schasinglulu		false; \
27*91f16700Schasinglulu	fi
28*91f16700Schasinglulu
29*91f16700Schasinglulustm32image: ${STM32IMAGE}
30*91f16700Schasinglulu
31*91f16700Schasinglulu${STM32IMAGE}: ${STM32IMAGE_SRC}
32*91f16700Schasinglulu	${Q}${MAKE} CPPFLAGS="" --no-print-directory -C ${STM32IMAGEPATH}
33*91f16700Schasinglulu
34*91f16700Schasingluluclean_stm32image:
35*91f16700Schasinglulu	${Q}${MAKE} --no-print-directory -C ${STM32IMAGEPATH} clean
36*91f16700Schasinglulu
37*91f16700Schasinglulucheck_dtc_version:
38*91f16700Schasinglulu	@if [ ${DTC_VERSION} -lt 10407 ]; then \
39*91f16700Schasinglulu		echo "dtc version too old (${DTC_V}), you need at least version 1.4.7"; \
40*91f16700Schasinglulu		false; \
41*91f16700Schasinglulu	fi
42*91f16700Schasinglulu
43*91f16700Schasinglulu# Create DTB file for BL2
44*91f16700Schasinglulu${BUILD_PLAT}/fdts/%-bl2.dts: fdts/%.dts fdts/${BL2_DTSI} | ${BUILD_PLAT} fdt_dirs
45*91f16700Schasinglulu	@echo '#include "$(patsubst fdts/%,%,$<)"' > $@
46*91f16700Schasinglulu	@echo '#include "${BL2_DTSI}"' >> $@
47*91f16700Schasinglulu
48*91f16700Schasinglulu${BUILD_PLAT}/fdts/%-bl2.dtb: ${BUILD_PLAT}/fdts/%-bl2.dts
49*91f16700Schasinglulu
50*91f16700Schasinglulu${BUILD_PLAT}/$(PLAT)-%.o: ${BUILD_PLAT}/fdts/%-bl2.dtb $(STM32_BINARY_MAPPING) bl2
51*91f16700Schasinglulu	@echo "  AS      $${PLAT}.S"
52*91f16700Schasinglulu	${Q}${AS} ${ASFLAGS} ${TF_CFLAGS} \
53*91f16700Schasinglulu		-DDTB_BIN_PATH=\"$<\" \
54*91f16700Schasinglulu		-c $(word 2,$^) -o $@
55*91f16700Schasinglulu
56*91f16700Schasinglulu$(eval $(call MAKE_LD,${STM32_TF_LINKERFILE},$(STM32_LD_FILE),bl2))
57*91f16700Schasinglulu
58*91f16700Schasinglulutf-a-%.elf: $(PLAT)-%.o ${STM32_TF_LINKERFILE}
59*91f16700Schasinglulu	@echo "  LDS     $<"
60*91f16700Schasingluluifneq ($(findstring gcc,$(notdir $(LD))),)
61*91f16700Schasinglulu	${Q}${LD} -o $@ $(subst --,-Wl$(comma)--,${STM32_TF_ELF_LDFLAGS}) -nostartfiles -Wl,-Map=$(@:.elf=.map) -Wl,-dT ${STM32_TF_LINKERFILE} $<
62*91f16700Schasingluluelse
63*91f16700Schasinglulu	${Q}${LD} -o $@ ${STM32_TF_ELF_LDFLAGS} -Map=$(@:.elf=.map) --script ${STM32_TF_LINKERFILE} $<
64*91f16700Schasingluluendif
65*91f16700Schasinglulu
66*91f16700Schasinglulutf-a-%.bin: tf-a-%.elf
67*91f16700Schasinglulu	${Q}${OC} -O binary $< $@
68*91f16700Schasinglulu	@echo
69*91f16700Schasinglulu	@echo "Built $@ successfully"
70*91f16700Schasinglulu	@echo
71*91f16700Schasinglulu
72*91f16700Schasinglulutf-a-%.stm32: tf-a-%.bin ${STM32_DEPS}
73*91f16700Schasinglulu	@echo
74*91f16700Schasinglulu	@echo "Generate $@"
75*91f16700Schasinglulu	$(eval LOADADDR = $(shell cat $(@:.stm32=.map) | grep '^RAM' | awk '{print $$2}'))
76*91f16700Schasinglulu	$(eval ENTRY = $(shell cat $(@:.stm32=.map) | grep "__BL2_IMAGE_START" | awk '{print $$1}'))
77*91f16700Schasinglulu	${Q}${STM32IMAGE} -s $< -d $@ \
78*91f16700Schasinglulu		-l $(LOADADDR) -e ${ENTRY} \
79*91f16700Schasinglulu		-v ${STM32_TF_VERSION} \
80*91f16700Schasinglulu		-m ${STM32_HEADER_VERSION_MAJOR} \
81*91f16700Schasinglulu		-n ${STM32_HEADER_VERSION_MINOR} \
82*91f16700Schasinglulu		-b ${STM32_HEADER_BL2_BINARY_TYPE}
83*91f16700Schasinglulu	@echo
84