From 99226e9b9b04f62a3815724d11231a0c37e93766 Mon Sep 17 00:00:00 2001 From: Ronald Cron Date: Fri, 14 Feb 2025 15:43:22 +0100 Subject: [PATCH] cmake: Generate test_keys.h and test_certs.h in the build tree Signed-off-by: Ronald Cron --- CMakeLists.txt | 16 ++++++++++------ scripts/generate_visualc_files.pl | 7 +++++++ scripts/make_generated_files.bat | 16 ++++++++-------- tests/.gitignore | 4 ++-- tests/CMakeLists.txt | 1 + tests/Makefile | 16 ++++++++-------- tests/scripts/check-generated-files.sh | 4 ++-- tests/src/certs.c | 2 +- 8 files changed, 39 insertions(+), 27 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f23c3b2f..a09935638 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -420,20 +420,22 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS) if(GEN_FILES) add_custom_command( OUTPUT - ${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h + ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test COMMAND "${MBEDTLS_PYTHON_EXECUTABLE}" "${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_keys.py" "--output" - "${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h" + "${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h" DEPENDS ${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_keys.py ) add_custom_target(mbedtls_test_keys_header - DEPENDS ${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h) + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h) add_dependencies(mbedtls_test mbedtls_test_keys_header) endif() target_include_directories(mbedtls_test + PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/tests/include PRIVATE ${MBEDTLS_FRAMEWORK_DIR}/tests/include PRIVATE tests/include PRIVATE include @@ -454,20 +456,22 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS) if(GEN_FILES) add_custom_command( OUTPUT - ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h + ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h + COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test COMMAND "${MBEDTLS_PYTHON_EXECUTABLE}" "${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_cert_macros.py" "--output" - "${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h" + "${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h" DEPENDS ${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_cert_macros.py ) add_custom_target(mbedtls_test_certs_header - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h) + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h) add_dependencies(mbedtls_test_helpers mbedtls_test_certs_header) endif() target_include_directories(mbedtls_test_helpers + PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/tests/include PRIVATE ${MBEDTLS_FRAMEWORK_DIR}/tests/include PRIVATE tests/include PRIVATE include diff --git a/scripts/generate_visualc_files.pl b/scripts/generate_visualc_files.pl index 32935f26f..81521896b 100755 --- a/scripts/generate_visualc_files.pl +++ b/scripts/generate_visualc_files.pl @@ -42,6 +42,8 @@ my $crypto_core_source_dir = 'tf-psa-crypto/core'; my $crypto_source_dir = 'tf-psa-crypto/drivers/builtin/src'; my $tls_test_source_dir = 'tests/src'; my $tls_test_header_dir = 'tests/include/test'; +my $crypto_test_source_dir = 'tf-psa-crypto/tests/src'; +my $crypto_test_header_dir = 'tf-psa-crypto/tests/include/test'; my $test_source_dir = 'framework/tests/src'; my $test_header_dir = 'framework/tests/include/test'; my $test_drivers_header_dir = 'framework/tests/include/test/drivers'; @@ -68,6 +70,7 @@ my @include_directories = qw( tf-psa-crypto/drivers/everest/include/everest/vs2013 tf-psa-crypto/drivers/everest/include/everest/kremlib tests/include + tf-psa-crypto/tests/include framework/tests/include framework/tests/programs ); @@ -131,9 +134,11 @@ sub check_dirs { && -d $crypto_source_dir && -d $test_source_dir && -d $tls_test_source_dir + && -d $crypto_test_source_dir && -d $test_drivers_source_dir && -d $test_header_dir && -d $tls_test_header_dir + && -d $crypto_test_header_dir && -d $test_drivers_header_dir && -d $mbedtls_programs_dir && -d $framework_programs_dir @@ -300,6 +305,7 @@ sub main { $psa_header_dir, $test_header_dir, $tls_test_header_dir, + $crypto_test_header_dir, $test_drivers_header_dir, $tls_source_dir, $crypto_core_source_dir, @@ -314,6 +320,7 @@ sub main { $crypto_source_dir, $test_source_dir, $tls_test_source_dir, + $crypto_test_source_dir, $test_drivers_source_dir, @thirdparty_source_dirs, ); diff --git a/scripts/make_generated_files.bat b/scripts/make_generated_files.bat index f632d32e9..418b6681a 100644 --- a/scripts/make_generated_files.bat +++ b/scripts/make_generated_files.bat @@ -7,17 +7,12 @@ @rem the "CC" environment variable must point to a C compiler. @rem @@@@ library\** @@@@ -@rem psa_crypto_driver_wrappers.h needs to be generated prior to -@rem generate_visualc_files.pl being invoked. python tf-psa-crypto\scripts\generate_driver_wrappers.py || exit /b 1 perl scripts\generate_errors.pl || exit /b 1 perl scripts\generate_query_config.pl || exit /b 1 perl scripts\generate_features.pl || exit /b 1 python framework\scripts\generate_ssl_debug_helpers.py || exit /b 1 -@rem @@@@ Build @@@@ -perl scripts\generate_visualc_files.pl || exit /b 1 - @rem @@@@ programs\** @@@@ cd tf-psa-crypto python scripts\generate_psa_constants.py || exit /b 1 @@ -29,8 +24,13 @@ python framework\scripts\generate_bignum_tests.py --directory tf-psa-crypto\test python framework\scripts\generate_config_tests.py || exit /b 1 python framework\scripts\generate_ecp_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1 python framework\scripts\generate_psa_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1 -python framework\scripts\generate_test_keys.py --output framework\tests\include\test\test_keys.h || exit /b 1 -python tf-psa-crypto\framework\scripts\generate_test_keys.py --output tf-psa-crypto\framework\tests\include\test\test_keys.h || exit /b 1 -python framework\scripts\generate_test_cert_macros.py --output tests\src\test_certs.h || exit /b 1 +python framework\scripts\generate_test_keys.py --output tests\include\test\test_keys.h || exit /b 1 +python tf-psa-crypto\framework\scripts\generate_test_keys.py --output tf-psa-crypto\tests\include\test\test_keys.h || exit /b 1 +python framework\scripts\generate_test_cert_macros.py --output tests\include\test\test_certs.h || exit /b 1 python framework\scripts\generate_tls_handshake_tests.py || exit /b 1 python framework\scripts\generate_tls13_compat_tests.py || exit /b 1 + +@rem @@@@ Build @@@@ +@rem Call generate_visualc_files.pl last to be sure everything else has been +@rem generated before. +perl scripts\generate_visualc_files.pl || exit /b 1 diff --git a/tests/.gitignore b/tests/.gitignore index a4a0309fa..e58c8f055 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -22,6 +22,6 @@ /opt-testcases/tls13-compat.sh /suites/*.generated.data /suites/test_suite_config.mbedtls_boolean.data -/src/test_keys.h -/src/test_certs.h +/include/test/test_keys.h +/include/test/test_certs.h ###END_GENERATED_FILES### diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ce63d2376..d12133d30 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -176,6 +176,7 @@ function(add_test_suite suite_name) # files are automatically included because the library targets declare # them as PUBLIC. target_include_directories(test_suite_${data_name} + PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../framework/tests/include PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../library diff --git a/tests/Makefile b/tests/Makefile index c44369b47..87a6ca177 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -64,9 +64,9 @@ endif GENERATED_CRYPTO_DATA_FILES += $(GENERATED_PSA_DATA_FILES) GENERATED_FILES = $(GENERATED_DATA_FILES) $(GENERATED_CRYPTO_DATA_FILES) -GENERATED_FILES += ../framework/tests/include/test/test_keys.h \ - ../tf-psa-crypto/framework/tests/include/test/test_keys.h \ - src/test_certs.h +GENERATED_FILES += include/test/test_keys.h \ + ../tf-psa-crypto/tests/include/test/test_keys.h \ + include/test/test_certs.h # Generated files needed to (fully) run ssl-opt.sh .PHONY: ssl-opt @@ -184,16 +184,16 @@ all: $(BINARIES) $(CRYPTO_BINARIES) mbedtls_test: $(MBEDTLS_TEST_OBJS) -src/test_certs.h: ../framework/scripts/generate_test_cert_macros.py \ +include/test/test_certs.h: ../framework/scripts/generate_test_cert_macros.py \ $($(PYTHON) ../framework/scripts/generate_test_cert_macros.py --list-dependencies) echo " Gen $@" $(PYTHON) ../framework/scripts/generate_test_cert_macros.py --output $@ -../framework/tests/include/test/test_keys.h: ../framework/scripts/generate_test_keys.py +include/test/test_keys.h: ../framework/scripts/generate_test_keys.py echo " Gen $@" $(PYTHON) ../framework/scripts/generate_test_keys.py --output $@ -../tf-psa-crypto/framework/tests/include/test/test_keys.h: ../tf-psa-crypto/framework/scripts/generate_test_keys.py +../tf-psa-crypto/tests/include/test/test_keys.h: ../tf-psa-crypto/framework/scripts/generate_test_keys.py echo " Gen $@" $(PYTHON) ../tf-psa-crypto/framework/scripts/generate_test_keys.py --output $@ @@ -204,8 +204,8 @@ ifdef RECORD_PSA_STATUS_COVERAGE_LOG # therefore the wildcard enumeration above doesn't include it. TEST_OBJS_DEPS += ../framework/tests/include/test/instrument_record_status.h endif -TEST_OBJS_DEPS += src/test_certs.h ../framework/tests/include/test/test_keys.h \ - ../tf-psa-crypto/framework/tests/include/test/test_keys.h +TEST_OBJS_DEPS += include/test/test_certs.h include/test/test_keys.h \ + ../tf-psa-crypto/tests/include/test/test_keys.h # Rule to compile common test C files in framework ../framework/tests/src/%.o : ../framework/tests/src/%.c $(TEST_OBJS_DEPS) diff --git a/tests/scripts/check-generated-files.sh b/tests/scripts/check-generated-files.sh index 2e104ee29..e3c8e08af 100755 --- a/tests/scripts/check-generated-files.sh +++ b/tests/scripts/check-generated-files.sh @@ -171,7 +171,7 @@ else check framework/scripts/generate_psa_wrappers.py tests/include/test/psa_test_wrappers.h tests/src/psa_test_wrappers.c fi -check framework/scripts/generate_test_keys.py framework/tests/include/test/test_keys.h +check framework/scripts/generate_test_keys.py tests/include/test/test_keys.h # Additional checks for Mbed TLS only if in_mbedtls_repo; then @@ -181,7 +181,7 @@ if in_mbedtls_repo; then check framework/scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.c check framework/scripts/generate_tls_handshake_tests.py tests/opt-testcases/handshake-generated.sh check framework/scripts/generate_tls13_compat_tests.py tests/opt-testcases/tls13-compat.sh - check framework/scripts/generate_test_cert_macros.py tests/src/test_certs.h + check framework/scripts/generate_test_cert_macros.py tests/include/test/test_certs.h # generate_visualc_files enumerates source files (library/*.c). It doesn't # care about their content, but the files must exist. So it must run after # the step that creates or updates these files. diff --git a/tests/src/certs.c b/tests/src/certs.c index bacc84675..d1af5b2aa 100644 --- a/tests/src/certs.c +++ b/tests/src/certs.c @@ -13,7 +13,7 @@ #include "mbedtls/pk.h" -#include "test_certs.h" +#include "test/test_certs.h" /* *