15accce5bSRoberto Vargas# 2ae2e01b8SJohn Tsichritzis# Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. 35accce5bSRoberto Vargas# 45accce5bSRoberto Vargas# SPDX-License-Identifier: BSD-3-Clause 55accce5bSRoberto Vargas# 65accce5bSRoberto Vargas 75accce5bSRoberto VargasAS = $(CROSS_COMPILE)as 85accce5bSRoberto VargasLD = $(CROSS_COMPILE)ld 95accce5bSRoberto VargasOC = $(CROSS_COMPILE)objcopy 105accce5bSRoberto VargasCPP = $(CROSS_COMPILE)cpp 115accce5bSRoberto VargasBUILD_DIR = ../../$(BUILD_PLAT)/romlib 125accce5bSRoberto VargasLIB_DIR = ../../$(BUILD_PLAT)/lib 135accce5bSRoberto VargasWRAPPER_DIR = ../../$(BUILD_PLAT)/libwrapper 145accce5bSRoberto VargasLIBS = -lmbedtls -lfdt -lc 155accce5bSRoberto VargasINC = $(INCLUDES:-I%=-I../../%) 165accce5bSRoberto VargasPPFLAGS = $(INC) $(DEFINES) -P -D__ASSEMBLY__ -D__LINKER__ -MD -MP -MT $(BUILD_DIR)/romlib.ld 175accce5bSRoberto VargasOBJS = $(BUILD_DIR)/jmptbl.o $(BUILD_DIR)/init.o 18582133a8SSathees BalyaMAPFILE = ../../$(BUILD_PLAT)/romlib/romlib.map 195accce5bSRoberto Vargas 205accce5bSRoberto VargasV ?= 0 215accce5bSRoberto Vargasifeq ($(V),0) 225accce5bSRoberto Vargas Q := @ 235accce5bSRoberto Vargaselse 245accce5bSRoberto Vargas Q := 255accce5bSRoberto Vargasendif 265accce5bSRoberto Vargas 272b929c98SLouis MayencourtLDFLAGS := --gc-sections -O1 285accce5bSRoberto Vargasifeq ($(DEBUG),1) 292b929c98SLouis Mayencourt LDFLAGS += -Map=$(MAPFILE) 305accce5bSRoberto Vargasendif 315accce5bSRoberto Vargas 32*bbb24f61SJohn Tsichritzisifeq (${ARM_ARCH_MINOR},0) 33*bbb24f61SJohn Tsichritzis ASFLAGS = -march=armv8-a 34*bbb24f61SJohn Tsichritziselse 35*bbb24f61SJohn Tsichritzis ASFLAGS = -march=armv8.${ARM_ARCH_MINOR}-a 36*bbb24f61SJohn Tsichritzisendif 375accce5bSRoberto Vargas 385accce5bSRoberto Vargas.PHONY: all clean distclean 395accce5bSRoberto Vargas 405accce5bSRoberto Vargasall: $(BUILD_DIR)/romlib.bin $(LIB_DIR)/libwrappers.a 415accce5bSRoberto Vargas 425accce5bSRoberto Vargas%.o: %.s 435accce5bSRoberto Vargas @echo " AS $@" 445accce5bSRoberto Vargas $(Q)$(AS) $(ASFLAGS) -o $@ $< 455accce5bSRoberto Vargas 465accce5bSRoberto Vargas$(BUILD_DIR)/%.o: %.s 475accce5bSRoberto Vargas @echo " AS $@" 485accce5bSRoberto Vargas $(Q)$(AS) $(ASFLAGS) -o $@ $< 495accce5bSRoberto Vargas 505accce5bSRoberto Vargas$(BUILD_DIR)/romlib.ld: romlib.ld.S 515accce5bSRoberto Vargas @echo " PP $@" 525accce5bSRoberto Vargas $(Q)$(CPP) $(PPFLAGS) -o $@ romlib.ld.S 535accce5bSRoberto Vargas 545accce5bSRoberto Vargas$(BUILD_DIR)/romlib.elf: $(OBJS) $(BUILD_DIR)/romlib.ld 555accce5bSRoberto Vargas @echo " LD $@" 565accce5bSRoberto Vargas $(Q)$(LD) -T $(BUILD_DIR)/romlib.ld -L$(LIB_DIR) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) 575accce5bSRoberto Vargas 585accce5bSRoberto Vargas$(BUILD_DIR)/romlib.bin: $(BUILD_DIR)/romlib.elf 595accce5bSRoberto Vargas @echo " BIN $@" 605accce5bSRoberto Vargas $(Q)$(OC) -O binary $(BUILD_DIR)/romlib.elf $@ 615accce5bSRoberto Vargas 625accce5bSRoberto Vargas$(WRAPPER_DIR)/jmpvar.s: $(BUILD_DIR)/romlib.elf 635accce5bSRoberto Vargas @echo " VAR $@" 645accce5bSRoberto Vargas $(Q)./genvar.sh -o $@ $(BUILD_DIR)/romlib.elf 655accce5bSRoberto Vargas 66ae2e01b8SJohn Tsichritzis$(LIB_DIR)/libwrappers.a: $(BUILD_DIR)/jmptbl.i $(WRAPPER_DIR)/jmpvar.o 675accce5bSRoberto Vargas @echo " AR $@" 68*bbb24f61SJohn Tsichritzis $(Q)./genwrappers.sh -b $(WRAPPER_DIR) -o $@ --bti=$(ENABLE_BTI) --asflags=$(ASFLAGS) $(BUILD_DIR)/jmptbl.i 695accce5bSRoberto Vargas 70ae2e01b8SJohn Tsichritzis$(BUILD_DIR)/jmptbl.i: $(BUILD_DIR)/jmptbl.s 71ae2e01b8SJohn Tsichritzis 72ae2e01b8SJohn Tsichritzis$(BUILD_DIR)/jmptbl.s: ../../$(PLAT_DIR)/jmptbl.i 735accce5bSRoberto Vargas @echo " TBL $@" 74*bbb24f61SJohn Tsichritzis $(Q)./gentbl.sh -o $@ -b $(BUILD_DIR) --bti=$(ENABLE_BTI) ../../$(PLAT_DIR)/jmptbl.i 755accce5bSRoberto Vargas 765accce5bSRoberto Vargasclean: 775accce5bSRoberto Vargas @rm -f $(BUILD_DIR)/* 785accce5bSRoberto Vargas 795accce5bSRoberto Vargas-include $(BUILD_DIR)/romlib.d 80