diff --git a/Makefile b/Makefile index e1a3501..5672f00 100644 --- a/Makefile +++ b/Makefile @@ -71,7 +71,7 @@ ARCH ?= aarch64 # By default, build all platforms available -PLAT ?= all +PLAT ?= fvp # By default, build no SPD component SPD ?= none @@ -85,31 +85,30 @@ 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 +include plat/${PLAT}/platform.mk -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 +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 @@ # 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 %.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 @@ 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 @@ 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 01a6d73..39d09c1 100644 --- a/docs/user-guide.md +++ b/docs/user-guide.md @@ -81,7 +81,7 @@ 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 @@ 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 @@ 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 @@ 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.