Fix: multiple MbedTLS integration fixes
List of changes:
- prefetched source is ignored by MbedTLS.cmake
Setting MBEDTLS_SOURCE_DIR does not make MbedTLS.cmake to use the
externally provided source code. This is because MBEDTLS_SOURCE_DIR
is not passed to LazyFetch_MakeAvailable().
As a fix, pass the variable to LazyFetch.
- patch MbedTLS to allow building libmbedcrypto only. This is needed to
decrease dependencies in yocto.
- allow passing python interpreter location down to MbedTLS build
Change-Id: I25b598e086f5f2af948cd288c2f3faa50bce1cc6
Signed-off-by: Gyorgy Szing <Gyorgy.Szing@arm.com>
diff --git a/external/MbedTLS/MbedTLS.cmake b/external/MbedTLS/MbedTLS.cmake
index 5c97a15..a3d63f0 100644
--- a/external/MbedTLS/MbedTLS.cmake
+++ b/external/MbedTLS/MbedTLS.cmake
@@ -27,7 +27,12 @@
GIT_REPOSITORY ${MBEDTLS_URL}
GIT_TAG ${MBEDTLS_REFSPEC}
GIT_SHALLOW FALSE
- PATCH_COMMAND ${Python3_EXECUTABLE} scripts/config.py crypto
+ PATCH_COMMAND
+ git stash
+ COMMAND git branch -f bf-am
+ COMMAND git am ${CMAKE_CURRENT_LIST_DIR}/0001-Add-capability-to-build-libmbedcrypto-only.patch
+ COMMAND git reset bf-am
+ COMMAND ${Python3_EXECUTABLE} scripts/config.py crypto
)
# Only pass libc settings to Mbed TLS if needed. For environments where the standard
@@ -48,13 +53,14 @@
INSTALL_DIR ${MBEDTLS_INSTALL_DIR}
PACKAGE_DIR ${MBEDTLS_INSTALL_DIR}/cmake
CACHE_FILE "${TS_ROOT}/external/MbedTLS/mbedtls-init-cache.cmake.in"
+ SOURCE_DIR "${MBEDTLS_SOURCE_DIR}"
)
unset(_cmake_fragment)
# Link the libraries created by Mbed TLS to libc if needed. For environments where the standard
# library is not overridden, this is not needed.
if(TARGET stdlib::c)
- foreach(_mbedtls_tgt IN ITEMS "MbedTLS::mbedcrypto" "MbedTLS::mbedx509" "MbedTLS::mbedtls")
+ foreach(_mbedtls_tgt IN ITEMS "MbedTLS::mbedcrypto")
target_link_libraries(${_mbedtls_tgt} INTERFACE stdlib::c)
endforeach()
unset(_mbedtls_tgt)