Build: Unifying and format configuration printout

Signed-off-by: Anton Komlev <anton.komlev@arm.com>
Change-Id: I2085c31803e6341703038822b507c8e31db7afb0
diff --git a/cmake/utils.cmake b/cmake/utils.cmake
new file mode 100644
index 0000000..7b5f9b5
--- /dev/null
+++ b/cmake/utils.cmake
@@ -0,0 +1,56 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2022, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+
+# A string calibrating routine to the specified length by
+# appending to an input string a specified character.
+#
+# output - variable to return the calibrated string
+
+function(format_string output input size filler)
+    string(LENGTH ${input} length)
+    foreach(i RANGE ${length} ${size})
+        string(CONCAT input ${input} ${filler})
+    endforeach()
+    set(${output} ${input} PARENT_SCOPE)
+endfunction()
+
+# Prints formatted list of options with a title
+#
+# title - will be printed in a header
+# options - list of CMake options to print (semicolon separated)
+#
+# Example:
+# dump_options("Partitions" "TFM_PARTITION_CRYPTO; TFM_PARTITION_FIRMWARE_UPDATE ")
+# will produce:
+# -- -------- Partitions ---------------------
+# -- TFM_PARTITION_CRYPTO                  ON
+# -- TFM_PARTITION_FIRMWARE_UPDATE         OFF
+# -- -----------------------------------------
+
+function(dump_options title options)
+
+    if (CONFIG_TFM_PARTITION_QUIET)
+        return()
+    endif()
+
+    format_string(header "-------- ${title} " 50 "-")
+    message(STATUS )
+    message(STATUS "${header}")
+
+    foreach (option ${options})
+        string(STRIP ${option} option)
+        # avoid errors on empty strings to tolerate ';' at the end of list
+        if (option)
+            format_string(option_name ${option} 40 " ")
+            message(STATUS "${option_name} ${${option}}")
+        endif()
+    endforeach()
+
+    format_string(footer "-" 50 "-")
+    message(STATUS "${footer}")
+endfunction()
+
diff --git a/secure_fw/partitions/crypto/CMakeLists.txt b/secure_fw/partitions/crypto/CMakeLists.txt
index 94dcece..c792693 100644
--- a/secure_fw/partitions/crypto/CMakeLists.txt
+++ b/secure_fw/partitions/crypto/CMakeLists.txt
@@ -80,25 +80,24 @@
 )
 
 ################ Display the configuration being applied #######################
-if (NOT CONFIG_TFM_PARTITION_QUIET)
-    message(STATUS "---------- Display crypto configuration - start --------------")
 
-    message(STATUS "CRYPTO_RNG_MODULE_DISABLED is set to ${CRYPTO_RNG_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_KEY_MODULE_DISABLED is set to ${CRYPTO_KEY_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_AEAD_MODULE_DISABLED is set to ${CRYPTO_AEAD_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_MAC_MODULE_DISABLED is set to ${CRYPTO_MAC_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_CIPHER_MODULE_DISABLED is set to ${CRYPTO_CIPHER_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_HASH_MODULE_DISABLED is set to ${CRYPTO_HASH_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_KEY_DERIVATION_MODULE_DISABLED is set to ${CRYPTO_KEY_DERIVATION_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_ASYM_SIGN_MODULE_DISABLED is set to ${CRYPTO_ASYM_SIGN_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED is set to ${CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED}")
-    message(STATUS "CRYPTO_ENGINE_BUF_SIZE is set to ${CRYPTO_ENGINE_BUF_SIZE}")
-    message(STATUS "CRYPTO_CONC_OPER_NUM is set to ${CRYPTO_CONC_OPER_NUM}")
-    if (${TFM_PSA_API})
-        message(STATUS "CRYPTO_IOVEC_BUFFER_SIZE is set to ${CRYPTO_IOVEC_BUFFER_SIZE}")
-    endif()
-    message(STATUS "---------- Display crypto configuration - stop ---------------")
-endif()
+include(utils)
+    dump_options("Crypto config"
+    "
+        CRYPTO_RNG_MODULE_DISABLED;
+        CRYPTO_KEY_MODULE_DISABLED;
+        CRYPTO_AEAD_MODULE_DISABLED;
+        CRYPTO_MAC_MODULE_DISABLED;
+        CRYPTO_CIPHER_MODULE_DISABLED;
+        CRYPTO_HASH_MODULE_DISABLED;
+        CRYPTO_KEY_DERIVATION_MODULE_DISABLED;
+        CRYPTO_ASYM_SIGN_MODULE_DISABLED;
+        CRYPTO_ASYM_ENCRYPT_MODULE_DISABLED;
+        CRYPTO_ENGINE_BUF_SIZE;
+        CRYPTO_CONC_OPER_NUM;
+        CRYPTO_IOVEC_BUFFER_SIZE;
+    "
+    )
 
 ############################ Secure API ########################################
 
