d259e347e6
This change enables automatic detection and consumption of Mbed TLS library targets from within other CMake projects. By generating an `MbedTLSConfig.cmake` file, consuming projects receive a more complete view of these targets, allowing them to be used as dependencies which properly inherit the transitive dependencies of the libraries. This is fairly fragile, as it seems Mbed TLS's libraries do not appear to properly model their dependencies on other targets, including third-party dependencies. It is, however, sufficient for building and linking the compiled Mbed TLS libraries when there are no third-party dependencies involved. Further work is needed for more complex use-cases, but this will likely meet the needs of most projects. Resolves #298. Probably useful for #2857. Signed-off-by: Chris Kay <chris.kay@arm.com>
39 lines
1.1 KiB
CMake
39 lines
1.1 KiB
CMake
cmake_minimum_required(VERSION 2.8.12)
|
|
|
|
#
|
|
# Simulate configuring and building Mbed TLS as the user might do it. We'll
|
|
# install into a directory inside our own build directory.
|
|
#
|
|
|
|
set(MbedTLS_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../..")
|
|
set(MbedTLS_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/mbedtls")
|
|
set(MbedTLS_BINARY_DIR "${MbedTLS_INSTALL_DIR}${CMAKE_FILES_DIRECTORY}")
|
|
|
|
execute_process(
|
|
COMMAND "${CMAKE_COMMAND}"
|
|
"-H${MbedTLS_SOURCE_DIR}"
|
|
"-B${MbedTLS_BINARY_DIR}"
|
|
"-DENABLE_PROGRAMS=NO"
|
|
"-DENABLE_TESTING=NO"
|
|
"-DCMAKE_INSTALL_PREFIX=${MbedTLS_INSTALL_DIR}")
|
|
|
|
execute_process(
|
|
COMMAND "${CMAKE_COMMAND}"
|
|
--build "${MbedTLS_BINARY_DIR}"
|
|
--target install)
|
|
|
|
#
|
|
# Locate the package.
|
|
#
|
|
|
|
set(MbedTLS_DIR "${MbedTLS_INSTALL_DIR}/cmake")
|
|
find_package(MbedTLS REQUIRED)
|
|
|
|
#
|
|
# At this point, the Mbed TLS targets should have been imported, and we can now
|
|
# link to them from our own program.
|
|
#
|
|
|
|
add_executable(cmake_package_install cmake_package_install.c)
|
|
target_link_libraries(cmake_package_install
|
|
MbedTLS::mbedcrypto MbedTLS::mbedtls MbedTLS::mbedx509)
|