diff --git a/CMSIS/CMakeLists.txt b/CMSIS/CMakeLists.txt
new file mode 100644
index 0000000..0d603ed
--- /dev/null
+++ b/CMSIS/CMakeLists.txt
@@ -0,0 +1,64 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+#
+# This CMake script used in a split build only. In the legacy 'sinlge' build
+# this file is ignoed. Please don't be confused.
+#
+cmake_minimum_required(VERSION 3.15)
+cmake_policy(SET CMP0079 NEW)
+
+add_library(CMSIS_5_RTX_V8MMN STATIC IMPORTED GLOBAL)
+add_library(CMSIS_5_RTX_V8MMFN STATIC IMPORTED GLOBAL)
+add_library(CMSIS_5_RTX_V8MBN STATIC IMPORTED GLOBAL)
+add_library(CMSIS_5_RTX_CM3 STATIC IMPORTED GLOBAL)
+
+set(CMSIS_LIBS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/RTOS2/RTX/Library)
+
+if ("${CMAKE_C_COMPILER_ID}" STREQUAL GNU)
+    set_target_properties(CMSIS_5_RTX_V8MMN  PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/GCC/libRTX_V8MMN.a)
+    set_target_properties(CMSIS_5_RTX_V8MMFN PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/GCC/libRTX_V8MMFN.a)
+    set_target_properties(CMSIS_5_RTX_V8MBN  PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/GCC/libRTX_V8MBN.a)
+    set_target_properties(CMSIS_5_RTX_CM3    PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/GCC/libRTX_CM3.a)
+elseif("${CMAKE_C_COMPILER_ID}" STREQUAL ARMClang)
+    set_target_properties(CMSIS_5_RTX_V8MMN  PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/ARM/RTX_V8MMN.lib)
+    set_target_properties(CMSIS_5_RTX_V8MMFN PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/ARM/RTX_V8MMFN.lib)
+    set_target_properties(CMSIS_5_RTX_V8MBN  PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/ARM/RTX_V8MBN.lib)
+    set_target_properties(CMSIS_5_RTX_CM3    PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/ARM/RTX_CM3.lib)
+elseif("${CMAKE_C_COMPILER_ID}" STREQUAL IAR)
+    add_library(CMSIS_5_RTX_V81MMN STATIC IMPORTED GLOBAL)
+    set_target_properties(CMSIS_5_RTX_V8MMN  PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/IAR/RTX_V8MMN.a)
+    set_target_properties(CMSIS_5_RTX_V81MMN PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/IAR/RTX_V81MMN.a)
+    set_target_properties(CMSIS_5_RTX_V8MMFN PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/IAR/RTX_V8MMFN.a)
+    set_target_properties(CMSIS_5_RTX_V8MBN  PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/IAR/RTX_V8MBN.a)
+    set_target_properties(CMSIS_5_RTX_CM3    PROPERTIES IMPORTED_LOCATION ${CMSIS_LIBS_DIR}/IAR/RTX_CM3.a)
+else()
+    message(FATAL_ERROR "${CMAKE_C_COMPILER_ID} does not have CMSIS RTX static libraries set up")
+endif()
+
+add_library(RTX_OS STATIC)
+
+target_sources(RTX_OS
+    PUBLIC
+        RTOS2/RTX/Config/RTX_Config.c
+        RTOS2/RTX/Source/rtx_lib.c
+)
+
+target_include_directories(RTX_OS
+    PUBLIC
+        Core/Include
+        RTOS2/Include
+        RTOS2/RTX/Include
+        RTOS2/RTX/Config
+)
+
+target_link_libraries(RTX_OS
+    PRIVATE
+        CMSIS_5_RTX_V8MMN
+        tfm_test_broker
+        platform_ns         # for cmsis_compiler.h
+        psa_interface       # for os_wrapper/common.h
+)
diff --git a/CMSIS/README b/CMSIS/README
index 369c323..307528f 100644
--- a/CMSIS/README
+++ b/CMSIS/README
@@ -1,5 +1,6 @@
 The source codes under this folder are copied from:
 https://github.com/ARM-software/CMSIS_5.git, tag 5.5.0, without modifications.