diff --git a/secure_fw/partitions/internal_trusted_storage/CMakeLists.txt b/secure_fw/partitions/internal_trusted_storage/CMakeLists.txt
index 2dac309..9631eea 100644
--- a/secure_fw/partitions/internal_trusted_storage/CMakeLists.txt
+++ b/secure_fw/partitions/internal_trusted_storage/CMakeLists.txt
@@ -82,31 +82,26 @@
 
 ################ Display the configuration being applied #######################
 
-if (NOT CONFIG_TFM_PARTITION_QUIET)
-    message(STATUS "----------- Display storage configuration - start ------------")
+include(utils)
+    dump_options("Storage config"
+    "
+        PS_CREATE_FLASH_LAYOUT;
+        PS_ENCRYPTION;
+        PS_RAM_FS;
+        PS_ROLLBACK_PROTECTION;
+        PS_VALIDATE_METADATA_FROM_FLASH;
+        PS_MAX_ASSET_SIZE;
+        PS_NUM_ASSETS;
+        PS_CRYPTO_AEAD_ALG;
 
-    message(STATUS "PS_CREATE_FLASH_LAYOUT is set to ${PS_CREATE_FLASH_LAYOUT}")
-    message(STATUS "PS_ENCRYPTION is set to ${PS_ENCRYPTION}")
-    message(STATUS "PS_RAM_FS is set to ${PS_RAM_FS}")
-    message(STATUS "PS_ROLLBACK_PROTECTION is set to ${PS_ROLLBACK_PROTECTION}")
-    message(STATUS "PS_VALIDATE_METADATA_FROM_FLASH is set to ${PS_VALIDATE_METADATA_FROM_FLASH}")
-    message(STATUS "PS_MAX_ASSET_SIZE is set to ${PS_MAX_ASSET_SIZE}")
-    message(STATUS "PS_NUM_ASSETS is set to ${PS_NUM_ASSETS}")
-    message(STATUS "PS_CRYPTO_AEAD_ALG is set to ${PS_CRYPTO_AEAD_ALG}")
-
-    message(STATUS "ITS_CREATE_FLASH_LAYOUT is set to ${ITS_CREATE_FLASH_LAYOUT}")
-    message(STATUS "ITS_RAM_FS is set to ${ITS_RAM_FS}")
-    message(STATUS "ITS_VALIDATE_METADATA_FROM_FLASH is set to ${ITS_VALIDATE_METADATA_FROM_FLASH}")
-    message(STATUS "ITS_MAX_ASSET_SIZE is set to ${ITS_MAX_ASSET_SIZE}")
-    message(STATUS "ITS_NUM_ASSETS is set to ${ITS_NUM_ASSETS}")
-    if (${ITS_BUF_SIZE})
-        message(STATUS "ITS_BUF_SIZE is set to ${ITS_BUF_SIZE}")
-    else()
-        message(STATUS "ITS_BUF_SIZE is not set (defaults to ITS_MAX_ASSET_SIZE)")
-    endif()
-
-    message(STATUS "----------- Display storage configuration - stop -------------")
-endif()
+        ITS_CREATE_FLASH_LAYOUT;
+        ITS_RAM_FS;
+        ITS_VALIDATE_METADATA_FROM_FLASH;
+        ITS_MAX_ASSET_SIZE;
+        ITS_NUM_ASSETS;
+        ITS_BUF_SIZE
+    "
+    )
 
 ############################ Secure API ########################################
 
diff --git a/tools/tfm_parse_manifest_list.py b/tools/tfm_parse_manifest_list.py
index ce7bb60..16ab1cc 100644
--- a/tools/tfm_parse_manifest_list.py
+++ b/tools/tfm_parse_manifest_list.py
@@ -288,10 +288,10 @@
             is_enabled = 'on'
 
         if is_enabled in valid_disabled_conditions:
-            logging.info("{} partition is disabled".format(manifest_item['name']))
+            logging.info("   {:40s}  OFF".format(manifest_item['name']))
             continue
         elif is_enabled in valid_enabled_conditions:
-            logging.info("{} partition is enabled".format(manifest_item['name']))
+            logging.info("   {:40s}  ON".format(manifest_item['name']))
         else:
             raise Exception('Invalid "conditional" attribute: "{}" for {}. '
                             'Please set to one of {} or {}, case-insensitive.'\