From 6e6228181e8721ca9422cf4547ab1ff4c2ffd056 Mon Sep 17 00:00:00 2001 From: Chris Kay <chris.kay@arm.com> Date: Tue, 3 Sep 2024 12:36:33 +0000 Subject: [PATCH] build: use full paths for generated libraries This change modifies the build rules for static libraries so that individual rules which use those libraries depend directly on the archive files that are generated, rather than their phony target aliases and `-lX` link flags. The goal of this is to clean up Make's view of the dependencies between files, avoiding phony targets (which do not honour timestamps) making their way into intermediate dependencies. Change-Id: I96d655fcd94dc259ffa6e8970b2be7b8c7e11123 Signed-off-by: Chris Kay <chris.kay@arm.com> --- Makefile | 2 +- lib/romlib/Makefile | 2 +- make_helpers/build_macros.mk | 2 +- plat/arm/board/juno/platform.mk | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index e4a1f3112..3820ecc24 100644 --- a/Makefile +++ b/Makefile @@ -1736,7 +1736,7 @@ else $(q)set MAKEFLAGS= && ${MSVC_NMAKE} /nologo /f ${FIPTOOLPATH}/Makefile.msvc FIPTOOLPATH=$(subst /,\,$(FIPTOOLPATH)) FIPTOOL=$(subst /,\,$(FIPTOOL)) endif #(UNIX_MK) -romlib.bin: libraries FORCE +$(BUILD_PLAT)/romlib/romlib.bin $(BUILD_PLAT)/lib/libwrappers.a $&: $(BUILD_PLAT)/lib/libmbedtls.a $(BUILD_PLAT)/lib/libfdt.a $(BUILD_PLAT)/lib/libc.a $(q)${MAKE} PLAT_DIR=${PLAT_DIR} BUILD_PLAT=${BUILD_PLAT} ENABLE_BTI=${ENABLE_BTI} ARM_ARCH_MINOR=${ARM_ARCH_MINOR} INCLUDES=$(call escape-shell,$(INCLUDES)) DEFINES=$(call escape-shell,$(DEFINES)) --no-print-directory -C ${ROMLIBPATH} all memmap: all diff --git a/lib/romlib/Makefile b/lib/romlib/Makefile index 367487ad6..bc31a2f3b 100644 --- a/lib/romlib/Makefile +++ b/lib/romlib/Makefile @@ -12,7 +12,7 @@ ROMLIB_GEN = ./romlib_generator.py BUILD_DIR = $(BUILD_PLAT)/romlib LIB_DIR = $(BUILD_PLAT)/lib WRAPPER_DIR = $(BUILD_PLAT)/libwrapper -LIBS = -lmbedtls -lfdt -lc +LIBS = $(LIB_DIR)/libmbedtls.a $(LIB_DIR)/libfdt.a $(LIB_DIR)/libc.a INC = $(INCLUDES:-I%=-I../../%) PPFLAGS = $(INC) $(DEFINES) -P -x assembler-with-cpp -D__LINKER__ -MD -MP -MT $(BUILD_DIR)/romlib.ld OBJS = $(BUILD_DIR)/jmptbl.o $(BUILD_DIR)/init.o diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk index d454efd90..c53894aa7 100644 --- a/make_helpers/build_macros.mk +++ b/make_helpers/build_macros.mk @@ -516,7 +516,7 @@ $(eval $(foreach source,$(DEFAULT_LINKER_SCRIPT_SOURCE) $(LINKER_SCRIPT_SOURCES) $(eval BL_LDFLAGS := $($(BL)_LDFLAGS)) ifeq ($(USE_ROMLIB),1) -$(ELF): romlib.bin | $$$$(@D)/ +$(ELF): $(BUILD_PLAT)/romlib/romlib.bin | $$$$(@D)/ endif # MODULE_OBJS can be assigned by vendors with different compiled diff --git a/plat/arm/board/juno/platform.mk b/plat/arm/board/juno/platform.mk index 8eca0c5e8..9530498dc 100644 --- a/plat/arm/board/juno/platform.mk +++ b/plat/arm/board/juno/platform.mk @@ -130,10 +130,10 @@ ifneq (${RESET_TO_BL31},0) endif ifeq ($(USE_ROMLIB),1) -all : bl1_romlib.bin +all: $(BUILD_PLAT)/bl1_romlib.bin endif -bl1_romlib.bin : $(BUILD_PLAT)/bl1.bin romlib.bin +$(BUILD_PLAT)/bl1_romlib.bin: $(BUILD_PLAT)/bl1.bin $(BUILD_PLAT)/romlib/romlib.bin $(s)echo "Building combined BL1 and ROMLIB binary for Juno $@" ./lib/romlib/gen_combined_bl1_romlib.sh -o bl1_romlib.bin $(BUILD_PLAT)