mirror of
https://github.com/yuzu-mirror/mbedtls.git
synced 2026-04-04 22:19:05 +00:00
Merge pull request #4514 from mpg/generated-files-cmake
Generated files cmake
This commit is contained in:
commit
4c9313fcd9
10 changed files with 266 additions and 25 deletions
|
|
@ -4,6 +4,25 @@ set(executables
|
|||
psa_constant_names
|
||||
)
|
||||
|
||||
if(GEN_FILES)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${CMAKE_CURRENT_BINARY_DIR}/psa_constant_names_generated.c
|
||||
COMMAND
|
||||
${MBEDTLS_PYTHON_EXECUTABLE}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_psa_constants.py
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
WORKING_DIRECTORY
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../..
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../scripts/generate_psa_constants.py
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_values.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../include/psa/crypto_extra.h
|
||||
)
|
||||
else()
|
||||
link_to_source(psa_constant_names_generated.c)
|
||||
endif()
|
||||
|
||||
foreach(exe IN LISTS executables)
|
||||
add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test>)
|
||||
target_link_libraries(${exe} ${mbedcrypto_target})
|
||||
|
|
@ -11,6 +30,11 @@ foreach(exe IN LISTS executables)
|
|||
endforeach()
|
||||
|
||||
target_include_directories(psa_constant_names PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
if(GEN_FILES)
|
||||
add_custom_target(generate_psa_constant_names_generated_c
|
||||
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/psa_constant_names_generated.c)
|
||||
add_dependencies(psa_constant_names generate_psa_constant_names_generated_c)
|
||||
endif()
|
||||
|
||||
install(TARGETS ${executables}
|
||||
DESTINATION "bin"
|
||||
|
|
|
|||
|
|
@ -18,23 +18,38 @@ set(executables
|
|||
ssl_server2
|
||||
)
|
||||
|
||||
if(GEN_FILES)
|
||||
# Inform CMake that the following file will be generated as part of the build
|
||||
# process, so it doesn't complain that it doesn't exist yet. Starting from
|
||||
# CMake 3.20, this will no longer be necessary as CMake will automatically
|
||||
# propagate this information across the tree, for now it's only visible
|
||||
# inside the same directory, so we need to propagate manually.
|
||||
set_source_files_properties(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../test/query_config.c
|
||||
PROPERTIES GENERATED TRUE)
|
||||
endif()
|
||||
|
||||
foreach(exe IN LISTS executables)
|
||||
set(extra_sources "")
|
||||
if(exe STREQUAL "ssl_client2" OR exe STREQUAL "ssl_server2")
|
||||
list(APPEND extra_sources
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../test/query_config.c)
|
||||
ssl_test_lib.c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../test/query_config.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../test/query_config.c)
|
||||
endif()
|
||||
add_executable(${exe} ${exe}.c $<TARGET_OBJECTS:mbedtls_test>
|
||||
${extra_sources})
|
||||
target_link_libraries(${exe} ${libs})
|
||||
target_include_directories(${exe} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
|
||||
if(exe STREQUAL "ssl_client2" OR exe STREQUAL "ssl_server2")
|
||||
if(GEN_FILES)
|
||||
add_dependencies(${exe} generate_query_config_c)
|
||||
endif()
|
||||
target_include_directories(${exe}
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../test)
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set_property(TARGET ssl_client2 APPEND PROPERTY SOURCES
|
||||
ssl_test_lib.c ${CMAKE_CURRENT_SOURCE_DIR}/../test/query_config.c)
|
||||
set_property(TARGET ssl_server2 APPEND PROPERTY SOURCES
|
||||
ssl_test_lib.c ${CMAKE_CURRENT_SOURCE_DIR}/../test/query_config.c)
|
||||
|
||||
if(THREADS_FOUND)
|
||||
add_executable(ssl_pthread_server ssl_pthread_server.c $<TARGET_OBJECTS:mbedtls_test>)
|
||||
target_include_directories(ssl_pthread_server PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../../tests/include)
|
||||
|
|
|
|||
|
|
@ -27,15 +27,44 @@ if(TEST_CPP)
|
|||
target_link_libraries(cpp_dummy_build ${mbedcrypto_target})
|
||||
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}/../../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}/../../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.c)
|
||||
${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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue