mirror of
https://github.com/yuzu-mirror/mbedtls.git
synced 2026-01-03 07:10:18 +01:00
CryptGenRandom and lstrlenW are not permitted in Windows Store apps, meaning apps that use mbedTLS can't ship in the Windows Store. Instead, use BCryptGenRandom and wcslen, respectively, which are permitted. Also make sure conversions between size_t, ULONG, and int are always done safely; on a 64-bit platform, these types are different sizes. Also suppress macro redefinition warning for intsafe.h: Visual Studio 2010 and earlier generates C4005 when including both <intsafe.h> and <stdint.h> because a number of <TYPE>_MAX constants are redefined. This is fixed in later versions of Visual Studio. The constants are guaranteed to be the same between both files, however, so we can safely suppress the warning when including intsafe.h. Signed-off-by: Kevin Kane <kkane@microsoft.com>
95 lines
3.5 KiB
CMake
95 lines
3.5 KiB
CMake
set(libs
|
|
${mbedtls_target}
|
|
)
|
|
|
|
if(MSVC)
|
|
set(libs ${libs} bcrypt)
|
|
endif()
|
|
|
|
set(executables_libs
|
|
query_included_headers
|
|
selftest
|
|
udp_proxy
|
|
)
|
|
|
|
set(executables_mbedcrypto
|
|
benchmark
|
|
query_compile_time_config
|
|
zeroize
|
|
)
|
|
|
|
if(TEST_CPP)
|
|
set(cpp_dummy_build_cpp "${CMAKE_CURRENT_BINARY_DIR}/cpp_dummy_build.cpp")
|
|
set(generate_cpp_dummy_build "${CMAKE_CURRENT_SOURCE_DIR}/generate_cpp_dummy_build.sh")
|
|
add_custom_command(
|
|
OUTPUT "${cpp_dummy_build_cpp}"
|
|
COMMAND "${generate_cpp_dummy_build}" "${cpp_dummy_build_cpp}"
|
|
DEPENDS "${generate_cpp_dummy_build}"
|
|
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
|
|
)
|
|
add_executable(cpp_dummy_build "${cpp_dummy_build_cpp}")
|
|
target_include_directories(cpp_dummy_build PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
|
target_link_libraries(cpp_dummy_build ${mbedcrypto_target})
|
|
endif()
|
|
|
|
if(USE_SHARED_MBEDTLS_LIBRARY AND
|
|
NOT ${CMAKE_SYSTEM_NAME} MATCHES "[Ww][Ii][Nn]")
|
|
add_executable(dlopen "dlopen.c")
|
|
target_include_directories(dlopen PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
|
target_link_libraries(dlopen ${CMAKE_DL_LIBS})
|
|
endif()
|
|
|
|
if(GEN_FILES)
|
|
find_package(Perl REQUIRED)
|
|
|
|
add_custom_command(
|
|
OUTPUT
|
|
${CMAKE_CURRENT_BINARY_DIR}/query_config.c
|
|
COMMAND
|
|
${PERL}
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_config.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt
|
|
${CMAKE_CURRENT_BINARY_DIR}/query_config.c
|
|
DEPENDS
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_query_config.pl
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../include/mbedtls/mbedtls_config.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_config.h
|
|
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/data_files/query_config.fmt
|
|
)
|
|
# this file will also be used in another directory, so create a target, see
|
|
# https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#how-can-i-add-a-dependency-to-a-source-file-which-is-generated-in-a-subdirectory
|
|
add_custom_target(generate_query_config_c
|
|
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/query_config.c)
|
|
else()
|
|
link_to_source(query_config.c)
|
|
endif()
|
|
|
|
foreach(exe IN LISTS executables_libs executables_mbedcrypto)
|
|
set(extra_sources "")
|
|
if(exe STREQUAL "query_compile_time_config")
|
|
list(APPEND extra_sources
|
|
${CMAKE_CURRENT_SOURCE_DIR}/query_config.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/query_config.c)
|
|
endif()
|
|
add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test>
|
|
${extra_sources})
|
|
target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
|
|
if(exe STREQUAL "query_compile_time_config")
|
|
target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
|
endif()
|
|
|
|
# This emulates "if ( ... IN_LIST ... )" which becomes available in CMake 3.3
|
|
list(FIND executables_libs ${exe} exe_index)
|
|
if (${exe_index} GREATER -1)
|
|
target_link_libraries(${exe} ${libs})
|
|
else()
|
|
target_link_libraries(${exe} ${mbedcrypto_target})
|
|
endif()
|
|
endforeach()
|
|
|
|
install(TARGETS ${executables_libs} ${executables_mbedcrypto}
|
|
DESTINATION "bin"
|
|
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
|