Fix passing libc settings to nanopb and MbedTLS
The nanobp and the MbedTLS build is not getting the system include PATH
settings from stdlib::c.
This patch fixes the issue.
Change-Id: Ic345442590dcc1c2237377ef8cac3774ae8e7052
Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>
diff --git a/deployments/crypto/crypto.cmake b/deployments/crypto/crypto.cmake
index 64c3b1c..3f3df3c 100644
--- a/deployments/crypto/crypto.cmake
+++ b/deployments/crypto/crypto.cmake
@@ -62,15 +62,18 @@
# Get libc include dir
get_property(LIBC_INCLUDE_PATH TARGET stdlib::c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
+get_property(LIBC_SYSTEM_INCLUDE_PATH TARGET stdlib::c PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES)
# Nanopb
list(APPEND NANOPB_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
+list(APPEND NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS ${LIBC_SYSTEM_INCLUDE_PATH})
include(../../../external/nanopb/nanopb.cmake)
target_link_libraries(crypto PRIVATE nanopb::protobuf-nanopb-static)
protobuf_generate_all(TGT "crypto" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
# Mbed TLS provides libmbedcrypto
list(APPEND MBEDTLS_EXTRA_INCLUDES ${LIBC_INCLUDE_PATH})
+list(APPEND MBEDTLS_EXTERNAL_SYSTEM_INCLUDE_PATHS ${LIBC_SYSTEM_INCLUDE_PATH})
include(../../../external/MbedTLS/MbedTLS.cmake)
target_link_libraries(crypto PRIVATE mbedcrypto)
target_link_libraries(mbedcrypto INTERFACE stdlib::c)
diff --git a/deployments/se-proxy/se-proxy.cmake b/deployments/se-proxy/se-proxy.cmake
index 180286d..1083717 100644
--- a/deployments/se-proxy/se-proxy.cmake
+++ b/deployments/se-proxy/se-proxy.cmake
@@ -69,10 +69,12 @@
#-------------------------------------------------------------------------------
# Get libc include dir
-get_property(LIBC_INCLUDE_PATH TARGET c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
+get_property(LIBC_INCLUDE_PATH TARGET stdlib::c PROPERTY INTERFACE_INCLUDE_DIRECTORIES)
+get_property(LIBC_SYSTEM_INCLUDE_PATH TARGET stdlib::c PROPERTY INTERFACE_SYSTEM_INCLUDE_DIRECTORIES)
# Nanopb
list(APPEND NANOPB_EXTERNAL_INCLUDE_PATHS ${LIBC_INCLUDE_PATH})
+list(APPEND NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS ${LIBC_SYSTEM_INCLUDE_PATH})
include(../../../external/nanopb/nanopb.cmake)
target_link_libraries(se-proxy PRIVATE nanopb::protobuf-nanopb-static)
protobuf_generate_all(TGT "se-proxy" NAMESPACE "protobuf" BASE_DIR "${TS_ROOT}/protocols")
diff --git a/external/nanopb/nanopb-init-cache.cmake.in b/external/nanopb/nanopb-init-cache.cmake.in
index 3f34ca9..c361812 100644
--- a/external/nanopb/nanopb-init-cache.cmake.in
+++ b/external/nanopb/nanopb-init-cache.cmake.in
@@ -20,7 +20,16 @@
endif()
set(NANOPB_EXTERNAL_INCLUDE_PATHS "@NANOPB_EXTERNAL_INCLUDE_PATHS@" CACHE STRING "")
+set(NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS "@NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS@" CACHE STRING "")
if (NOT "${NANOPB_EXTERNAL_INCLUDE_PATHS}" STREQUAL "")
- include_directories(${NANOPB_EXTERNAL_INCLUDE_PATHS})
+ string(REPLACE " " " -I " NANOPB_EXTERNAL_INCLUDE_PATHS "${NANOPB_EXTERNAL_INCLUDE_PATHS}")
+ string(APPEND CMAKE_C_FLAGS_INIT " -I ${NANOPB_EXTERNAL_INCLUDE_PATHS}")
endif()
+
+if (NOT "${NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS}" STREQUAL "")
+ string(REPLACE " " " -isystem " NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS "${NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS}")
+ string(APPEND CMAKE_C_FLAGS_INIT " -isystem ${NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS}")
+endif()
+
+set(CMAKE_C_FLAGS_INIT "${CMAKE_C_FLAGS_INIT}" CACHE STRING "")
diff --git a/external/nanopb/nanopb.cmake b/external/nanopb/nanopb.cmake
index c805829..3777fa3 100644
--- a/external/nanopb/nanopb.cmake
+++ b/external/nanopb/nanopb.cmake
@@ -50,9 +50,12 @@
COMMAND git apply ${CMAKE_CURRENT_LIST_DIR}/fix-pyhon-name.patch
)
-if (NOT "${NANOPB_EXTERNAL_INCLUDE_PATHS}" STREQUAL "")
- string(REPLACE ";" " " NANOPB_EXTERNAL_INCLUDE_PATHS "${NANOPB_EXTERNAL_INCLUDE_PATHS}")
-endif()
+# Convert include path list to string
+foreach(_var IN ITEMS NANOPB_EXTERNAL_INCLUDE_PATHS NANOPB_EXTERNAL_SYSTEM_INCLUDE_PATHS)
+ if (NOT "${${_var}}" STREQUAL "")
+ string(REPLACE ";" " " ${_var} "${${_var}}")
+ endif()
+endforeach()
include(${TS_ROOT}/tools/cmake/common/LazyFetch.cmake REQUIRED)
LazyFetch_MakeAvailable(DEP_NAME nanopb