+Only CMakeLists.txt file is added for TF-M test build purpose.
 
 The prebuilt libraries have two versions:
  - v5.5.0 for ARMCLANG and GCC compilers
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0f09d25..ebac5f3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,6 +5,12 @@
 #
 #-------------------------------------------------------------------------------
 
+cmake_minimum_required(VERSION 3.15)
+
+# This is a legacy root CMake script, kept for backward compatibility.
+# In a new, split build please go to a dedicated test's subdirectory.
+# For example: ./app_ns_test for building NS regression tests.
+
 add_subdirectory(log)
 
 add_subdirectory(lib/ext)
diff --git a/app_ns_test/CMakeLists.txt b/app_ns_test/CMakeLists.txt
new file mode 100644
index 0000000..d66ece8
--- /dev/null
+++ b/app_ns_test/CMakeLists.txt
@@ -0,0 +1,56 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+cmake_minimum_required(VERSION 3.15)
+
+if (NOT DEFINED CONFIG_SPE_PATH OR NOT EXISTS ${CONFIG_SPE_PATH})
+    message(FATAL_ERROR "CONFIG_SPE_PATH = ${CONFIG_SPE_PATH} is not defined or incorrect. Please provide full path to TF-M build artifacts using -DCONFIG_SPE_PATH=")
+endif()
+
+if (NOT DEFINED CMAKE_TOOLCHAIN_FILE)
+    set(CROSS_COMPILE         arm-none-eabi)
+    set(CMAKE_TOOLCHAIN_FILE  ${CONFIG_SPE_PATH}/cmake/toolchain_ns_GNUARM.cmake)
+endif()
+
+if (NOT DEFINED TFM_TEST_PATH)
+    set(TFM_TEST_PATH ${CMAKE_SOURCE_DIR}/../test)
+endif()
+
+set(TFM_NS_REG_TEST       ON)
+set(NS                    ON)
+set(TEST_NS               ON)
+#------------------------------------------------------------------------------
+
+list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/../cmake)
+list(APPEND CMAKE_MODULE_PATH ${CONFIG_SPE_PATH}/cmake)
+
+project(tfm_ns LANGUAGES C)
+
+add_executable(tfm_ns)
+
+add_subdirectory(../ns_interface ${CMAKE_BINARY_DIR}/ns_interface)
+add_subdirectory(../test         ${CMAKE_BINARY_DIR}/tests)
+
+include(../test/config/set_config.cmake)
+
+############################# TFM NS main app ##################################
+
+target_sources(tfm_ns
+    PRIVATE
+        test_app.c
+)
+
+target_link_libraries(tfm_ns
+    PRIVATE
+        tfm_test_broker
+        tfm_ns_tests
+        tfm_test_framework_common
+)
+
+set_target_properties(tfm_ns PROPERTIES
+    SUFFIX ".axf"
+    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+)
diff --git a/app_ns_test/test_app.c b/app_ns_test/test_app.c
new file mode 100644
index 0000000..bd45b38
--- /dev/null
+++ b/app_ns_test/test_app.c
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2017-2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#include "test_app.h"
+#include "tfm_log.h"
+#include "test_framework_integ_test.h"
+
+/**
+ * \brief Services test thread
+ *
+ */
+__attribute__((noreturn))
+void test_app(void *argument)
+{
+    UNUSED_VARIABLE(argument);
+
+    tfm_non_secure_client_run_tests();
+
+    /* Output EOT char for test environments like FVP. */
+    LOG_MSG("\x04");
+
+    /* End of test */
+    for (;;) {
+    }
+}
diff --git a/cmake/utils.cmake b/cmake/utils.cmake
new file mode 100644
index 0000000..2717293
--- /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((DEFINED ${option}) AND NOT ${option} STREQUAL "")
+            format_string(option_name ${option} 40 " ")
+            message(STATUS "${option_name} ${${option}}")
+        endif()
+    endforeach()
+
+    format_string(footer "-" 50 "-")
+    message(STATUS "${footer}")
+endfunction()
+
diff --git a/log/CMakeLists.txt b/log/CMakeLists.txt
index 9860934..2ac6ceb 100644
--- a/log/CMakeLists.txt
+++ b/log/CMakeLists.txt
@@ -6,11 +6,11 @@
 #-------------------------------------------------------------------------------
 
 ############################# Ns Log ###########################################
