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