From 05694cba3df770428a31d8d089d00935903d5933 Mon Sep 17 00:00:00 2001 From: Jon Medhurst Date: Thu, 13 Feb 2014 15:19:28 +0000 Subject: Enable platforms to omit some bootloaders If a platform doesn't specify a BLx_SOURCE variable, then building of the corresponding bootloader isn't attempted. Also allowe BL33 to be omitted from the FIP. Note, this change also removes support for PLAT=all and the 'fip' target from the 'all' recipe. Fixes ARM-software/tf-issues#30 Signed-off-by: Jon Medhurst --- Makefile | 65 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 32 insertions(+), 33 deletions(-) diff --git a/Makefile b/Makefile index d0b18c9..c9aef87 100644 --- a/Makefile +++ b/Makefile @@ -71,7 +71,7 @@ BL_COMMON_SOURCES := misc_helpers.S \ ARCH ?= aarch64 # By default, build all platforms available -PLAT ?= all +PLAT ?= fvp # By default, build no SPD component SPD ?= none @@ -85,31 +85,30 @@ HELP_PLATFORMS := $(shell echo ${PLATFORMS} | sed 's/ /|/g') ifeq (${PLAT},) $(error "Error: Unknown platform. Please use PLAT= to specify the platform.") endif -ifeq ($(findstring ${PLAT},${PLATFORMS} all),) +ifeq ($(findstring ${PLAT},${PLATFORMS}),) $(error "Error: Invalid platform. The following platforms are available: ${PLATFORMS}") endif -ifeq (${PLAT},all) -all: ${PLATFORMS} -else -all: msg_start fip -endif +all: msg_start msg_start: @echo "Building ${PLAT}" -${PLATFORMS}: - ${MAKE} PLAT=$@ all - -ifneq (${PLAT},all) - $(info Including ${PLAT}/platform.mk) - include plat/${PLAT}/platform.mk - $(info Including bl1.mk) - include bl1/bl1.mk - $(info Including bl2.mk) - include bl2/bl2.mk - $(info Including bl31.mk) - include bl31/bl31.mk +include plat/${PLAT}/platform.mk + +ifdef BL1_SOURCES +NEED_BL1 := yes +include bl1/bl1.mk +endif + +ifdef BL2_SOURCES +NEED_BL2 := yes +include bl2/bl2.mk +endif + +ifdef BL31_SOURCES +NEED_BL31 := yes +include bl31/bl31.mk endif # Include SPD Makefile if one has been specified @@ -128,7 +127,7 @@ ifneq (${SPD},none) # variable to "yes" endif -.PHONY: all msg_start ${PLATFORMS} clean realclean distclean cscope locate-checkpatch checkcodebase checkpatch fiptool fip locate-bl33 +.PHONY: all msg_start ${PLATFORMS} clean realclean distclean cscope locate-checkpatch checkcodebase checkpatch fiptool fip .SUFFIXES: @@ -158,6 +157,7 @@ vpath %.ld.S bl1:bl2:bl31 vpath %.c bl1:bl2:bl31 vpath %.c bl1/${ARCH}:bl2/${ARCH}:bl31/${ARCH} vpath %.S bl1/${ARCH}:bl2/${ARCH}:bl31/${ARCH} +vpath %.c lib/arch/${ARCH} # One of the missing paths needed for BL_COMMON_SOURCES ifneq (${DEBUG}, 0) @@ -203,17 +203,6 @@ ifeq (,$(wildcard ${CHECKPATCH})) endif endif -locate-bl33: -ifndef BL33 - $(error "Please set BL33 to point to the Normal World binary, eg: BL33=../uefi/FVP_AARCH64_EFI.fd") -else -ifeq (,$(wildcard ${BL33})) - $(error "The file BL33 points to cannot be found (${BL33})") -endif -FIP_DEPS += ${BL33} -endif - - clean: @echo " CLEAN" ${Q}rm -rf ${BUILD_PLAT} @@ -378,21 +367,31 @@ $(eval FIP_ARGS += $(if $2,--bl$(1) $(BIN),)) endef +ifeq (${NEED_BL1},yes) $(eval $(call MAKE_BL,1)) +endif +ifeq (${NEED_BL2},yes) $(eval $(call MAKE_BL,2,in_fip)) +endif +ifeq (${NEED_BL31},yes) BL31_SOURCES += ${SPD_SOURCES} $(eval $(call MAKE_BL,31,in_fip)) +endif ifeq (${NEED_BL32},yes) $(eval $(call MAKE_BL,32,in_fip)) endif -${BUILD_PLAT}/fip.bin: locate-bl33 ${FIP_DEPS} ${FIPTOOL} +ifneq (${BL33},) +FIP_DEPS += ${BL33} +FIP_ARGS += --bl33 ${BL33} +endif + +${BUILD_PLAT}/fip.bin: ${FIP_DEPS} ${FIPTOOL} ${Q}${FIPTOOL} --dump \ ${FIP_ARGS} \ - --bl33 ${BL33} \ $@ @echo @echo "Built $@ successfully" -- cgit v1.2.3