mirror of
https://github.com/espressif/mbedtls.git
synced 2025-05-10 12:02:28 +08:00
Introduce "Dev mode" option
When the option is On, CMake will have rules to generate the generated files using scripts etc. When the option is Off, CMake will assume the files are available from the source tree; in that mode, it won't require any extra tools (Perl for example) compared to when we committed the files to git. The intention is that users will never need to adjust this option: - in the development branch (and features branches etc.) the option is always On (development mode); - in released tarballs, which include the generated files, we'll switch the option to Off (release mode) in the same commit that re-adds the generated files. Signed-off-by: Manuel Pégourié-Gonnard <manuel.pegourie-gonnard@arm.com>
This commit is contained in:
parent
313bcfcde8
commit
e90e405e15
@ -46,6 +46,7 @@ option(ENABLE_PROGRAMS "Build mbed TLS programs." ON)
|
||||
|
||||
option(UNSAFE_BUILD "Allow unsafe builds. These builds ARE NOT SECURE." OFF)
|
||||
option(MBEDTLS_FATAL_WARNINGS "Compiler warnings treated as errors" ON)
|
||||
option(DEV_MODE "Development mode: (re)generate some files as needed" ON)
|
||||
|
||||
string(REGEX MATCH "Clang" CMAKE_COMPILER_IS_CLANG "${CMAKE_C_COMPILER_ID}")
|
||||
string(REGEX MATCH "GNU" CMAKE_COMPILER_IS_GNU "${CMAKE_C_COMPILER_ID}")
|
||||
|
@ -109,6 +109,7 @@ set(src_tls
|
||||
ssl_tls13_generic.c
|
||||
)
|
||||
|
||||
if(DEV_MODE)
|
||||
find_package(Perl REQUIRED)
|
||||
|
||||
file(GLOB error_headers ${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/*.h)
|
||||
@ -141,6 +142,10 @@ add_custom_command(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include/mbedtls/mbedtls_config.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/data_files/version_features.fmt
|
||||
)
|
||||
else()
|
||||
link_to_source(error.c)
|
||||
link_to_source(version_features.c)
|
||||
endif()
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCC)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-declarations -Wmissing-prototypes")
|
||||
|
@ -4,6 +4,7 @@ set(executables
|
||||
psa_constant_names
|
||||
)
|
||||
|
||||
if(DEV_MODE)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${CMAKE_CURRENT_BINARY_DIR}/psa_constant_names_generated.c
|
||||
@ -18,6 +19,9 @@ add_custom_command(
|
||||
${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>)
|
||||
@ -26,9 +30,11 @@ foreach(exe IN LISTS executables)
|
||||
endforeach()
|
||||
|
||||
target_include_directories(psa_constant_names PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
if(DEV_MODE)
|
||||
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,6 +18,7 @@ set(executables
|
||||
ssl_server2
|
||||
)
|
||||
|
||||
if(DEV_MODE)
|
||||
# Inform CMake the 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
|
||||
@ -26,6 +27,7 @@ set(executables
|
||||
set_source_files_properties(
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../test/query_config.c
|
||||
PROPERTIES GENERATED TRUE)
|
||||
endif()
|
||||
|
||||
foreach(exe IN LISTS executables)
|
||||
set(extra_sources "")
|
||||
@ -40,7 +42,9 @@ foreach(exe IN LISTS executables)
|
||||
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(DEV_MODE)
|
||||
add_dependencies(${exe} generate_query_config_c)
|
||||
endif()
|
||||
target_include_directories(${exe}
|
||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../test)
|
||||
endif()
|
||||
|
@ -27,6 +27,7 @@ if(TEST_CPP)
|
||||
target_link_libraries(cpp_dummy_build ${mbedcrypto_target})
|
||||
endif()
|
||||
|
||||
if(DEV_MODE)
|
||||
find_package(Perl REQUIRED)
|
||||
|
||||
add_custom_command(
|
||||
@ -47,6 +48,9 @@ add_custom_command(
|
||||
# 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 "")
|
||||
|
@ -16,6 +16,7 @@ endif()
|
||||
# generated .data files will go there
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/suites)
|
||||
|
||||
if(DEV_MODE)
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
${CMAKE_CURRENT_BINARY_DIR}/suites/test_suite_psa_crypto_not_supported.generated.data
|
||||
@ -33,6 +34,11 @@ add_custom_command(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include/psa/crypto_values.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../include/psa/crypto_extra.h
|
||||
)
|
||||
else()
|
||||
link_to_source(suites/test_suite_psa_crypto_not_supported.generated.data)
|
||||
link_to_source(suites/test_suite_psa_crypto_storage_format.current.data)
|
||||
link_to_source(suites/test_suite_psa_crypto_storage_format.v0.data)
|
||||
endif()
|
||||
|
||||
# Test suites caught by SKIP_TEST_SUITES are built but not executed.
|
||||
# "foo" as a skip pattern skips "test_suite_foo" and "test_suite_foo.bar"
|
||||
|
Loading…
x
Reference in New Issue
Block a user