-add_library(tfm_log INTERFACE)
+add_library(tfm_log STATIC)
 add_library(tfm_log_interface INTERFACE)
 
 target_sources(tfm_log
-    INTERFACE
+    PRIVATE
         tfm_log_raw.c
 )
 
@@ -23,4 +23,6 @@
     INTERFACE
         tfm_log_interface
         platform_common_interface
+    PUBLIC
+        platform_ns
 )
diff --git a/ns_interface/CMakeLists.txt b/ns_interface/CMakeLists.txt
new file mode 100644
index 0000000..0c6990b
--- /dev/null
+++ b/ns_interface/CMakeLists.txt
@@ -0,0 +1,77 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+#
+# This CMake script used in a split build only. In the legacy 'sinlge' build
+# this file is ignoed. Please don't be confused.
+#
+cmake_minimum_required(VERSION 3.15)
+
+# This is important to add this SPE subdirectory at first as it
+# brings configuration from TF-M build
+add_subdirectory(${CONFIG_SPE_PATH} ${CMAKE_BINARY_DIR}/spe)
+
+add_subdirectory(../log             ${CMAKE_BINARY_DIR}/log)
+add_subdirectory(../CMSIS           ${CMAKE_BINARY_DIR}/CMSIS)
+
+add_library(tfm_test_broker STATIC)
+
+target_sources(tfm_test_broker
+    PUBLIC
+        ../app/main_ns.c
+        ../app/os_wrapper_cmsis_rtos_v2.c
+        ns_client_ext/tz_shim_layer.c
+)
+
+target_include_directories(tfm_test_broker
+    PUBLIC
+        .
+        ../app
+)
+
+target_link_libraries(tfm_test_broker
+    PUBLIC
+        RTX_OS
+        tfm_api_ns
+        tfm_log
+)
+
+add_subdirectory(ns_client_ext)
+target_link_libraries(tfm_test_broker PUBLIC tfm_nsid_manager)
+
+if (TFM_PARTITION_NS_AGENT_MAILBOX)
+    add_subdirectory(multi_core)
+    target_link_libraries(tfm_test_broker PUBLIC ns_multi_core)
+endif()
+
+################################################################################
+########### Patches and stubs to the existing (single) build process to leave
+# legacy code untouched for backwrd compatibility.
+# TODO: Sort it out after single build deprecation and code restructuring
+
+# platform_common_interface target is linked to the log target only
+add_library(platform_common_interface INTERFACE)
+
+# platform_region_defs needed by PS tests
+add_library(platform_region_defs INTERFACE)
+
+# stub the tfm_partition target.
+add_library(tfm_partitions INTERFACE)
+
+target_link_libraries(platform_common_interface
+    INTERFACE
+        platform_ns
+)
+
+target_include_directories(tfm_test_broker
+    PUBLIC
+        ns_client_ext   # TODO: It shall be in tfm_nsid_manager. Need to sort out dependencies
+)
+
+target_include_directories(tfm_config
+    INTERFACE
+        ${CMAKE_CURRENT_SOURCE_DIR}
+)
diff --git a/ns_interface/multi_core/CMakeLists.txt b/ns_interface/multi_core/CMakeLists.txt
new file mode 100644
index 0000000..5780624
--- /dev/null
+++ b/ns_interface/multi_core/CMakeLists.txt
@@ -0,0 +1,28 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+#
+# This CMake script used in a split build only. In the legacy 'sinlge' build
+# this file is ignoed. Please don't be confused.
+#
+cmake_minimum_required(VERSION 3.15)
+
+add_library(ns_multi_core STATIC
+    PRIVATE
+        tfm_multi_core_ns_api.c
+        tfm_multi_core_psa_ns_api.c
+        $<$<NOT:$<BOOL:${TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD}>>:tfm_ns_mailbox.c>
+        $<$<AND:$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>,$<BOOL:${TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD}>>:tfm_ns_mailbox_thread.c>
+        # NS RTOS specific implementation of NS mailbox
+        $<$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>:tfm_ns_mailbox_rtos_api.c>
+        $<$<BOOL:${TEST_NS_MULTI_CORE}>:tfm_ns_mailbox_test.c>
+)
+
+target_compile_definitions(ns_multi_core
+    PUBLIC
+        $<$<BOOL:${TFM_PARTITION_NS_AGENT_MAILBOX}>:TFM_PARTITION_NS_AGENT_MAILBOX>
+        $<$<AND:$<BOOL:${TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD}>,$<BOOL:${TFM_MULTI_CORE_TOPOLOGY}>>:TFM_MULTI_CORE_NS_OS_MAILBOX_THREAD>
+)
diff --git a/ns_interface/ns_client_ext/CMakeLists.txt b/ns_interface/ns_client_ext/CMakeLists.txt
new file mode 100644
index 0000000..24a0971
--- /dev/null
+++ b/ns_interface/ns_client_ext/CMakeLists.txt
@@ -0,0 +1,26 @@
+#-------------------------------------------------------------------------------
+# Copyright (c) 2023, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+#-------------------------------------------------------------------------------
+#
+# This CMake script used in a split build only. In the legacy 'sinlge' build
+# this file is ignoed. Please don't be confused.
+#
+cmake_minimum_required(VERSION 3.15)
+
+if (TFM_NS_MANAGE_NSID)
+    add_library(tfm_nsid_manager STATIC
+            tfm_nsid_manager.c
+            ../../app/tfm_nsid_map_table.c
+    )
+
+    target_compile_definitions(tfm_nsid_manager
+        PUBLIC
+            TFM_NS_MANAGE_NSID
+            $<$<BOOL:${TEST_NS_MANAGE_NSID}>:TEST_NS_MANAGE_NSID>
+    )
+else()
+    add_library(tfm_nsid_manager INTERFACE)
+endif()
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
old mode 100755
new mode 100644
index a0a018b..15053d7
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -7,22 +7,22 @@
 
 cmake_minimum_required(VERSION 3.13)
 
