[cmake] Add Matter mbedtls library support option (#27592)

Add option to build and use the Matter version of mbedtls
to cmake helpers.

Signed-off-by: ATmobica <artur.tynecki@arm.com>
diff --git a/config/common/cmake/chip_gn.cmake b/config/common/cmake/chip_gn.cmake
index bfaa91a..618fbfc 100644
--- a/config/common/cmake/chip_gn.cmake
+++ b/config/common/cmake/chip_gn.cmake
@@ -18,7 +18,7 @@
 #   @file
 #     CMake file defining to setup and build the Matter library
 #     and other optional libraries like unit tests.
-#     Matter headers and libraries are exposed to the application 
+#     Matter headers and libraries are exposed to the application
 #     as a specific interface target.
 #     Since Matter doesn't provide native CMake support, ExternalProject
 #     module is used to build the required artifacts with GN meta-build
@@ -57,7 +57,7 @@
 # Macros
 # ==============================================================================
 # Setup and build the Matter library and other optional libraries like unit tests.
-# Expose Matter headers & libraries to the application as specific 
+# Expose Matter headers & libraries to the application as specific
 # interface target.
 # [Args]:
 #   target - interface target name
@@ -65,19 +65,21 @@
 #   LIB_SHELL       Build and add Matter shell library
 #   LIB_PW_RPC      Build and add Matter PW RPC library
 #   LIB_TESTS       Build and add Matter unit tests library
+#   LIB_MBEDTLS     Build and add Matter mbedtls library
 #   DEVICE_INFO_EXAMPLE_PROVIDER Add example device info provider support
 #
 #   GN_DEPENDENCIES List of targets that should be built before Matter GN project
 macro(matter_build target)
     set(options)
     set(oneValueArgs
-        LIB_TESTS 
-        LIB_SHELL 
+        LIB_TESTS
+        LIB_SHELL
         LIB_PW_RPC
+        LIB_MBEDTLS
         DEVICE_INFO_EXAMPLE_PROVIDER
     )
     set(multiValueArgs GN_DEPENDENCIES)
-    
+
     cmake_parse_arguments(ARG "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 
     set(MATTER_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/lib)
@@ -85,6 +87,10 @@
     # Prepare Matter libraries that the application should be linked with
     set(MATTER_LIBRARIES -lCHIP)
 
+    if (ARG_LIB_MBEDTLS)
+        list(APPEND MATTER_LIBRARIES -lmbedtls)
+    endif()
+
     if (ARG_LIB_SHELL)
         list(APPEND MATTER_LIBRARIES -lCHIPShell)
     endif()
@@ -115,7 +121,7 @@
         BUILD_COMMAND           ${CMAKE_COMMAND} -E echo "Starting Matter library build in ${CMAKE_CURRENT_BINARY_DIR}"
         COMMAND                 ${Python3_EXECUTABLE} ${CHIP_ROOT}/config/common/cmake/make_gn_args.py @args.tmp > args.gn.tmp
         # Replace the config only if it has changed to avoid triggering unnecessary rebuilds
-        COMMAND                 bash -c "(! diff -q args.gn.tmp args.gn && mv args.gn.tmp args.gn) || true" 
+        COMMAND                 bash -c "(! diff -q args.gn.tmp args.gn && mv args.gn.tmp args.gn) || true"
         # Regenerate the ninja build system
         COMMAND                 ${GN_EXECUTABLE}
                                     --root=${CHIP_ROOT}
@@ -127,7 +133,7 @@
         COMMAND                 ${CMAKE_COMMAND} -E echo "Matter library build complete"
         INSTALL_COMMAND         ""
         # Byproducts are removed by the clean target removing config and .ninja_deps
-        # allows a rebuild of the external project after the clean target has been run. 
+        # allows a rebuild of the external project after the clean target has been run.
         BUILD_BYPRODUCTS        ${CMAKE_CURRENT_BINARY_DIR}/args.gn
                                 ${CMAKE_CURRENT_BINARY_DIR}/build.ninja
                                 ${CMAKE_CURRENT_BINARY_DIR}/.ninja_deps
@@ -156,6 +162,12 @@
         ${CMAKE_CURRENT_BINARY_DIR}/gen/include
     )
 
+    if (ARG_LIB_MBEDTLS)
+        target_include_directories(${target} INTERFACE
+            ${CHIP_ROOT}/third_party/mbedtls/repo/include
+        )
+    endif()
+
     # ==============================================================================
     # Link required libraries
     # ==============================================================================
diff --git a/config/common/cmake/chip_gn_args.cmake b/config/common/cmake/chip_gn_args.cmake
index 98a9bcc..663e7f4 100644
--- a/config/common/cmake/chip_gn_args.cmake
+++ b/config/common/cmake/chip_gn_args.cmake
@@ -16,7 +16,7 @@
 
 #
 #   @file
-#     CMake file that allows collecting C/C++ compiler flags passed to 
+#     CMake file that allows collecting C/C++ compiler flags passed to
 #     the Matter build system.
 #
 
@@ -165,11 +165,11 @@
 macro(matter_common_gn_args)
     set(options)
     set(oneValueArgs
-        DEBUG 
-        LIB_TESTS 
-        LIB_SHELL 
+        DEBUG
+        LIB_TESTS
+        LIB_SHELL
         LIB_PW_RPC
-        DEVICE_INFO_EXAMPLE_PROVIDER 
+        DEVICE_INFO_EXAMPLE_PROVIDER
         PROJECT_CONFIG
         
     )
@@ -196,7 +196,7 @@
     matter_add_gn_arg_bool          ("is_debug"                 ${ARG_DEBUG})
     matter_add_gn_arg_bool          ("chip_build_tests"         ${ARG_LIB_TESTS})
     matter_add_gn_arg_bool          ("chip_build_libshell"      ${ARG_LIB_SHELL})
-    
+
     if (ARG_LIB_PW_RPC)
         matter_add_gn_arg_bool      ("chip_build_pw_rpc_lib"    ${ARG_LIB_PW_RPC})
     endif() # ARG_LIB_PW_RPC