mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-01-01 09:10:03 +00:00
ba850f3207
Keep installations on MbedTLSTargets export crypto libraries for the sake of mbedtls. Signed-off-by: Ronald Cron <ronald.cron@arm.com>
113 lines
4.2 KiB
CMake
113 lines
4.2 KiB
CMake
add_subdirectory(src)
|
|
|
|
file(GLOB src_builtin RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/*.c)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC)
|
|
set(LIBS_C_FLAGS -Wmissing-declarations -Wmissing-prototypes)
|
|
endif(CMAKE_COMPILER_IS_GNUCC)
|
|
|
|
if(CMAKE_COMPILER_IS_CLANG)
|
|
set(LIBS_C_FLAGS -Wmissing-declarations -Wmissing-prototypes -Wdocumentation -Wno-documentation-deprecated-sync -Wunreachable-code)
|
|
endif(CMAKE_COMPILER_IS_CLANG)
|
|
|
|
if(CMAKE_COMPILER_IS_MSVC)
|
|
option(MSVC_STATIC_RUNTIME "Build the libraries with /MT compiler flag" OFF)
|
|
if(MSVC_STATIC_RUNTIME)
|
|
foreach(flag_var
|
|
CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
|
|
CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
|
|
CMAKE_C_FLAGS_CHECK)
|
|
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
|
|
endforeach(flag_var)
|
|
endif()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
set(libs ${libs} ws2_32 bcrypt)
|
|
endif(WIN32)
|
|
|
|
if(CMAKE_C_COMPILER_ID MATCHES "AppleClang")
|
|
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
|
|
set(CMAKE_C_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
|
|
endif()
|
|
if(CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
|
|
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> Scr <TARGET> <LINK_FLAGS> <OBJECTS>")
|
|
set(CMAKE_CXX_ARCHIVE_FINISH "<CMAKE_RANLIB> -no_warning_for_no_symbols -c <TARGET>")
|
|
endif()
|
|
|
|
if(LINK_WITH_PTHREAD)
|
|
set(libs ${libs} ${CMAKE_THREAD_LIBS_INIT})
|
|
endif()
|
|
|
|
set(builtin_target ${TF_PSA_CRYPTO_TARGET_PREFIX}builtin)
|
|
if (USE_STATIC_TF_PSA_CRYPTO_LIBRARY)
|
|
set(builtin_static_target ${builtin_target})
|
|
endif()
|
|
set(target_libraries ${builtin_target})
|
|
if(USE_STATIC_TF_PSA_CRYPTO_LIBRARY AND USE_SHARED_TF_PSA_CRYPTO_LIBRARY)
|
|
string(APPEND builtin_static_target "_static")
|
|
list(APPEND target_libraries ${builtin_static_target})
|
|
endif()
|
|
|
|
set(p256m_target "${TF_PSA_CRYPTO_TARGET_PREFIX}p256m")
|
|
set(everest_target "${TF_PSA_CRYPTO_TARGET_PREFIX}everest")
|
|
|
|
if(USE_STATIC_TF_PSA_CRYPTO_LIBRARY)
|
|
add_library(${builtin_static_target} STATIC ${src_builtin})
|
|
set_base_compile_options(${builtin_static_target})
|
|
target_compile_options(${builtin_static_target} PRIVATE ${LIBS_C_FLAGS})
|
|
target_link_libraries(${builtin_static_target} PUBLIC ${libs})
|
|
if(TARGET ${everest_target})
|
|
target_link_libraries(${builtin_static_target} PUBLIC ${everest_target})
|
|
endif()
|
|
|
|
if(TARGET ${p256m_target})
|
|
target_link_libraries(${builtin_static_target} PUBLIC ${p256m_target})
|
|
endif()
|
|
endif(USE_STATIC_TF_PSA_CRYPTO_LIBRARY)
|
|
|
|
if(USE_SHARED_TF_PSA_CRYPTO_LIBRARY)
|
|
add_library(${builtin_target} SHARED ${src_builtin})
|
|
set_base_compile_options(${builtin_target})
|
|
target_compile_options(${builtin_target} PRIVATE ${LIBS_C_FLAGS})
|
|
target_link_libraries(${builtin_target} PUBLIC ${libs})
|
|
if(TARGET ${everest_target})
|
|
target_link_libraries(${builtin_target} PUBLIC ${everest_target})
|
|
endif()
|
|
|
|
if(TARGET ${p256m_target})
|
|
target_link_libraries(${builtin_target} PUBLIC ${p256m_target})
|
|
endif()
|
|
endif(USE_SHARED_TF_PSA_CRYPTO_LIBRARY)
|
|
|
|
foreach (target IN LISTS target_libraries)
|
|
target_include_directories(${target}
|
|
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
$<BUILD_INTERFACE:${MBEDTLS_DIR}/include>
|
|
$<BUILD_INTERFACE:${TF_PSA_CRYPTO_DIR}/include>
|
|
PRIVATE ${TF_PSA_CRYPTO_DIR}/core)
|
|
set_config_files_compile_definitions(${target})
|
|
|
|
if(INSTALL_TF_PSA_CRYPTO_HEADERS)
|
|
|
|
install(DIRECTORY include/mbedtls
|
|
DESTINATION include
|
|
FILE_PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
|
DIRECTORY_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ
|
|
GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
|
FILES_MATCHING PATTERN "*.h")
|
|
|
|
endif(INSTALL_TF_PSA_CRYPTO_HEADERS)
|
|
|
|
install(TARGETS ${target}
|
|
EXPORT MbedTLSTargets
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
|
|
|
|
install(TARGETS ${target}
|
|
EXPORT TF-PSA-CryptoTargets
|
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ)
|
|
endforeach(target)
|