Skip to content

Commit f19a08f

Browse files
Merge pull request #10062 from ronald-cron-arm/check-generated-files
Companion PR of "Add check generated files and check code style test components" #201-merge==#201-head thus not updating the TF-PSA-Crypto pointer to #201-merge #10062-merge==#10062-head and the merge queue is empty thus merging directly, not through the merge queue.
2 parents 6bf29fd + b9d7b5f commit f19a08f

11 files changed

+120
-70
lines changed

CMakeLists.txt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -420,20 +420,22 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
420420
if(GEN_FILES)
421421
add_custom_command(
422422
OUTPUT
423-
${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h
423+
${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h
424+
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test
424425
COMMAND
425426
"${MBEDTLS_PYTHON_EXECUTABLE}"
426427
"${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_keys.py"
427428
"--output"
428-
"${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h"
429+
"${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h"
429430
DEPENDS
430431
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_keys.py
431432
)
432433
add_custom_target(mbedtls_test_keys_header
433-
DEPENDS ${MBEDTLS_FRAMEWORK_DIR}/tests/src/test_keys.h)
434+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_keys.h)
434435
add_dependencies(mbedtls_test mbedtls_test_keys_header)
435436
endif()
436437
target_include_directories(mbedtls_test
438+
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/tests/include
437439
PRIVATE ${MBEDTLS_FRAMEWORK_DIR}/tests/include
438440
PRIVATE tests/include
439441
PRIVATE include
@@ -454,20 +456,22 @@ if(ENABLE_TESTING OR ENABLE_PROGRAMS)
454456
if(GEN_FILES)
455457
add_custom_command(
456458
OUTPUT
457-
${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h
459+
${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h
460+
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test
458461
COMMAND
459462
"${MBEDTLS_PYTHON_EXECUTABLE}"
460463
"${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_cert_macros.py"
461464
"--output"
462-
"${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h"
465+
"${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h"
463466
DEPENDS
464467
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_test_cert_macros.py
465468
)
466469
add_custom_target(mbedtls_test_certs_header
467-
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/src/test_certs.h)
470+
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/tests/include/test/test_certs.h)
468471
add_dependencies(mbedtls_test_helpers mbedtls_test_certs_header)
469472
endif()
470473
target_include_directories(mbedtls_test_helpers
474+
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/tests/include
471475
PRIVATE ${MBEDTLS_FRAMEWORK_DIR}/tests/include
472476
PRIVATE tests/include
473477
PRIVATE include

scripts/generate_visualc_files.pl

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,18 @@
1111

1212
use warnings;
1313
use strict;
14+
use Getopt::Long;
1415
use Digest::MD5 'md5_hex';
1516

17+
# Declare variables for options
1618
my $vsx_dir = "visualc/VS2017";
19+
my $list = 0; # Default off
20+
21+
GetOptions(
22+
"directory=s" => \$vsx_dir, # Target directory
23+
"list" => \$list # Only list generated files
24+
) or die "Invalid options\n";
25+
1726
my $vsx_ext = "vcxproj";
1827
my $vsx_app_tpl_file = "scripts/data_files/vs2017-app-template.$vsx_ext";
1928
my $vsx_main_tpl_file = "scripts/data_files/vs2017-main-template.$vsx_ext";
@@ -33,6 +42,8 @@
3342
my $crypto_source_dir = 'tf-psa-crypto/drivers/builtin/src';
3443
my $tls_test_source_dir = 'tests/src';
3544
my $tls_test_header_dir = 'tests/include/test';
45+
my $crypto_test_source_dir = 'tf-psa-crypto/tests/src';
46+
my $crypto_test_header_dir = 'tf-psa-crypto/tests/include/test';
3647
my $test_source_dir = 'framework/tests/src';
3748
my $test_header_dir = 'framework/tests/include/test';
3849
my $test_drivers_header_dir = 'framework/tests/include/test/drivers';
@@ -59,6 +70,7 @@
5970
tf-psa-crypto/drivers/everest/include/everest/vs2013
6071
tf-psa-crypto/drivers/everest/include/everest/kremlib
6172
tests/include
73+
tf-psa-crypto/tests/include
6274
framework/tests/include
6375
framework/tests/programs
6476
);
@@ -122,9 +134,11 @@ sub check_dirs {
122134
&& -d $crypto_source_dir
123135
&& -d $test_source_dir
124136
&& -d $tls_test_source_dir
137+
&& -d $crypto_test_source_dir
125138
&& -d $test_drivers_source_dir
126139
&& -d $test_header_dir
127140
&& -d $tls_test_header_dir
141+
&& -d $crypto_test_header_dir
128142
&& -d $test_drivers_header_dir
129143
&& -d $mbedtls_programs_dir
130144
&& -d $framework_programs_dir
@@ -280,7 +294,9 @@ sub main {
280294
281295
# Remove old files to ensure that, for example, project files from deleted
282296
# apps are not kept
283-
del_vsx_files();
297+
if (not $list) {
298+
del_vsx_files();
299+
}
284300
285301
my @app_list = get_app_list();
286302
my @header_dirs = (
@@ -289,6 +305,7 @@ sub main {
289305
$psa_header_dir,
290306
$test_header_dir,
291307
$tls_test_header_dir,
308+
$crypto_test_header_dir,
292309
$test_drivers_header_dir,
293310
$tls_source_dir,
294311
$crypto_core_source_dir,
@@ -303,6 +320,7 @@ sub main {
303320
$crypto_source_dir,
304321
$test_source_dir,
305322
$tls_test_source_dir,
323+
$crypto_test_source_dir,
306324
$test_drivers_source_dir,
307325
@thirdparty_source_dirs,
308326
);
@@ -313,13 +331,22 @@ sub main {
313331
map { s!/!\\!g } @headers;
314332
map { s!/!\\!g } @sources;
315333
316-
gen_app_files( @app_list );
334+
if ($list) {
335+
foreach my $app (@app_list) {
336+
$app =~ s/.*\///;
337+
print "$vsx_dir/$app.$vsx_ext\n";
338+
}
339+
print "$vsx_main_file\n";
340+
print "$vsx_sln_file\n";
341+
} else {
342+
gen_app_files( @app_list );
317343
318-
gen_main_file( \@headers, \@sources,
319-
$vsx_hdr_tpl, $vsx_src_tpl,
320-
$vsx_main_tpl_file, $vsx_main_file );
344+
gen_main_file( \@headers, \@sources,
345+
$vsx_hdr_tpl, $vsx_src_tpl,
346+
$vsx_main_tpl_file, $vsx_main_file );
321347
322-
gen_vsx_solution( @app_list );
348+
gen_vsx_solution( @app_list );
349+
}
323350
324351
return 0;
325352
}

scripts/make_generated_files.bat

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,30 @@
77
@rem the "CC" environment variable must point to a C compiler.
88

99
@rem @@@@ library\** @@@@
10-
@rem psa_crypto_driver_wrappers.h needs to be generated prior to
11-
@rem generate_visualc_files.pl being invoked.
1210
python tf-psa-crypto\scripts\generate_driver_wrappers.py || exit /b 1
1311
perl scripts\generate_errors.pl || exit /b 1
1412
perl scripts\generate_query_config.pl || exit /b 1
1513
perl scripts\generate_features.pl || exit /b 1
1614
python framework\scripts\generate_ssl_debug_helpers.py || exit /b 1
1715

18-
@rem @@@@ Build @@@@
19-
perl scripts\generate_visualc_files.pl || exit /b 1
20-
2116
@rem @@@@ programs\** @@@@
2217
cd tf-psa-crypto
2318
python scripts\generate_psa_constants.py || exit /b 1
19+
python framework\scripts\generate_config_tests.py || exit /b 1
2420
cd ..
2521

2622
@rem @@@@ tests\** @@@@
2723
python framework\scripts\generate_bignum_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1
28-
python framework\scripts\generate_config_tests.py tests\suites\test_suite_config.mbedtls_boolean.data || exit /b 1
29-
python framework\scripts\generate_config_tests.py --directory tf-psa-crypto\tests\suites tests\suites\test_suite_config.psa_boolean.data || exit /b 1
24+
python framework\scripts\generate_config_tests.py || exit /b 1
3025
python framework\scripts\generate_ecp_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1
3126
python framework\scripts\generate_psa_tests.py --directory tf-psa-crypto\tests\suites || exit /b 1
32-
python framework\scripts\generate_test_keys.py --output framework\tests\include\test\test_keys.h || exit /b 1
33-
python tf-psa-crypto\framework\scripts\generate_test_keys.py --output tf-psa-crypto\framework\tests\include\test\test_keys.h || exit /b 1
34-
python framework\scripts\generate_test_cert_macros.py --output tests\src\test_certs.h || exit /b 1
27+
python framework\scripts\generate_test_keys.py --output tests\include\test\test_keys.h || exit /b 1
28+
python tf-psa-crypto\framework\scripts\generate_test_keys.py --output tf-psa-crypto\tests\include\test\test_keys.h || exit /b 1
29+
python framework\scripts\generate_test_cert_macros.py --output tests\include\test\test_certs.h || exit /b 1
3530
python framework\scripts\generate_tls_handshake_tests.py || exit /b 1
3631
python framework\scripts\generate_tls13_compat_tests.py || exit /b 1
32+
33+
@rem @@@@ Build @@@@
34+
@rem Call generate_visualc_files.pl last to be sure everything else has been
35+
@rem generated before.
36+
perl scripts\generate_visualc_files.pl || exit /b 1

tests/.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@
2222
/opt-testcases/tls13-compat.sh
2323
/suites/*.generated.data
2424
/suites/test_suite_config.mbedtls_boolean.data
25-
/src/test_keys.h
26-
/src/test_certs.h
25+
/include/test/test_keys.h
26+
/include/test/test_certs.h
2727
###END_GENERATED_FILES###

tests/CMakeLists.txt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,9 @@ execute_process(
1919
WORKING_DIRECTORY
2020
${CMAKE_CURRENT_SOURCE_DIR}/..
2121
OUTPUT_VARIABLE
22-
base_config_generated_data_files_raw)
22+
base_config_generated_data_files)
2323
string(REGEX REPLACE "[^;]*/" ""
24-
base_config_generated_data_files_raw "${base_config_generated_data_files_raw}")
25-
# Can be replace by list(FILTER ...) when CI CMake version is >=3.6
26-
foreach(file ${base_config_generated_data_files_raw})
27-
if(${file} MATCHES "mbedtls")
28-
list(APPEND base_config_generated_data_files ${file})
29-
endif()
30-
endforeach()
24+
base_config_generated_data_files "${base_config_generated_data_files}")
3125

3226
# Derive generated file paths in the build directory. The generated data
3327
# files go into the suites/ subdirectory.
@@ -50,7 +44,6 @@ if(GEN_FILES)
5044
${MBEDTLS_PYTHON_EXECUTABLE}
5145
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_config_tests.py
5246
--directory ${CMAKE_CURRENT_BINARY_DIR}/suites
53-
${config_generated_data_files}
5447
DEPENDS
5548
${MBEDTLS_FRAMEWORK_DIR}/scripts/generate_config_tests.py
5649
# Do not declare the configuration files as dependencies: they
@@ -183,6 +176,7 @@ function(add_test_suite suite_name)
183176
# files are automatically included because the library targets declare
184177
# them as PUBLIC.
185178
target_include_directories(test_suite_${data_name}
179+
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include
186180
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
187181
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../framework/tests/include
188182
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../library

tests/Makefile

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,23 @@ $(error "$(PYTHON) ../framework/scripts/generate_bignum_tests.py --list" failed)
2525
endif
2626
GENERATED_CRYPTO_DATA_FILES += $(GENERATED_BIGNUM_DATA_FILES)
2727

28-
GENERATED_CONFIG_DATA_FILES_RAW := $(patsubst tests/%,%,$(shell \
28+
GENERATED_MBEDTLS_CONFIG_DATA_FILES := $(patsubst tests/%,%,$(shell \
2929
$(PYTHON) ../framework/scripts/generate_config_tests.py --list || \
3030
echo FAILED \
3131
))
32-
ifeq ($(GENERATED_CONFIG_DATA_FILES),FAILED)
32+
ifeq ($(GENERATED_MBEDTLS_CONFIG_DATA_FILES),FAILED)
3333
$(error "$(PYTHON) ../framework/scripts/generate_config_tests.py --list" failed)
3434
endif
35-
GENERATED_MBEDTLS_CONFIG_DATA_FILES := $(foreach file,$(GENERATED_CONFIG_DATA_FILES_RAW),$(if $(findstring mbedtls,$(file)),$(file),))
36-
GENERATED_PSA_CONFIG_DATA_FILES := $(foreach file,$(GENERATED_CONFIG_DATA_FILES_RAW),$(if $(findstring psa,$(file)),$(addprefix ../tf-psa-crypto/tests/,$(file)),))
37-
GENERATED_CONFIG_DATA_FILES := $(GENERATED_MBEDTLS_CONFIG_DATA_FILES)$(GENERATED_PSA_CONFIG_DATA_FILES)
35+
36+
GENERATED_PSA_CONFIG_DATA_FILES := $(addprefix ../tf-psa-crypto/,$(shell \
37+
$(PYTHON) ../tf-psa-crypto/framework/scripts/generate_config_tests.py --list || \
38+
echo FAILED \
39+
))
40+
ifeq ($(GENERATED_PSA_CONFIG_DATA_FILES),FAILED)
41+
$(error "$(PYTHON) ../tf-psa-crypto/framework/scripts/generate_config_tests.py --list" failed)
42+
endif
43+
44+
GENERATED_CONFIG_DATA_FILES := $(GENERATED_MBEDTLS_CONFIG_DATA_FILES) $(GENERATED_PSA_CONFIG_DATA_FILES)
3845
GENERATED_DATA_FILES += $(GENERATED_MBEDTLS_CONFIG_DATA_FILES)
3946
GENERATED_CRYPTO_DATA_FILES += $(GENERATED_PSA_CONFIG_DATA_FILES)
4047

@@ -57,9 +64,9 @@ endif
5764
GENERATED_CRYPTO_DATA_FILES += $(GENERATED_PSA_DATA_FILES)
5865

5966
GENERATED_FILES = $(GENERATED_DATA_FILES) $(GENERATED_CRYPTO_DATA_FILES)
60-
GENERATED_FILES += ../framework/tests/include/test/test_keys.h \
61-
../tf-psa-crypto/framework/tests/include/test/test_keys.h \
62-
src/test_certs.h
67+
GENERATED_FILES += include/test/test_keys.h \
68+
../tf-psa-crypto/tests/include/test/test_keys.h \
69+
include/test/test_certs.h
6370

6471
# Generated files needed to (fully) run ssl-opt.sh
6572
.PHONY: ssl-opt
@@ -112,8 +119,8 @@ generated_config_test_data: ../framework/scripts/mbedtls_framework/test_case.py
112119
generated_config_test_data: ../framework/scripts/mbedtls_framework/test_data_generation.py
113120
generated_config_test_data:
114121
echo " Gen $(GENERATED_CONFIG_DATA_FILES)"
115-
$(PYTHON) ../framework/scripts/generate_config_tests.py $(GENERATED_MBEDTLS_CONFIG_DATA_FILES)
116-
$(PYTHON) ../framework/scripts/generate_config_tests.py --directory ../tf-psa-crypto/tests/suites $(GENERATED_PSA_CONFIG_DATA_FILES)
122+
$(PYTHON) ../framework/scripts/generate_config_tests.py
123+
cd ../tf-psa-crypto && $(PYTHON) ./framework/scripts/generate_config_tests.py
117124
.SECONDARY: generated_config_test_data
118125

119126
$(GENERATED_ECP_DATA_FILES): $(gen_file_dep) generated_ecp_test_data
@@ -177,16 +184,16 @@ all: $(BINARIES) $(CRYPTO_BINARIES)
177184

178185
mbedtls_test: $(MBEDTLS_TEST_OBJS)
179186

180-
src/test_certs.h: ../framework/scripts/generate_test_cert_macros.py \
187+
include/test/test_certs.h: ../framework/scripts/generate_test_cert_macros.py \
181188
$($(PYTHON) ../framework/scripts/generate_test_cert_macros.py --list-dependencies)
182189
echo " Gen $@"
183190
$(PYTHON) ../framework/scripts/generate_test_cert_macros.py --output $@
184191

185-
../framework/tests/include/test/test_keys.h: ../framework/scripts/generate_test_keys.py
192+
include/test/test_keys.h: ../framework/scripts/generate_test_keys.py
186193
echo " Gen $@"
187194
$(PYTHON) ../framework/scripts/generate_test_keys.py --output $@
188195

189-
../tf-psa-crypto/framework/tests/include/test/test_keys.h: ../tf-psa-crypto/framework/scripts/generate_test_keys.py
196+
../tf-psa-crypto/tests/include/test/test_keys.h: ../tf-psa-crypto/framework/scripts/generate_test_keys.py
190197
echo " Gen $@"
191198
$(PYTHON) ../tf-psa-crypto/framework/scripts/generate_test_keys.py --output $@
192199

@@ -197,8 +204,8 @@ ifdef RECORD_PSA_STATUS_COVERAGE_LOG
197204
# therefore the wildcard enumeration above doesn't include it.
198205
TEST_OBJS_DEPS += ../framework/tests/include/test/instrument_record_status.h
199206
endif
200-
TEST_OBJS_DEPS += src/test_certs.h ../framework/tests/include/test/test_keys.h \
201-
../tf-psa-crypto/framework/tests/include/test/test_keys.h
207+
TEST_OBJS_DEPS += include/test/test_certs.h include/test/test_keys.h \
208+
../tf-psa-crypto/tests/include/test/test_keys.h
202209

203210
# Rule to compile common test C files in framework
204211
../framework/tests/src/%.o : ../framework/tests/src/%.c $(TEST_OBJS_DEPS)

tests/scripts/check-generated-files.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,10 @@ check()
141141
if [ -d tf-psa-crypto ]; then
142142
cd tf-psa-crypto
143143
check scripts/generate_psa_constants.py ./programs/psa/psa_constant_names_generated.c
144-
check ../framework/scripts/generate_bignum_tests.py $(../framework/scripts/generate_bignum_tests.py --list)
145-
check ../framework/scripts/generate_config_tests.py tests/suites/test_suite_config.psa_boolean.data
146-
check ../framework/scripts/generate_ecp_tests.py $(../framework/scripts/generate_ecp_tests.py --list)
147-
check ../framework/scripts/generate_psa_tests.py $(../framework/scripts/generate_psa_tests.py --list)
144+
check framework/scripts/generate_bignum_tests.py $(framework/scripts/generate_bignum_tests.py --list)
145+
check framework/scripts/generate_config_tests.py $(framework/scripts/generate_config_tests.py --list)
146+
check framework/scripts/generate_ecp_tests.py $(framework/scripts/generate_ecp_tests.py --list)
147+
check framework/scripts/generate_psa_tests.py $(framework/scripts/generate_psa_tests.py --list)
148148
cd ..
149149
# Generated files that are present in the repository even in the development
150150
# branch. (This is intended to be temporary, until the generator scripts are
@@ -171,7 +171,7 @@ else
171171
check framework/scripts/generate_psa_wrappers.py tests/include/test/psa_test_wrappers.h tests/src/psa_test_wrappers.c
172172
fi
173173

174-
check framework/scripts/generate_test_keys.py framework/tests/include/test/test_keys.h
174+
check framework/scripts/generate_test_keys.py tests/include/test/test_keys.h
175175

176176
# Additional checks for Mbed TLS only
177177
if in_mbedtls_repo; then
@@ -181,7 +181,7 @@ if in_mbedtls_repo; then
181181
check framework/scripts/generate_ssl_debug_helpers.py library/ssl_debug_helpers_generated.c
182182
check framework/scripts/generate_tls_handshake_tests.py tests/opt-testcases/handshake-generated.sh
183183
check framework/scripts/generate_tls13_compat_tests.py tests/opt-testcases/tls13-compat.sh
184-
check framework/scripts/generate_test_cert_macros.py tests/src/test_certs.h
184+
check framework/scripts/generate_test_cert_macros.py tests/include/test/test_certs.h
185185
# generate_visualc_files enumerates source files (library/*.c). It doesn't
186186
# care about their content, but the files must exist. So it must run after
187187
# the step that creates or updates these files.

0 commit comments

Comments
 (0)