-add_library(tfm_test_framework_common INTERFACE)
+add_library(tfm_test_framework_common STATIC)
 
 target_sources(tfm_test_framework_common
-    INTERFACE
+    PRIVATE
         ${CMAKE_CURRENT_SOURCE_DIR}/framework/test_framework.c
         ${CMAKE_CURRENT_SOURCE_DIR}/framework/test_framework_helpers.c
         ${CMAKE_CURRENT_SOURCE_DIR}/framework/test_framework_integ_test_helper.c
 )
 
 target_include_directories(tfm_test_framework_common
-    INTERFACE
+    PUBLIC
         framework
 )
 
 target_link_libraries(tfm_test_framework_common
-    INTERFACE
+    PUBLIC
         tfm_log_interface
 )
 
diff --git a/test/secure_fw/suites/CMakeLists.txt b/test/secure_fw/suites/CMakeLists.txt
index c44541e..cda6e6d 100644
--- a/test/secure_fw/suites/CMakeLists.txt
+++ b/test/secure_fw/suites/CMakeLists.txt
@@ -70,9 +70,9 @@
 add_subdirectory(crypto)
 add_subdirectory(extra)
 add_subdirectory(its)
-add_subdirectory(qcbor)
+# add_subdirectory(qcbor)
 add_subdirectory(ps)
-add_subdirectory(t_cose)
+# add_subdirectory(t_cose)
 add_subdirectory(platform)
 add_subdirectory(fwu)
 add_subdirectory(multi_core/non_secure)
diff --git a/test/secure_fw/suites/nsid/CMakeLists.txt b/test/secure_fw/suites/nsid/CMakeLists.txt
index b3b6262..3dd41eb 100644
--- a/test/secure_fw/suites/nsid/CMakeLists.txt
+++ b/test/secure_fw/suites/nsid/CMakeLists.txt
@@ -35,6 +35,7 @@
     PRIVATE
         tfm_test_framework_ns
         platform_ns
+        tfm_test_broker
 )
 
 target_link_libraries(tfm_ns_tests
