Allow CMake to generate query_config.c
This one was trickier for two reasons: 1. It's used from another directory, 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 2. The C file being generated after CMake is run means CMake can't automatically scan for included headers and do its usual magic, so we need to declare the dependency and more importantly the include path. Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
This commit is contained in:
parent
3a8413d316
commit
86cfa6c27f
2 changed files with 42 additions and 2 deletions
|
@ -27,15 +27,40 @@ if(TEST_CPP)
|
|||
target_link_libraries(cpp_dummy_build ${mbedcrypto_target})
|
||||
endif()
|
||||
|
||||
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 anoter 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)
|
||||
|
||||
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