xref: /rk3399_ARM-atf/tools/renesas/rcar_layout_create/makefile (revision 249fb06c3df6cd40ff2566f29c672366c0f0f863)
17e532c4bSJorge Ramirez-Ortiz#
2*a4ac07c7SChris Kay# Copyright (c) 2024-2025, Arm Limited and Contributors. All rights reserved.
37e532c4bSJorge Ramirez-Ortiz# Copyright (c) 2015-2018, Renesas Electronics Corporation. All rights reserved.
47e532c4bSJorge Ramirez-Ortiz#
57e532c4bSJorge Ramirez-Ortiz# SPDX-License-Identifier: BSD-3-Clause
67e532c4bSJorge Ramirez-Ortiz#
77e532c4bSJorge Ramirez-Ortiz
8cc277de8SChris Kaytoolchains := aarch64
9cc277de8SChris Kay
10f4dd18c2SChris Kayinclude ../../../make_helpers/build-rules.mk
117c4e1eeaSChris Kayinclude ../../../make_helpers/common.mk
12cc277de8SChris Kayinclude ../../../make_helpers/toolchain.mk
13cc277de8SChris Kay
147e532c4bSJorge Ramirez-Ortiz###################################################
157e532c4bSJorge Ramirez-Ortiz# makefile
167e532c4bSJorge Ramirez-Ortiz###################################################
177e532c4bSJorge Ramirez-Ortiz
187e532c4bSJorge Ramirez-Ortiz#output file name
197e532c4bSJorge Ramirez-OrtizFILE_NAME_SA0   = bootparam_sa0
207e532c4bSJorge Ramirez-OrtizFILE_NAME_SA6   = cert_header_sa6
217e532c4bSJorge Ramirez-Ortiz
227e532c4bSJorge Ramirez-OrtizOUTPUT_FILE_SA0 = $(FILE_NAME_SA0).elf
237e532c4bSJorge Ramirez-OrtizOUTPUT_FILE_SA6 = $(FILE_NAME_SA6).elf
247e532c4bSJorge Ramirez-Ortiz
257e532c4bSJorge Ramirez-Ortiz#object file name
267e532c4bSJorge Ramirez-OrtizOBJ_FILE_SA0 =	sa0.o
277e532c4bSJorge Ramirez-OrtizOBJ_FILE_SA6 =	sa6.o
287e532c4bSJorge Ramirez-Ortiz
297e532c4bSJorge Ramirez-Ortiz#linker script name
307e532c4bSJorge Ramirez-OrtizMEMORY_DEF_SA0 = sa0.ld.S
317e532c4bSJorge Ramirez-OrtizMEMORY_DEF_SA6 = sa6.ld.S
327e532c4bSJorge Ramirez-Ortiz
337e532c4bSJorge Ramirez-Ortiz###################################################
347e532c4bSJorge Ramirez-Ortiz# Convenience function for adding build definitions
357e532c4bSJorge Ramirez-Ortiz# $(eval $(call add_define,FOO)) will have:
367e532c4bSJorge Ramirez-Ortiz# -DFOO if $(FOO) is empty; -DFOO=$(FOO) otherwise
377e532c4bSJorge Ramirez-Ortizdefine add_define
387e532c4bSJorge Ramirez-OrtizDEFINES			+=	-D$(1)$(if $(value $(1)),=$(value $(1)),)
397e532c4bSJorge Ramirez-Ortizendef
407e532c4bSJorge Ramirez-Ortiz
417e532c4bSJorge Ramirez-Ortiz# Process RCAR_SA0_SIZE flag
427e532c4bSJorge Ramirez-Ortizifndef RCAR_SA0_SIZE
437e532c4bSJorge Ramirez-OrtizRCAR_SA0_SIZE := 1
447e532c4bSJorge Ramirez-Ortizelse
457e532c4bSJorge Ramirez-Ortizifeq (${RCAR_SA0_SIZE},0)
467e532c4bSJorge Ramirez-OrtizRCAR_SA0_SIZE := 0
477e532c4bSJorge Ramirez-Ortizelse
487e532c4bSJorge Ramirez-OrtizRCAR_SA0_SIZE := 1
497e532c4bSJorge Ramirez-Ortizendif
507e532c4bSJorge Ramirez-Ortizendif
517e532c4bSJorge Ramirez-Ortiz$(eval $(call add_define,RCAR_SA0_SIZE))
527e532c4bSJorge Ramirez-Ortiz
537e532c4bSJorge Ramirez-Ortiz# Process RCAR_SA6_TYPE flag
547e532c4bSJorge Ramirez-Ortizifndef RCAR_SA6_TYPE
557e532c4bSJorge Ramirez-OrtizRCAR_SA6_TYPE := 0
567e532c4bSJorge Ramirez-Ortizelse
577e532c4bSJorge Ramirez-Ortizifeq (${RCAR_SA6_TYPE},0)
587e532c4bSJorge Ramirez-OrtizRCAR_SA6_TYPE := 0
597e532c4bSJorge Ramirez-Ortizelse
607e532c4bSJorge Ramirez-OrtizRCAR_SA6_TYPE := 1
617e532c4bSJorge Ramirez-Ortizendif
627e532c4bSJorge Ramirez-Ortizendif
637e532c4bSJorge Ramirez-Ortiz$(eval $(call add_define,RCAR_SA6_TYPE))
647e532c4bSJorge Ramirez-Ortiz
65bfbf5df4SMarek Vasut# Handle different VMA adjustment on D3
66bfbf5df4SMarek Vasutifeq (${RCAR_LSI},${RCAR_D3})
67bfbf5df4SMarek VasutRCAR_VMA_ADJUST_ADDR := 0xE6320000
68bfbf5df4SMarek Vasutelse
69bfbf5df4SMarek VasutRCAR_VMA_ADJUST_ADDR := 0xE6312000
70bfbf5df4SMarek Vasutendif
71bfbf5df4SMarek Vasut$(eval $(call add_define,RCAR_VMA_ADJUST_ADDR))
72bfbf5df4SMarek Vasut
73bfbf5df4SMarek Vasut
747e532c4bSJorge Ramirez-Ortiz###################################################
757e532c4bSJorge Ramirez-Ortiz
767e532c4bSJorge Ramirez-Ortiz#c compiler
777e532c4bSJorge Ramirez-OrtizCFLAGS += ${DEFINES}
787e532c4bSJorge Ramirez-OrtizCFLAGS += -I../../include/lib/stdlib
797e532c4bSJorge Ramirez-Ortiz
807e532c4bSJorge Ramirez-Ortiz#clean
817e532c4bSJorge Ramirez-OrtizCL = rm -f
827e532c4bSJorge Ramirez-Ortiz
837e532c4bSJorge Ramirez-Ortiz###################################################
847e532c4bSJorge Ramirez-Ortiz.SUFFIXES : .s .c .o
857e532c4bSJorge Ramirez-Ortiz
867e532c4bSJorge Ramirez-Ortiz###################################################
877e532c4bSJorge Ramirez-Ortiz# command
887e532c4bSJorge Ramirez-Ortiz
897e532c4bSJorge Ramirez-Ortiz.PHONY: all
90ea2c6521SChris Kay
91ea2c6521SChris Kayall: $(FILE_NAME_SA0).srec $(FILE_NAME_SA0).bin
92ea2c6521SChris Kayall: $(FILE_NAME_SA6).srec $(FILE_NAME_SA6).bin
93ea2c6521SChris Kay
947e532c4bSJorge Ramirez-Ortiz###################################################
957e532c4bSJorge Ramirez-Ortiz# Linker
967e532c4bSJorge Ramirez-Ortiz###################################################
977e532c4bSJorge Ramirez-Ortiz
98f4dd18c2SChris Kay$(FILE_NAME_SA0).srec: $(OUTPUT_FILE_SA0) | $$(@D)/
99ffb77421SChris Kay	$(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).srec
100ea2c6521SChris Kay
101f4dd18c2SChris Kay$(FILE_NAME_SA0).bin: $(OUTPUT_FILE_SA0) | $$(@D)/
102ffb77421SChris Kay	$(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA0) $(FILE_NAME_SA0).bin
1037e532c4bSJorge Ramirez-Ortiz
104f4dd18c2SChris Kay$(OUTPUT_FILE_SA0): $(MEMORY_DEF_SA0) $(OBJ_FILE_SA0) | $$(@D)/
10572f4b70eSMarek Vasut	$(aarch64-ld) $(OBJ_FILE_SA0) -nostdlib -static -Wl,--build-id=none -T $(MEMORY_DEF_SA0) -o $(OUTPUT_FILE_SA0) -Wl,-Map $(FILE_NAME_SA0).map
1067e532c4bSJorge Ramirez-Ortiz
107f4dd18c2SChris Kay$(FILE_NAME_SA6).srec: $(OUTPUT_FILE_SA6) | $$(@D)/
108ffb77421SChris Kay	$(aarch64-oc) -O srec --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).srec
109ea2c6521SChris Kay
110f4dd18c2SChris Kay$(FILE_NAME_SA6).bin: $(OUTPUT_FILE_SA6) | $$(@D)/
111ffb77421SChris Kay	$(aarch64-oc) -O binary --adjust-vma=$(RCAR_VMA_ADJUST_ADDR) --srec-forceS3 $(OUTPUT_FILE_SA6) $(FILE_NAME_SA6).bin
1127e532c4bSJorge Ramirez-Ortiz
113f4dd18c2SChris Kay$(OUTPUT_FILE_SA6): $(MEMORY_DEF_SA6) $(OBJ_FILE_SA6) | $$(@D)/
11472f4b70eSMarek Vasut	$(aarch64-ld) $(OBJ_FILE_SA6) -nostdlib -static -Wl,--build-id=none -T $(MEMORY_DEF_SA6) -o $(OUTPUT_FILE_SA6) -Wl,-Map $(FILE_NAME_SA6).map
115ea2c6521SChris Kay
1167e532c4bSJorge Ramirez-Ortiz###################################################
1177e532c4bSJorge Ramirez-Ortiz# Compile
1187e532c4bSJorge Ramirez-Ortiz###################################################
1197e532c4bSJorge Ramirez-Ortiz
120*a4ac07c7SChris Kay$(OBJ_FILE_SA0) $(OBJ_FILE_SA6): %.o: %.c | $$(@D)/
121ffb77421SChris Kay	$(aarch64-cc) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
1227e532c4bSJorge Ramirez-Ortiz
1237e532c4bSJorge Ramirez-Ortiz.PHONY: clean
1247e532c4bSJorge Ramirez-Ortizclean:
1257e532c4bSJorge Ramirez-Ortiz	$(CL)  *.bin *.map *.srec *.elf *.o
126