From: Jon Medhurst Date: Thu, 13 Feb 2014 15:19:28 +0000 (+0000) Subject: Enable platforms to omit some bootloaders X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=4bfc2d21a157466ee2de7dc8f572d78dfa6a7dfe;p=project%2Fbcm63xx%2Fatf.git 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 allow BL3-3 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 Change-Id: Ibdfead0440256eaf364617ecff65290ca6fe6240 Signed-off-by: Jon Medhurst --- diff --git a/Makefile b/Makefile index e1a35011..5672f005 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} @@ -381,18 +370,25 @@ $(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} +${BUILD_PLAT}/fip.bin: ${FIP_DEPS} ${BL33} ${FIPTOOL} + $(if ${BL33},,$(error "To build a FIP, please set BL33 to point to the Normal World binary, eg: BL33=../uefi/FVP_AARCH64_EFI.fd")) ${Q}${FIPTOOL} --dump \ ${FIP_ARGS} \ --bl33 ${BL33} \ diff --git a/docs/user-guide.md b/docs/user-guide.md index 01a6d732..39d09c19 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -81,7 +81,7 @@ To build the software for the FVPs, follow these steps: CROSS_COMPILE=/bin/aarch64-none-elf- \ BL33=/ \ - make PLAT=fvp + make PLAT=fvp all fip By default this produces a release version of the build. To produce a debug version instead, refer to the "Debugging options" section below. UEFI can be @@ -101,7 +101,7 @@ To build the software for the FVPs, follow these steps: either `debug` or `release`. A Firmare Image Package(FIP) will be created as part of the build. It contains all boot loader images except for `bl1.bin`. - * `build///fip.bin` + * `build///fip.bin` For more information on FIPs, see the "Firmware Image Package" section in the [Firmware Design]. @@ -182,7 +182,7 @@ To compile a debug version and make the build more verbose use CROSS_COMPILE=/bin/aarch64-none-elf- \ BL33=/ \ - make PLAT=fvp DEBUG=1 V=1 + make PLAT=fvp DEBUG=1 V=1 all fip AArch64 GCC uses DWARF version 4 debugging symbols by default. Some tools (for example DS-5) might not support this and may need an older version of DWARF @@ -201,7 +201,7 @@ Extra debug options can be passed to the build system by setting `CFLAGS`: CFLAGS='-O0 -gdwarf-2' \ CROSS_COMPILE=/bin/aarch64-none-elf- \ BL33=/ \ - make PLAT=fvp DEBUG=1 V=1 + make PLAT=fvp DEBUG=1 V=1 all fip NOTE: The Foundation FVP does not provide a debugger interface.