Separate CMake targets for bignum and PSA

Signed-off-by: Werner Lewis <werner.lewis@arm.com>
This commit is contained in:
Werner Lewis 2022-08-23 11:29:05 +01:00
parent 75ef944da3
commit 383461c92f

View File

@ -26,7 +26,7 @@ execute_process(
WORKING_DIRECTORY WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/..
OUTPUT_VARIABLE OUTPUT_VARIABLE
bignum_generated_data_files) base_bignum_generated_data_files)
execute_process( execute_process(
COMMAND COMMAND
@ -37,32 +37,44 @@ execute_process(
WORKING_DIRECTORY WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/..
OUTPUT_VARIABLE OUTPUT_VARIABLE
psa_generated_data_files) base_psa_generated_data_files)
# Derive generated file paths in the build directory # Derive generated file paths in the build directory
set(base_generated_data_files ${bignum_generated_data_files} ${psa_generated_data_files}) set(base_generated_data_files ${base_bignum_generated_data_files} ${base_psa_generated_data_files})
set(generated_data_files "") set(bignum_generated_data_files "")
foreach(file ${base_generated_data_files}) set(psa_generated_data_files "")
list(APPEND generated_data_files ${CMAKE_CURRENT_BINARY_DIR}/${file}) foreach(file ${base_bignum_generated_data_files})
list(APPEND bignum_generated_data_files ${CMAKE_CURRENT_BINARY_DIR}/${file})
endforeach()
foreach(file ${base_psa_generated_data_files})
list(APPEND psa_generated_data_files ${CMAKE_CURRENT_BINARY_DIR}/${file})
endforeach() endforeach()
if(GEN_FILES) if(GEN_FILES)
add_custom_command( add_custom_command(
OUTPUT OUTPUT
${generated_data_files} ${bignum_generated_data_files}
WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/..
COMMAND
${MBEDTLS_PYTHON_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_bignum_tests.py
--directory ${CMAKE_CURRENT_BINARY_DIR}/suites
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_bignum_tests.py
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/mbedtls_dev/test_case.py
)
add_custom_command(
OUTPUT
${psa_generated_data_files}
WORKING_DIRECTORY WORKING_DIRECTORY
${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/..
COMMAND COMMAND
${MBEDTLS_PYTHON_EXECUTABLE} ${MBEDTLS_PYTHON_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_psa_tests.py ${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_psa_tests.py
--directory ${CMAKE_CURRENT_BINARY_DIR}/suites --directory ${CMAKE_CURRENT_BINARY_DIR}/suites
COMMAND
${MBEDTLS_PYTHON_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_bignum_tests.py
--directory ${CMAKE_CURRENT_BINARY_DIR}/suites
DEPENDS DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_psa_tests.py ${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_psa_tests.py
${CMAKE_CURRENT_SOURCE_DIR}/../tests/scripts/generate_bignum_tests.py
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/mbedtls_dev/crypto_knowledge.py ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/mbedtls_dev/crypto_knowledge.py
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/mbedtls_dev/macro_collector.py ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/mbedtls_dev/macro_collector.py
${CMAKE_CURRENT_SOURCE_DIR}/../scripts/mbedtls_dev/psa_storage.py ${CMAKE_CURRENT_SOURCE_DIR}/../scripts/mbedtls_dev/psa_storage.py
@ -82,7 +94,8 @@ endif()
# they can cause race conditions in parallel builds. # they can cause race conditions in parallel builds.
# With this line, only 4 sub-makefiles include the above command, that reduces # With this line, only 4 sub-makefiles include the above command, that reduces
# the risk of a race. # the risk of a race.
add_custom_target(test_suite_generated_data DEPENDS ${generated_data_files}) add_custom_target(test_suite_bignum_generated_data DEPENDS ${bignum_generated_data_files})
add_custom_target(test_suite_psa_generated_data DEPENDS ${psa_generated_data_files})
# Test suites caught by SKIP_TEST_SUITES are built but not executed. # 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" # "foo" as a skip pattern skips "test_suite_foo" and "test_suite_foo.bar"
# but not "test_suite_foobar". # but not "test_suite_foobar".
@ -99,23 +112,39 @@ function(add_test_suite suite_name)
# Get the test names of the tests with generated .data files # Get the test names of the tests with generated .data files
# from the generated_data_files list in parent scope. # from the generated_data_files list in parent scope.
set(generated_data_names "") set(bignum_generated_data_names "")
foreach(generated_data_file ${generated_data_files}) set(psa_generated_data_names "")
foreach(generated_data_file ${bignum_generated_data_files})
# Get the plain filename # Get the plain filename
get_filename_component(generated_data_name ${generated_data_file} NAME) get_filename_component(generated_data_name ${generated_data_file} NAME)
# Remove the ".data" extension # Remove the ".data" extension
get_name_without_last_ext(generated_data_name ${generated_data_name}) get_name_without_last_ext(generated_data_name ${generated_data_name})
# Remove leading "test_suite_" # Remove leading "test_suite_"
string(SUBSTRING ${generated_data_name} 11 -1 generated_data_name) string(SUBSTRING ${generated_data_name} 11 -1 generated_data_name)
list(APPEND generated_data_names ${generated_data_name}) list(APPEND bignum_generated_data_names ${generated_data_name})
endforeach()
foreach(generated_data_file ${psa_generated_data_files})
# Get the plain filename
get_filename_component(generated_data_name ${generated_data_file} NAME)
# Remove the ".data" extension
get_name_without_last_ext(generated_data_name ${generated_data_name})
# Remove leading "test_suite_"
string(SUBSTRING ${generated_data_name} 11 -1 generated_data_name)
list(APPEND psa_generated_data_names ${generated_data_name})
endforeach() endforeach()
if(";${generated_data_names};" MATCHES ";${data_name};") if(";${bignum_generated_data_names};" MATCHES ";${data_name};")
set(data_file set(data_file
${CMAKE_CURRENT_BINARY_DIR}/suites/test_suite_${data_name}.data) ${CMAKE_CURRENT_BINARY_DIR}/suites/test_suite_${data_name}.data)
set(dependency test_suite_bignum_generated_data)
elseif(";${psa_generated_data_names};" MATCHES ";${data_name};")
set(data_file
${CMAKE_CURRENT_BINARY_DIR}/suites/test_suite_${data_name}.data)
set(dependency test_suite_psa_generated_data)
else() else()
set(data_file set(data_file
${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data) ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data)
set(dependency test_suite_bignum_generated_data test_suite_psa_generated_data)
endif() endif()
add_custom_command( add_custom_command(
@ -146,7 +175,7 @@ function(add_test_suite suite_name)
) )
add_executable(test_suite_${data_name} test_suite_${data_name}.c $<TARGET_OBJECTS:mbedtls_test>) add_executable(test_suite_${data_name} test_suite_${data_name}.c $<TARGET_OBJECTS:mbedtls_test>)
add_dependencies(test_suite_${data_name} test_suite_generated_data) add_dependencies(test_suite_${data_name} ${dependency})
target_link_libraries(test_suite_${data_name} ${libs}) target_link_libraries(test_suite_${data_name} ${libs})
# Include test-specific header files from ./include and private header # Include test-specific header files from ./include and private header
# files (used by some invasive tests) from ../library. Public header # files (used by some invasive tests) from ../library. Public header