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