diff options
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 359 |
1 files changed, 248 insertions, 111 deletions
@@ -1,18 +1,21 @@ # -# Copyright (c) 2018-2020, Arm Limited. All rights reserved. +# Copyright (c) 2018-2023, Arm Limited. All rights reserved. # # SPDX-License-Identifier: BSD-3-Clause # # TFTF Version VERSION_MAJOR := 2 -VERSION_MINOR := 3 +VERSION_MINOR := 10 + +MAKE_HELPERS_DIRECTORY := make_helpers/ +include ${MAKE_HELPERS_DIRECTORY}build_macros.mk ################################################################################ # Default values for build configurations, and their dependencies ################################################################################ -include defaults.mk +include ${MAKE_HELPERS_DIRECTORY}defaults.mk PLAT := ${DEFAULT_PLAT} @@ -26,10 +29,12 @@ ENABLE_ASSERTIONS := ${DEBUG} CHECKCODE_ARGS := --no-patch # Do not check the coding style on imported library files or documentation files INC_LIB_DIRS_TO_CHECK := $(sort $(filter-out \ + include/lib/libfdt \ include/lib/libc, \ $(wildcard include/lib/*))) LIB_DIRS_TO_CHECK := $(sort $(filter-out \ lib/compiler-rt \ + lib/libfdt% \ lib/libc, \ $(wildcard lib/*))) ROOT_DIRS_TO_CHECK := $(sort $(filter-out \ @@ -50,6 +55,19 @@ else endif export Q +################################################################################ +# Toolchain configs +################################################################################ +CC := ${CROSS_COMPILE}gcc +CPP := ${CROSS_COMPILE}cpp +AS := ${CROSS_COMPILE}gcc +AR := ${CROSS_COMPILE}ar +LD := ${CROSS_COMPILE}ld +OC := ${CROSS_COMPILE}objcopy +OD := ${CROSS_COMPILE}objdump +NM := ${CROSS_COMPILE}nm +PP := ${CROSS_COMPILE}gcc + ifneq (${DEBUG}, 0) BUILD_TYPE := debug # Use LOG_LEVEL_INFO by default for debug builds @@ -62,7 +80,7 @@ endif # Default build string (git branch and commit) ifeq (${BUILD_STRING},) - BUILD_STRING := $(shell git log -n 1 --pretty=format:"%h") + BUILD_STRING := $(shell git describe --always --dirty --tags 2> /dev/null) endif VERSION_STRING := v${VERSION_MAJOR}.${VERSION_MINOR}(${PLAT},${BUILD_TYPE}):${BUILD_STRING} @@ -80,31 +98,6 @@ PLATFORMS := $(shell find plat/ -name '${PLAT_MAKEFILE}' -print0 | \ DOCS_PATH := docs -# Convenience function for adding build definitions -# $(eval $(call add_define,BAR_DEFINES,FOO)) will have: -# -DFOO if $(FOO) is empty; -DFOO=$(FOO) otherwise -# inside the BAR_DEFINES variable. -define add_define -$(1) += -D$(2)$(if $(value $(2)),=$(value $(2)),) -endef - -# Convenience function for verifying option has a boolean value -# $(eval $(call assert_boolean,FOO)) will assert FOO is 0 or 1 -define assert_boolean -$(and $(patsubst 0,,$(value $(1))),$(patsubst 1,,$(value $(1))),$(error $(1) must be boolean)) -endef - -# CREATE_SEQ is a recursive function to create sequence of numbers from 1 to -# $(2) and assign the sequence to $(1) -define CREATE_SEQ -$(if $(word $(2), $($(1))),\ - $(eval $(1) += $(words $($(1))))\ - $(eval $(1) := $(filter-out 0,$($(1)))),\ - $(eval $(1) += $(words $($(1))))\ - $(call CREATE_SEQ,$(1),$(2))\ -) -endef - ifeq (${PLAT},) $(error "Error: Unknown platform. Please use PLAT=<platform name> to specify the platform") endif @@ -114,6 +107,10 @@ ifeq ($(wildcard ${PLAT_MAKEFILE_FULL}),) $(error "Error: Invalid platform. The following platforms are available: ${PLATFORMS}") endif + +EL3_PAYLOAD_PLAT_PATH := $(shell find el3_payload/plat/ -wholename '*/${PLAT}') +EL3_PAYLOAD_PLAT_MAKEFILE_FULL := ${EL3_PAYLOAD_PLAT_PATH}/${PLAT_MAKEFILE} + .PHONY: all all: msg_start @@ -122,15 +119,32 @@ msg_start: @echo "Building ${PLAT}" @echo "Selected set of tests: ${TESTS}" +# Set flags for Realm Payload Tests +ifeq (${ENABLE_REALM_PAYLOAD_TESTS},1) +ARM_ARCH_MINOR := 5 +BRANCH_PROTECTION := 2 +endif + # Include test images makefiles. include tftf/framework/framework.mk include tftf/tests/tests.mk include fwu/ns_bl1u/ns_bl1u.mk include fwu/ns_bl2u/ns_bl2u.mk + +# List of secure partitions present. +SECURE_PARTITIONS := + +# Only platform fvp supports cactus_mm +ifeq (${ARCH}-${PLAT},aarch64-fvp) include spm/cactus_mm/cactus_mm.mk +include realm/realm.mk +endif + +# cactus and ivy are supported on platforms: fvp, tc +ifeq (${ARCH}-${PLAT},$(filter ${ARCH}-${PLAT},aarch64-fvp aarch64-tc)) include spm/cactus/cactus.mk include spm/ivy/ivy.mk -include spm/quark/quark.mk +endif ################################################################################ # Include libc @@ -149,11 +163,21 @@ include ${PLAT_MAKEFILE_FULL} ################################################################################ $(eval $(call assert_boolean,DEBUG)) $(eval $(call assert_boolean,ENABLE_ASSERTIONS)) -$(eval $(call assert_boolean,ENABLE_PAUTH)) $(eval $(call assert_boolean,FIRMWARE_UPDATE)) $(eval $(call assert_boolean,FWU_BL_TEST)) $(eval $(call assert_boolean,NEW_TEST_SESSION)) $(eval $(call assert_boolean,USE_NVM)) +$(eval $(call assert_numeric,BRANCH_PROTECTION)) +$(eval $(call assert_boolean,ENABLE_REALM_PAYLOAD_TESTS)) +$(eval $(call assert_boolean,TRANSFER_LIST)) + +################################################################################ +# Process build options +################################################################################ + +# Process BRANCH_PROTECTION value and set +# Pointer Authentication and Branch Target Identification flags +include branch_protection.mk ################################################################################ # Add definitions to the cpp preprocessor based on the current build options. @@ -164,76 +188,136 @@ $(eval $(call add_define,TFTF_DEFINES,ARM_ARCH_MAJOR)) $(eval $(call add_define,TFTF_DEFINES,ARM_ARCH_MINOR)) $(eval $(call add_define,TFTF_DEFINES,DEBUG)) $(eval $(call add_define,TFTF_DEFINES,ENABLE_ASSERTIONS)) +$(eval $(call add_define,TFTF_DEFINES,ENABLE_BTI)) $(eval $(call add_define,TFTF_DEFINES,ENABLE_PAUTH)) $(eval $(call add_define,TFTF_DEFINES,LOG_LEVEL)) $(eval $(call add_define,TFTF_DEFINES,NEW_TEST_SESSION)) $(eval $(call add_define,TFTF_DEFINES,PLAT_${PLAT})) $(eval $(call add_define,TFTF_DEFINES,USE_NVM)) +$(eval $(call add_define,TFTF_DEFINES,ENABLE_REALM_PAYLOAD_TESTS)) +$(eval $(call add_define,TFTF_DEFINES,TRANSFER_LIST)) ################################################################################ +################################################################################ # Assembler, compiler and linker flags shared across all test images. +################################################################################ COMMON_ASFLAGS := COMMON_CFLAGS := COMMON_LDFLAGS := ifeq (${DEBUG},1) -COMMON_CFLAGS += -g -COMMON_ASFLAGS += -g -Wa,--gdwarf-2 +COMMON_CFLAGS += -g -gdwarf-4 +COMMON_ASFLAGS += -g -Wa,--gdwarf-4 endif # Set the compiler's target architecture profile based on ARM_ARCH_MINOR option ifeq (${ARM_ARCH_MINOR},0) -march32-directive = -march=armv8-a -march64-directive = -march=armv8-a +march32-directive = -march=armv${ARM_ARCH_MAJOR}-a +march64-directive = -march=armv${ARM_ARCH_MAJOR}-a else -march32-directive = -march=armv8.${ARM_ARCH_MINOR}-a -march64-directive = -march=armv8.${ARM_ARCH_MINOR}-a +march32-directive = -march=armv${ARM_ARCH_MAJOR}.${ARM_ARCH_MINOR}-a +march64-directive = -march=armv${ARM_ARCH_MAJOR}.${ARM_ARCH_MINOR}-a endif -COMMON_ASFLAGS_aarch64 := -mgeneral-regs-only ${march64-directive} -COMMON_CFLAGS_aarch64 := -mgeneral-regs-only -mstrict-align ${march64-directive} +# Get architecture feature modifiers +arch-features = ${ARM_ARCH_FEATURE} -COMMON_ASFLAGS_aarch32 := ${march32-directive} -COMMON_CFLAGS_aarch32 := ${march32-directive} -mno-unaligned-access +# Set the compiler's architecture feature modifiers +ifneq ($(arch-features), none) +ifeq ($(ARCH), aarch32) +march32-directive := $(march32-directive)+$(arch-features) +else +march64-directive := $(march64-directive)+$(arch-features) +endif +# Print features +$(info Arm Architecture Features specified: $(subst +, ,$(arch-features))) +endif # arch-features -COMMON_ASFLAGS += -nostdinc -ffreestanding -Wa,--fatal-warnings \ - -Werror -Wmissing-include-dirs \ - -D__ASSEMBLY__ $(COMMON_ASFLAGS_$(ARCH)) \ - ${INCLUDES} -COMMON_CFLAGS += -nostdinc -ffreestanding -Wall -Werror \ - -Wmissing-include-dirs $(COMMON_CFLAGS_$(ARCH)) \ +################################################################################ +# Compiler settings +################################################################################ +ifneq ($(findstring clang,$(notdir $(CC))),) +CLANG_CFLAGS_aarch64 := -target aarch64-elf + +CPP := $(CC) -E $(COMMON_CFLAGS_$(ARCH)) +PP := $(CC) -E $(COMMON_CFLAGS_$(ARCH)) + +CLANG_WARNINGS += -nostdinc -ffreestanding -Wall \ + -Wmissing-include-dirs $(CLANG_CFLAGS_$(ARCH)) \ + -Wlogical-op-parentheses \ + -Wno-initializer-overrides \ + -Wno-sometimes-uninitialized \ + -Wno-unused-function \ + -Wno-unused-variable \ + -Wno-unused-parameter \ + -Wno-tautological-compare \ + -Wno-memset-transposed-args \ + -Wno-parentheses + +CLANG_CFLAGS += -Wno-error=deprecated-declarations \ + -Wno-error=cpp \ + $(CLANG_WARNINGS) +endif #(clang) + +ifneq ($(findstring gcc,$(notdir $(CC))),) +GCC_CFLAGS_aarch32 := ${march32-directive} -mno-unaligned-access +GCC_CFLAGS_aarch64 := -mgeneral-regs-only + +GCC_ASFLAGS_aarch32 := ${march32-directive} +GCC_ASFLAGS_aarch64 := -mgeneral-regs-only ${march64-directive} + +GCC_WARNINGS += -nostdinc -ffreestanding -Wall -Werror \ + -Wmissing-include-dirs $(GCC_CFLAGS_$(ARCH)) \ -std=gnu99 -Os + +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523 +GCC_CFLAGS += $(call cc_option, --param=min-pagesize=0) +GCC_CFLAGS += $(GCC_WARNINGS) +endif #(gcc) + +COMMON_CFLAGS_aarch64 += ${march64-directive} -mstrict-align \ + $(CLANG_CFLAGS_$(ARCH)) $(GCC_CFLAGS_$(ARCH)) + +COMMON_CFLAGS += $(COMMON_CFLAGS_$(ARCH)) COMMON_CFLAGS += -ffunction-sections -fdata-sections # Get the content of CFLAGS user defined value last so they are appended after # the options defined in the Makefile -COMMON_CFLAGS += ${CFLAGS} ${INCLUDES} +COMMON_CFLAGS += ${CLANG_CFLAGS} ${GCC_CFLAGS} ${INCLUDES} -COMMON_LDFLAGS += --fatal-warnings -O1 --gc-sections --build-id=none +COMMON_ASFLAGS += -nostdinc -ffreestanding -Wa,--fatal-warnings \ + -Werror -Wmissing-include-dirs \ + -D__ASSEMBLY__ $(GCC_ASFLAGS_$(ARCH)) \ + ${INCLUDES} -CC := ${CROSS_COMPILE}gcc -CPP := ${CROSS_COMPILE}cpp -AS := ${CROSS_COMPILE}gcc -AR := ${CROSS_COMPILE}ar -LD := ${CROSS_COMPILE}ld -OC := ${CROSS_COMPILE}objcopy -OD := ${CROSS_COMPILE}objdump -NM := ${CROSS_COMPILE}nm -PP := ${CROSS_COMPILE}gcc +COMMON_LDFLAGS += ${LDFLAGS} --fatal-warnings -O1 --gc-sections --build-id=none + +# With ld.bfd version 2.39 and newer new warnings are added. Skip those since we +# are not loaded by a elf loader. +COMMON_LDFLAGS += $(call ld_option, --no-warn-rwx-segments) ################################################################################ -TFTF_SOURCES := ${FRAMEWORK_SOURCES} ${TESTS_SOURCES} ${PLAT_SOURCES} ${LIBC_SRCS} +TFTF_SOURCES := ${FRAMEWORK_SOURCES} ${TESTS_SOURCES} ${PLAT_SOURCES} ${LIBC_SRCS} ${LIBFDT_SRCS} TFTF_INCLUDES += ${PLAT_INCLUDES} TFTF_CFLAGS += ${COMMON_CFLAGS} TFTF_ASFLAGS += ${COMMON_ASFLAGS} TFTF_LDFLAGS += ${COMMON_LDFLAGS} +TFTF_EXTRA_OBJS := + +ifneq (${BP_OPTION},none) +TFTF_CFLAGS += -mbranch-protection=${BP_OPTION} +NS_BL1U_CFLAGS += -mbranch-protection=${BP_OPTION} +NS_BL2U_CFLAGS += -mbranch-protection=${BP_OPTION} +CACTUS_MM_CFLAGS += -mbranch-protection=${BP_OPTION} +CACTUS_CFLAGS += -mbranch-protection=${BP_OPTION} +IVY_CFLAGS += -mbranch-protection=${BP_OPTION} +REALM_CFLAGS += -mbranch-protection=${BP_OPTION} +endif -ifeq (${ENABLE_PAUTH},1) -TFTF_CFLAGS += -mbranch-protection=pac-ret -NS_BL1U_CFLAGS += -mbranch-protection=pac-ret -NS_BL2U_CFLAGS += -mbranch-protection=pac-ret +ifeq ($(SMC_FUZZING), 1) +TFTF_EXTRA_OBJS += ${BUILD_PLAT}/smcf/dtb.o endif ##################################################################################### @@ -270,15 +354,14 @@ CACTUS_LDFLAGS += ${COMMON_LDFLAGS} $(PIE_LDFLAGS) IVY_SOURCES += ${LIBC_SRCS} IVY_INCLUDES += ${PLAT_INCLUDES} -IVY_CFLAGS += ${COMMON_CFLAGS} +IVY_CFLAGS += ${COMMON_CFLAGS} -fpie IVY_ASFLAGS += ${COMMON_ASFLAGS} -IVY_LDFLAGS += ${COMMON_LDFLAGS} +IVY_LDFLAGS += ${COMMON_LDFLAGS} $(PIE_LDFLAGS) -QUARK_SOURCES += ${LIBC_SRCS} -QUARK_INCLUDES += ${PLAT_INCLUDES} -QUARK_CFLAGS += ${COMMON_CFLAGS} -QUARK_ASFLAGS += ${COMMON_ASFLAGS} -QUARK_LDFLAGS += ${COMMON_LDFLAGS} +REALM_SOURCES += ${LIBC_SRCS} +REALM_CFLAGS += ${COMMON_CFLAGS} -fpie +REALM_ASFLAGS += ${COMMON_ASFLAGS} +REALM_LDFLAGS += ${COMMON_LDFLAGS} $(PIE_LDFLAGS) .PHONY: locate-checkpatch locate-checkpatch: @@ -294,26 +377,31 @@ endif clean: @echo " CLEAN" ${Q}rm -rf ${BUILD_PLAT} +ifneq ($(wildcard ${EL3_PAYLOAD_PLAT_MAKEFILE_FULL}),) ${MAKE} -C el3_payload clean +endif .PHONY: realclean distclean realclean distclean: @echo " REALCLEAN" ${Q}rm -rf ${BUILD_BASE} ${Q}rm -f ${CURDIR}/cscope.* +ifneq ($(wildcard ${EL3_PAYLOAD_PLAT_MAKEFILE_FULL}),) ${MAKE} -C el3_payload distclean +endif .PHONY: checkcodebase checkcodebase: locate-checkpatch @echo " CHECKING STYLE" @if test -d .git ; then \ - git ls-files | grep -E -v 'libc|docs|\.md|\.rst' | \ + git ls-files | grep -E -v 'libfdt|libc|docs|\.md|\.rst' | \ while read GIT_FILE ; \ do ${CHECKPATCH} ${CHECKCODE_ARGS} -f $$GIT_FILE ; \ done ; \ else \ find . -type f -not -iwholename "*.git*" \ -not -iwholename "*build*" \ + -not -iwholename "*libfdt*" \ -not -iwholename "*libc*" \ -not -iwholename "*docs*" \ -not -iwholename "*.md" \ @@ -347,19 +435,22 @@ cactus_mm: @echo "ERROR: $@ is supported only on AArch64 FVP." @exit 1 +.PHONY: realm +realm: + @echo "ERROR: $@ is supported only on AArch64 FVP." + @exit 1 + +endif + +ifneq (${ARCH}-${PLAT},$(filter ${ARCH}-${PLAT},aarch64-fvp aarch64-tc)) .PHONY: cactus cactus: - @echo "ERROR: $@ is supported only on AArch64 FVP." + @echo "ERROR: $@ is supported only on AArch64 FVP or TC." @exit 1 .PHONY: ivy ivy: - @echo "ERROR: $@ is supported only on AArch64 FVP." - @exit 1 - -.PHONY: quark -quark: - @echo "ERROR: $@ is supported only on AArch64 FVP." + @echo "ERROR: $@ is supported only on AArch64 FVP or TC." @exit 1 endif @@ -433,6 +524,7 @@ define MAKE_IMG $(eval BUILD_DIR := ${BUILD_PLAT}/$(1)) $(eval SOURCES := $(${IMG_PREFIX}_SOURCES)) $(eval OBJS := $(addprefix $(BUILD_DIR)/,$(call SOURCES_TO_OBJS,$(SOURCES)))) + $(eval OBJS += $(${IMG_PREFIX}_EXTRA_OBJS)) $(eval LINKERFILE := $(BUILD_DIR)/$(1).ld) $(eval MAPFILE := $(BUILD_DIR)/$(1).map) $(eval ELF := $(BUILD_DIR)/$(1).elf) @@ -471,14 +563,26 @@ all : $(1) endef +ifeq (${ARCH},aarch32) + ARCH_TESTS_SKIP_LIST := tftf/tests/aarch32_tests_to_skip.txt +endif + $(AUTOGEN_DIR): $(Q)mkdir -p "$@" -$(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h: $(AUTOGEN_DIR) ${TESTS_FILE} ${PLAT_TESTS_SKIP_LIST} +$(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h: $(AUTOGEN_DIR) ${TESTS_FILE} ${PLAT_TESTS_SKIP_LIST} $(ARCH_TESTS_SKIP_LIST) @echo " AUTOGEN $@" - tools/generate_test_list/generate_test_list.pl $(AUTOGEN_DIR)/tests_list.c $(AUTOGEN_DIR)/tests_list.h ${TESTS_FILE} $(PLAT_TESTS_SKIP_LIST) - -$(eval $(call MAKE_IMG,tftf)) + tools/generate_test_list/generate_test_list.py $(AUTOGEN_DIR)/tests_list.c \ + $(AUTOGEN_DIR)/tests_list.h ${TESTS_FILE} \ + --plat-skip-file=$(PLAT_TESTS_SKIP_LIST) \ + --arch-skip-file=$(ARCH_TESTS_SKIP_LIST) +ifeq ($(SMC_FUZZING), 1) + $(Q)mkdir -p ${BUILD_PLAT}/smcf + dtc ${SMC_FUZZ_DTS} >> ${BUILD_PLAT}/smcf/dtb + $(OC) -I binary -O elf64-littleaarch64 -B aarch64 ${BUILD_PLAT}/smcf/dtb ${BUILD_PLAT}/smcf/dtb.o \ + --redefine-sym _binary___build_$(PLAT)_$(BUILD_TYPE)_smcf_dtb_start=_binary___dtb_start \ + --redefine-sym _binary___build_$(PLAT)_$(BUILD_TYPE)_smcf_dtb_end=_binary___dtb_end +endif ifeq ($(FIRMWARE_UPDATE), 1) $(eval $(call MAKE_IMG,ns_bl1u)) @@ -489,19 +593,50 @@ ifeq (${ARCH}-${PLAT},aarch64-fvp) $(eval $(call MAKE_IMG,cactus_mm)) $(eval $(call MAKE_IMG,cactus)) $(eval $(call MAKE_IMG,ivy)) - $(eval $(call MAKE_IMG,quark)) endif +.PHONY : tftf + $(eval $(call MAKE_IMG,tftf)) + +# Build flag 'ENABLE_REALM_PAYLOAD_TESTS=1' builds and pack Realm Payload Tests +ifeq (${ENABLE_REALM_PAYLOAD_TESTS},1) + $(eval $(call MAKE_IMG,realm)) + +# This forces to rebuild tftf.bin. For incremental build this re-creates tftf.bin +# and removes the old realm payload packed by the last build. +.PHONY : $(BUILD_PLAT)/tftf.bin + +tftf: realm + @echo " PACK REALM PAYLOAD" + $(shell dd if=$(BUILD_PLAT)/realm.bin of=$(BUILD_PLAT)/tftf.bin obs=1 \ + oflag=append conv=notrunc) +endif + +ifeq (${ARCH}-${PLAT},aarch64-tc) + $(eval $(call MAKE_IMG,cactus)) + $(eval $(call MAKE_IMG,ivy)) +endif + +SP_LAYOUT: + ${Q}tools/generate_json/generate_json.sh \ + $(BUILD_PLAT) $(SECURE_PARTITIONS) + # The EL3 test payload is only supported in AArch64. It has an independent build # system. .PHONY: el3_payload +# TODO: EL3 test payload currently is supported for GCC only. It has an independent +# build system and support for Clang to be added. +ifneq ($(findstring gcc,$(notdir $(CC))),) ifneq (${ARCH},aarch32) +ifneq ($(wildcard ${EL3_PAYLOAD_PLAT_MAKEFILE_FULL}),) el3_payload: $(BUILD_DIR) ${Q}${MAKE} -C el3_payload PLAT=${PLAT} ${Q}find "el3_payload/build/${PLAT}" -name '*.bin' -exec cp {} "${BUILD_PLAT}" \; all: el3_payload endif +endif +endif doc: @echo " BUILD DOCUMENTATION" @@ -514,32 +649,34 @@ cscope: ${Q}cscope -b -q -k .PHONY: help +.SILENT: help help: - @echo "usage: ${MAKE} PLAT=<${PLATFORMS}> <all|tftf|ns_bl1u|ns_bl2u|cactus|ivy|quark|el3_payload|distclean|clean|checkcodebase|checkpatch>" - @echo "" - @echo "PLAT is used to specify which platform you wish to build." - @echo "If no platform is specified, PLAT defaults to: ${DEFAULT_PLAT}" - @echo "" - @echo "Supported Targets:" - @echo " all Build all supported binaries for this platform" - @echo " (i.e. TFTF and FWU images)" - @echo " tftf Build the TFTF image" - @echo " ns_bl1u Build the NS_BL1U image" - @echo " ns_bl2u Build the NS_BL2U image" - @echo " cactus Build the Cactus image (Test S-EL0 payload) and resource description." - @echo " cactus_mm Build the Cactus-MM image (Test S-EL0 payload)." - @echo " ivy Build the Ivy image (Test S-EL0 payload) and resource description." - @echo " quark Build the Quark image (Test S-EL0 payload) and resource description." - @echo " el3_payload Build the EL3 test payload" - @echo " checkcodebase Check the coding style of the entire source tree" - @echo " checkpatch Check the coding style on changes in the current" - @echo " branch against BASE_COMMIT (default origin/master)" - @echo " doc Build html based documentation using Sphinx tool" - @echo " clean Clean the build for the selected platform" - @echo " cscope Generate cscope index" - @echo " distclean Remove all build artifacts for all platforms" - @echo "" - @echo "note: most build targets require PLAT to be set to a specific platform." - @echo "" - @echo "example: build all targets for the FVP platform:" - @echo " CROSS_COMPILE=aarch64-none-elf- make PLAT=fvp all" + echo "usage: ${MAKE} PLAT=<${PLATFORMS}> \ +<all|tftf|ns_bl1u|ns_bl2u|cactus|ivy|el3_payload|distclean|clean|checkcodebase|checkpatch|help_tests>" + echo "" + echo "PLAT is used to specify which platform you wish to build." + echo "If no platform is specified, PLAT defaults to: ${DEFAULT_PLAT}" + echo "" + echo "Supported Targets:" + echo " all Build all supported binaries for this platform" + echo " (i.e. TFTF and FWU images)" + echo " tftf Build the TFTF image" + echo " ns_bl1u Build the NS_BL1U image" + echo " ns_bl2u Build the NS_BL2U image" + echo " cactus Build the Cactus image (FF-A S-EL1 test payload)." + echo " cactus_mm Build the Cactus-MM image (SPM-MM S-EL0 test payload)." + echo " ivy Build the Ivy image (FF-A S-EL0 test payload)." + echo " el3_payload Build the EL3 test payload" + echo " checkcodebase Check the coding style of the entire source tree" + echo " checkpatch Check the coding style on changes in the current" + echo " branch against BASE_COMMIT (default origin/master)" + echo " doc Build html based documentation using Sphinx tool" + echo " clean Clean the build for the selected platform" + echo " cscope Generate cscope index" + echo " distclean Remove all build artifacts for all platforms" + echo " help_tests List all possible sets of tests" + echo "" + echo "note: most build targets require PLAT to be set to a specific platform." + echo "" + echo "example: build all targets for the FVP platform:" + echo " CROSS_COMPILE=aarch64-none-elf- make PLAT=fvp all" |