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)