diff --git a/Makefile b/Makefile index af829f2bd..7ebccf9a8 100644 --- a/Makefile +++ b/Makefile @@ -855,71 +855,77 @@ endif # Build options checks ################################################################################ -$(eval $(call assert_boolean,ALLOW_RO_XLAT_TABLES)) -$(eval $(call assert_boolean,COLD_BOOT_SINGLE_CPU)) -$(eval $(call assert_boolean,CREATE_KEYS)) -$(eval $(call assert_boolean,CTX_INCLUDE_AARCH32_REGS)) -$(eval $(call assert_boolean,CTX_INCLUDE_FPREGS)) -$(eval $(call assert_boolean,CTX_INCLUDE_PAUTH_REGS)) -$(eval $(call assert_boolean,CTX_INCLUDE_MTE_REGS)) -$(eval $(call assert_boolean,CTX_INCLUDE_EL2_REGS)) -$(eval $(call assert_boolean,DEBUG)) -$(eval $(call assert_boolean,DYN_DISABLE_AUTH)) -$(eval $(call assert_boolean,EL3_EXCEPTION_HANDLING)) -$(eval $(call assert_boolean,ENABLE_AMU)) -$(eval $(call assert_boolean,ENABLE_ASSERTIONS)) -$(eval $(call assert_boolean,ENABLE_MPAM_FOR_LOWER_ELS)) -$(eval $(call assert_boolean,ENABLE_PIE)) -$(eval $(call assert_boolean,ENABLE_PMF)) -$(eval $(call assert_boolean,ENABLE_PSCI_STAT)) -$(eval $(call assert_boolean,ENABLE_RUNTIME_INSTRUMENTATION)) -$(eval $(call assert_boolean,ENABLE_SPE_FOR_LOWER_ELS)) -$(eval $(call assert_boolean,ENABLE_SVE_FOR_NS)) -$(eval $(call assert_boolean,ERROR_DEPRECATED)) -$(eval $(call assert_boolean,FAULT_INJECTION_SUPPORT)) -$(eval $(call assert_boolean,GENERATE_COT)) -$(eval $(call assert_boolean,GICV2_G0_FOR_EL3)) -$(eval $(call assert_boolean,HANDLE_EA_EL3_FIRST)) -$(eval $(call assert_boolean,HW_ASSISTED_COHERENCY)) -$(eval $(call assert_boolean,INVERTED_MEMMAP)) -$(eval $(call assert_boolean,MEASURED_BOOT)) -$(eval $(call assert_boolean,NS_TIMER_SWITCH)) -$(eval $(call assert_boolean,OVERRIDE_LIBC)) -$(eval $(call assert_boolean,PL011_GENERIC_UART)) -$(eval $(call assert_boolean,PROGRAMMABLE_RESET_ADDRESS)) -$(eval $(call assert_boolean,PSCI_EXTENDED_STATE_ID)) -$(eval $(call assert_boolean,RAS_EXTENSION)) -$(eval $(call assert_boolean,RESET_TO_BL31)) -$(eval $(call assert_boolean,SAVE_KEYS)) -$(eval $(call assert_boolean,SEPARATE_CODE_AND_RODATA)) -$(eval $(call assert_boolean,SEPARATE_NOBITS_REGION)) -$(eval $(call assert_boolean,SPIN_ON_BL1_EXIT)) -$(eval $(call assert_boolean,SPM_MM)) -$(eval $(call assert_boolean,SPMD_SPM_AT_SEL2)) -$(eval $(call assert_boolean,TRUSTED_BOARD_BOOT)) -$(eval $(call assert_boolean,USE_COHERENT_MEM)) -$(eval $(call assert_boolean,USE_DEBUGFS)) -$(eval $(call assert_boolean,ARM_IO_IN_DTB)) -$(eval $(call assert_boolean,SDEI_IN_FCONF)) -$(eval $(call assert_boolean,SEC_INT_DESC_IN_FCONF)) -$(eval $(call assert_boolean,USE_ROMLIB)) -$(eval $(call assert_boolean,USE_TBBR_DEFS)) -$(eval $(call assert_boolean,WARMBOOT_ENABLE_DCACHE_EARLY)) -$(eval $(call assert_boolean,BL2_AT_EL3)) -$(eval $(call assert_boolean,BL2_IN_XIP_MEM)) -$(eval $(call assert_boolean,BL2_INV_DCACHE)) -$(eval $(call assert_boolean,USE_SPINLOCK_CAS)) -$(eval $(call assert_boolean,ENCRYPT_BL31)) -$(eval $(call assert_boolean,ENCRYPT_BL32)) -$(eval $(call assert_boolean,ERRATA_SPECULATIVE_AT)) -$(eval $(call assert_boolean,RAS_TRAP_LOWER_EL_ERR_ACCESS)) -$(eval $(call assert_boolean,COT_DESC_IN_DTB)) -$(eval $(call assert_boolean,USE_SP804_TIMER)) +$(eval $(call assert_booleans,\ + $(sort \ + ALLOW_RO_XLAT_TABLES \ + COLD_BOOT_SINGLE_CPU \ + CREATE_KEYS \ + CTX_INCLUDE_AARCH32_REGS \ + CTX_INCLUDE_FPREGS \ + CTX_INCLUDE_PAUTH_REGS \ + CTX_INCLUDE_MTE_REGS \ + CTX_INCLUDE_EL2_REGS \ + DEBUG \ + DYN_DISABLE_AUTH \ + EL3_EXCEPTION_HANDLING \ + ENABLE_AMU \ + ENABLE_ASSERTIONS \ + ENABLE_MPAM_FOR_LOWER_ELS \ + ENABLE_PIE \ + ENABLE_PMF \ + ENABLE_PSCI_STAT \ + ENABLE_RUNTIME_INSTRUMENTATION \ + ENABLE_SPE_FOR_LOWER_ELS \ + ENABLE_SVE_FOR_NS \ + ERROR_DEPRECATED \ + FAULT_INJECTION_SUPPORT \ + GENERATE_COT \ + GICV2_G0_FOR_EL3 \ + HANDLE_EA_EL3_FIRST \ + HW_ASSISTED_COHERENCY \ + INVERTED_MEMMAP \ + MEASURED_BOOT \ + NS_TIMER_SWITCH \ + OVERRIDE_LIBC \ + PL011_GENERIC_UART \ + PROGRAMMABLE_RESET_ADDRESS \ + PSCI_EXTENDED_STATE_ID \ + RAS_EXTENSION \ + RESET_TO_BL31 \ + SAVE_KEYS \ + SEPARATE_CODE_AND_RODATA \ + SEPARATE_NOBITS_REGION \ + SPIN_ON_BL1_EXIT \ + SPM_MM \ + SPMD_SPM_AT_SEL2 \ + TRUSTED_BOARD_BOOT \ + USE_COHERENT_MEM \ + USE_DEBUGFS \ + ARM_IO_IN_DTB \ + SDEI_IN_FCONF \ + SEC_INT_DESC_IN_FCONF \ + USE_ROMLIB \ + USE_TBBR_DEFS \ + WARMBOOT_ENABLE_DCACHE_EARLY \ + BL2_AT_EL3 \ + BL2_IN_XIP_MEM \ + BL2_INV_DCACHE \ + USE_SPINLOCK_CAS \ + ENCRYPT_BL31 \ + ENCRYPT_BL32 \ + ERRATA_SPECULATIVE_AT \ + RAS_TRAP_LOWER_EL_ERR_ACCESS \ + COT_DESC_IN_DTB \ + USE_SP804_TIMER \ +))) -$(eval $(call assert_numeric,ARM_ARCH_MAJOR)) -$(eval $(call assert_numeric,ARM_ARCH_MINOR)) -$(eval $(call assert_numeric,BRANCH_PROTECTION)) -$(eval $(call assert_numeric,FW_ENC_STATUS)) +$(eval $(call assert_numerics,\ + $(sort \ + ARM_ARCH_MAJOR \ + ARM_ARCH_MINOR \ + BRANCH_PROTECTION \ + FW_ENC_STATUS \ +))) ifdef KEY_SIZE $(eval $(call assert_numeric,KEY_SIZE)) @@ -935,68 +941,71 @@ endif # platform to overwrite the default options ################################################################################ -$(eval $(call add_define,ALLOW_RO_XLAT_TABLES)) -$(eval $(call add_define,ARM_ARCH_MAJOR)) -$(eval $(call add_define,ARM_ARCH_MINOR)) -$(eval $(call add_define,COLD_BOOT_SINGLE_CPU)) -$(eval $(call add_define,CTX_INCLUDE_AARCH32_REGS)) -$(eval $(call add_define,CTX_INCLUDE_FPREGS)) -$(eval $(call add_define,CTX_INCLUDE_PAUTH_REGS)) -$(eval $(call add_define,EL3_EXCEPTION_HANDLING)) -$(eval $(call add_define,CTX_INCLUDE_MTE_REGS)) -$(eval $(call add_define,CTX_INCLUDE_EL2_REGS)) -$(eval $(call add_define,DECRYPTION_SUPPORT_${DECRYPTION_SUPPORT})) -$(eval $(call add_define,ENABLE_AMU)) -$(eval $(call add_define,ENABLE_ASSERTIONS)) -$(eval $(call add_define,ENABLE_BTI)) -$(eval $(call add_define,ENABLE_MPAM_FOR_LOWER_ELS)) -$(eval $(call add_define,ENABLE_PAUTH)) -$(eval $(call add_define,ENABLE_PIE)) -$(eval $(call add_define,ENABLE_PMF)) -$(eval $(call add_define,ENABLE_PSCI_STAT)) -$(eval $(call add_define,ENABLE_RUNTIME_INSTRUMENTATION)) -$(eval $(call add_define,ENABLE_SPE_FOR_LOWER_ELS)) -$(eval $(call add_define,ENABLE_SVE_FOR_NS)) -$(eval $(call add_define,ENCRYPT_BL31)) -$(eval $(call add_define,ENCRYPT_BL32)) -$(eval $(call add_define,ERROR_DEPRECATED)) -$(eval $(call add_define,FAULT_INJECTION_SUPPORT)) -$(eval $(call add_define,GICV2_G0_FOR_EL3)) -$(eval $(call add_define,HANDLE_EA_EL3_FIRST)) -$(eval $(call add_define,HW_ASSISTED_COHERENCY)) -$(eval $(call add_define,LOG_LEVEL)) -$(eval $(call add_define,MEASURED_BOOT)) -$(eval $(call add_define,NS_TIMER_SWITCH)) -$(eval $(call add_define,PL011_GENERIC_UART)) -$(eval $(call add_define,PLAT_${PLAT})) -$(eval $(call add_define,PROGRAMMABLE_RESET_ADDRESS)) -$(eval $(call add_define,PSCI_EXTENDED_STATE_ID)) -$(eval $(call add_define,RAS_EXTENSION)) -$(eval $(call add_define,RESET_TO_BL31)) -$(eval $(call add_define,SEPARATE_CODE_AND_RODATA)) -$(eval $(call add_define,SEPARATE_NOBITS_REGION)) -$(eval $(call add_define,RECLAIM_INIT_CODE)) -$(eval $(call add_define,SPD_${SPD})) -$(eval $(call add_define,SPIN_ON_BL1_EXIT)) -$(eval $(call add_define,SPM_MM)) -$(eval $(call add_define,SPMD_SPM_AT_SEL2)) -$(eval $(call add_define,TRUSTED_BOARD_BOOT)) -$(eval $(call add_define,USE_COHERENT_MEM)) -$(eval $(call add_define,USE_DEBUGFS)) -$(eval $(call add_define,ARM_IO_IN_DTB)) -$(eval $(call add_define,SDEI_IN_FCONF)) -$(eval $(call add_define,SEC_INT_DESC_IN_FCONF)) -$(eval $(call add_define,USE_ROMLIB)) -$(eval $(call add_define,USE_TBBR_DEFS)) -$(eval $(call add_define,WARMBOOT_ENABLE_DCACHE_EARLY)) -$(eval $(call add_define,BL2_AT_EL3)) -$(eval $(call add_define,BL2_IN_XIP_MEM)) -$(eval $(call add_define,BL2_INV_DCACHE)) -$(eval $(call add_define,USE_SPINLOCK_CAS)) -$(eval $(call add_define,ERRATA_SPECULATIVE_AT)) -$(eval $(call add_define,RAS_TRAP_LOWER_EL_ERR_ACCESS)) -$(eval $(call add_define,COT_DESC_IN_DTB)) -$(eval $(call add_define,USE_SP804_TIMER)) +$(eval $(call add_defines,\ + $(sort \ + ALLOW_RO_XLAT_TABLES \ + ARM_ARCH_MAJOR \ + ARM_ARCH_MINOR \ + COLD_BOOT_SINGLE_CPU \ + CTX_INCLUDE_AARCH32_REGS \ + CTX_INCLUDE_FPREGS \ + CTX_INCLUDE_PAUTH_REGS \ + EL3_EXCEPTION_HANDLING \ + CTX_INCLUDE_MTE_REGS \ + CTX_INCLUDE_EL2_REGS \ + DECRYPTION_SUPPORT_${DECRYPTION_SUPPORT} \ + ENABLE_AMU \ + ENABLE_ASSERTIONS \ + ENABLE_BTI \ + ENABLE_MPAM_FOR_LOWER_ELS \ + ENABLE_PAUTH \ + ENABLE_PIE \ + ENABLE_PMF \ + ENABLE_PSCI_STAT \ + ENABLE_RUNTIME_INSTRUMENTATION \ + ENABLE_SPE_FOR_LOWER_ELS \ + ENABLE_SVE_FOR_NS \ + ENCRYPT_BL31 \ + ENCRYPT_BL32 \ + ERROR_DEPRECATED \ + FAULT_INJECTION_SUPPORT \ + GICV2_G0_FOR_EL3 \ + HANDLE_EA_EL3_FIRST \ + HW_ASSISTED_COHERENCY \ + LOG_LEVEL \ + MEASURED_BOOT \ + NS_TIMER_SWITCH \ + PL011_GENERIC_UART \ + PLAT_${PLAT} \ + PROGRAMMABLE_RESET_ADDRESS \ + PSCI_EXTENDED_STATE_ID \ + RAS_EXTENSION \ + RESET_TO_BL31 \ + SEPARATE_CODE_AND_RODATA \ + SEPARATE_NOBITS_REGION \ + RECLAIM_INIT_CODE \ + SPD_${SPD} \ + SPIN_ON_BL1_EXIT \ + SPM_MM \ + SPMD_SPM_AT_SEL2 \ + TRUSTED_BOARD_BOOT \ + USE_COHERENT_MEM \ + USE_DEBUGFS \ + ARM_IO_IN_DTB \ + SDEI_IN_FCONF \ + SEC_INT_DESC_IN_FCONF \ + USE_ROMLIB \ + USE_TBBR_DEFS \ + WARMBOOT_ENABLE_DCACHE_EARLY \ + BL2_AT_EL3 \ + BL2_IN_XIP_MEM \ + BL2_INV_DCACHE \ + USE_SPINLOCK_CAS \ + ERRATA_SPECULATIVE_AT \ + RAS_TRAP_LOWER_EL_ERR_ACCESS \ + COT_DESC_IN_DTB \ + USE_SP804_TIMER \ +))) ifeq (${SANITIZE_UB},trap) $(eval $(call add_define,MONITOR_TRAPS)) diff --git a/bl31/bl31.mk b/bl31/bl31.mk index 0948e94e0..735d1fcfc 100644 --- a/bl31/bl31.mk +++ b/bl31/bl31.mk @@ -89,10 +89,16 @@ ifndef CRASH_REPORTING CRASH_REPORTING := $(DEBUG) endif -$(eval $(call assert_boolean,CRASH_REPORTING)) -$(eval $(call assert_boolean,EL3_EXCEPTION_HANDLING)) -$(eval $(call assert_boolean,SDEI_SUPPORT)) +$(eval $(call assert_booleans,\ + $(sort \ + CRASH_REPORTING \ + EL3_EXCEPTION_HANDLING \ + SDEI_SUPPORT \ +))) -$(eval $(call add_define,CRASH_REPORTING)) -$(eval $(call add_define,EL3_EXCEPTION_HANDLING)) -$(eval $(call add_define,SDEI_SUPPORT)) +$(eval $(call add_defines,\ + $(sort \ + CRASH_REPORTING \ + EL3_EXCEPTION_HANDLING \ + SDEI_SUPPORT \ +))) diff --git a/drivers/auth/mbedtls/mbedtls_common.mk b/drivers/auth/mbedtls/mbedtls_common.mk index 94f2f59e1..8454105c2 100644 --- a/drivers/auth/mbedtls/mbedtls_common.mk +++ b/drivers/auth/mbedtls/mbedtls_common.mk @@ -98,10 +98,13 @@ else endif # Needs to be set to drive mbed TLS configuration correctly -$(eval $(call add_define,TF_MBEDTLS_KEY_ALG_ID)) -$(eval $(call add_define,TF_MBEDTLS_KEY_SIZE)) -$(eval $(call add_define,TF_MBEDTLS_HASH_ALG_ID)) -$(eval $(call add_define,TF_MBEDTLS_USE_AES_GCM)) +$(eval $(call add_defines,\ + $(sort \ + TF_MBEDTLS_KEY_ALG_ID \ + TF_MBEDTLS_KEY_SIZE \ + TF_MBEDTLS_HASH_ALG_ID \ + TF_MBEDTLS_USE_AES_GCM \ +))) $(eval $(call MAKE_LIB,mbedtls)) diff --git a/drivers/measured_boot/measured_boot.mk b/drivers/measured_boot/measured_boot.mk index fc005d5ed..b7aa48bb9 100644 --- a/drivers/measured_boot/measured_boot.mk +++ b/drivers/measured_boot/measured_boot.mk @@ -25,10 +25,13 @@ endif EVENT_LOG_SIZE := 1024 # Set definitions for mbed TLS library and Measured Boot driver -$(eval $(call add_define,MBEDTLS_MD_ID)) -$(eval $(call add_define,TPM_ALG_ID)) -$(eval $(call add_define,TCG_DIGEST_SIZE)) -$(eval $(call add_define,EVENT_LOG_SIZE)) +$(eval $(call add_defines,\ + $(sort \ + MBEDTLS_MD_ID \ + TPM_ALG_ID \ + TCG_DIGEST_SIZE \ + EVENT_LOG_SIZE \ +))) ifeq (${HASH_ALG}, sha256) ifneq (${TPM_HASH_ALG}, sha256) diff --git a/make_helpers/armv7-a-cpus.mk b/make_helpers/armv7-a-cpus.mk index 5571ab0f7..eec85cc1e 100644 --- a/make_helpers/armv7-a-cpus.mk +++ b/make_helpers/armv7-a-cpus.mk @@ -44,10 +44,13 @@ endif # Defined if ARMv7 core supports the Generic Timer extension. ifeq ($(filter yes,$(ARM_CORTEX_A7) $(ARM_CORTEX_A12) $(ARM_CORTEX_A15) $(ARM_CORTEX_A17)),yes) -$(eval $(call add_define,ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING)) -$(eval $(call add_define,ARMV7_SUPPORTS_VIRTUALIZATION)) -$(eval $(call add_define,ARMV7_SUPPORTS_GENERIC_TIMER)) -$(eval $(call add_define,ARMV7_SUPPORTS_VFP)) +$(eval $(call add_defines,\ + $(sort \ + ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING \ + ARMV7_SUPPORTS_VIRTUALIZATION \ + ARMV7_SUPPORTS_GENERIC_TIMER \ + ARMV7_SUPPORTS_VFP \ +))) endif ifeq ($(ARM_CORTEX_A5),yes) diff --git a/make_helpers/build_macros.mk b/make_helpers/build_macros.mk index 1c3d14d05..613fca23f 100644 --- a/make_helpers/build_macros.mk +++ b/make_helpers/build_macros.mk @@ -44,6 +44,13 @@ define add_define DEFINES += -D$(1)$(if $(value $(1)),=$(value $(1)),) endef + +# Convenience function for addding multiple build definitions +# $(eval $(call add_defines,FOO BOO)) +define add_defines + $(foreach def,$1,$(eval $(call add_define,$(def)))) +endef + # Convenience function for adding build definitions # $(eval $(call add_define_val,FOO,BAR)) will have: # -DFOO=BAR @@ -57,6 +64,12 @@ define assert_boolean $(if $(filter-out 0 1,$($1)),$(error $1 must be boolean)) endef +# Convenience function for verifying options have boolean values +# $(eval $(call assert_booleans,FOO BOO)) will assert FOO and BOO for 0 or 1 values +define assert_booleans + $(foreach bool,$1,$(eval $(call assert_boolean,$(bool)))) +endef + 0-9 := 0 1 2 3 4 5 6 7 8 9 # Function to verify that a given option $(1) contains a numeric value @@ -67,6 +80,12 @@ $(foreach d,$(0-9),$(eval __numeric := $(subst $(d),,$(__numeric)))) $(if $(__numeric),$(error $(1) must be numeric)) endef +# Convenience function for verifying options have numeric values +# $(eval $(call assert_numerics,FOO BOO)) will assert FOO and BOO contain numeric values +define assert_numerics + $(foreach num,$1,$(eval $(call assert_numeric,$(num)))) +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 diff --git a/plat/st/stm32mp1/platform.mk b/plat/st/stm32mp1/platform.mk index 999823617..41eacc8fd 100644 --- a/plat/st/stm32mp1/platform.mk +++ b/plat/st/stm32mp1/platform.mk @@ -46,16 +46,23 @@ ifeq ($(filter 1,${STM32MP_EMMC} ${STM32MP_SDMMC} ${STM32MP_RAW_NAND} \ $(error "No boot device driver is enabled") endif -$(eval $(call assert_boolean,STM32MP_EMMC)) -$(eval $(call assert_boolean,STM32MP_SDMMC)) -$(eval $(call assert_boolean,STM32MP_RAW_NAND)) -$(eval $(call assert_boolean,STM32MP_SPI_NAND)) -$(eval $(call assert_boolean,STM32MP_SPI_NOR)) -$(eval $(call add_define,STM32MP_EMMC)) -$(eval $(call add_define,STM32MP_SDMMC)) -$(eval $(call add_define,STM32MP_RAW_NAND)) -$(eval $(call add_define,STM32MP_SPI_NAND)) -$(eval $(call add_define,STM32MP_SPI_NOR)) +$(eval $(call assert_booleans,\ + $(sort \ + STM32MP_EMMC \ + STM32MP_SDMMC \ + STM32MP_RAW_NAND \ + STM32MP_SPI_NAND \ + STM32MP_SPI_NOR \ +))) + +$(eval $(call add_defines,\ + $(sort \ + STM32MP_EMMC \ + STM32MP_SDMMC \ + STM32MP_RAW_NAND \ + STM32MP_SPI_NAND \ + STM32MP_SPI_NOR \ +))) PLAT_INCLUDES := -Iplat/st/common/include/ PLAT_INCLUDES += -Iplat/st/stm32mp1/include/