1#------------------------------------------------------------------------------- 2# Copyright (c) 2022, Arm Limited. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6#------------------------------------------------------------------------------- 7 8# A string calibrating routine to the specified length by 9# appending to an input string a specified character. 10# 11# output - variable to return the calibrated string 12 13function(format_string output input size filler) 14 string(LENGTH ${input} length) 15 foreach(i RANGE ${length} ${size}) 16 string(CONCAT input ${input} ${filler}) 17 endforeach() 18 set(${output} ${input} PARENT_SCOPE) 19endfunction() 20 21# Prints formatted list of options with a title 22# 23# title - will be printed in a header 24# options - list of CMake options to print (semicolon separated) 25# 26# Example: 27# dump_options("Partitions" "TFM_PARTITION_CRYPTO; TFM_PARTITION_FIRMWARE_UPDATE ") 28# will produce: 29# -- -------- Partitions --------------------- 30# -- TFM_PARTITION_CRYPTO ON 31# -- TFM_PARTITION_FIRMWARE_UPDATE OFF 32# -- ----------------------------------------- 33 34function(dump_options title options) 35 36 if (CONFIG_TFM_PARTITION_QUIET) 37 return() 38 endif() 39 40 format_string(header "-------- ${title} " 50 "-") 41 message(STATUS ) 42 message(STATUS "${header}") 43 44 foreach (option ${options}) 45 string(STRIP ${option} option) 46 # avoid errors on empty strings to tolerate ';' at the end of list 47 if((DEFINED ${option}) AND NOT ${option} STREQUAL "") 48 format_string(option_name ${option} 40 " ") 49 message(STATUS "${option_name} ${${option}}") 50 endif() 51 endforeach() 52 53 format_string(footer "-" 50 "-") 54 message(STATUS "${footer}") 55endfunction() 56 57function(tfm_invalid_config) 58 if (${ARGV}) 59 string (REPLACE ";" " " ARGV_STRING "${ARGV}") 60 string (REPLACE "STREQUAL" "=" ARGV_STRING "${ARGV_STRING}") 61 string (REPLACE "GREATER" ">" ARGV_STRING "${ARGV_STRING}") 62 string (REPLACE "LESS" "<" ARGV_STRING "${ARGV_STRING}") 63 string (REPLACE "VERSION_LESS" "<" ARGV_STRING "${ARGV_STRING}") 64 string (REPLACE "EQUAL" "=" ARGV_STRING "${ARGV_STRING}") 65 string (REPLACE "IN_LIST" "in" ARGV_STRING "${ARGV_STRING}") 66 67 message(FATAL_ERROR "INVALID CONFIG: ${ARGV_STRING}") 68 endif() 69endfunction() 70