mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-23 05:55:40 +01:00
1264c2a86f
The version test suite is duplicated between Mbed TLS and Mbed Crypto. Use TLS's copy and not Crypto's copy when Crypto is used as a submodule of TLS. The version test is the only test that is tested from both TLS and Crypto, despite being entirely in libmbedcrypto. This is because the test data is code-gen'd from the version updating script and the version between Mbed TLS and Mbed Crypto don't necessarily always agree. The test data must come from the top level module, as only the top level module will have test data that matches the expected version.
153 lines
5.3 KiB
CMake
153 lines
5.3 KiB
CMake
set(libs
|
|
mbedtls
|
|
)
|
|
|
|
if(USE_PKCS11_HELPER_LIBRARY)
|
|
set(libs ${libs} pkcs11-helper)
|
|
endif(USE_PKCS11_HELPER_LIBRARY)
|
|
|
|
if(ENABLE_ZLIB_SUPPORT)
|
|
set(libs ${libs} ${ZLIB_LIBRARIES})
|
|
endif(ENABLE_ZLIB_SUPPORT)
|
|
|
|
find_package(Perl)
|
|
if(NOT PERL_FOUND)
|
|
message(FATAL_ERROR "Cannot build test suites without Perl")
|
|
endif()
|
|
|
|
# Enable definition of various functions used throughout the testsuite
|
|
# (gethostname, strdup, fileno...) even when compiling with -std=c99. Harmless
|
|
# on non-POSIX platforms.
|
|
add_definitions("-D_POSIX_C_SOURCE=200809L")
|
|
|
|
# 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"
|
|
# but not "test_suite_foobar".
|
|
string(REGEX REPLACE "[ ,;]" "|" SKIP_TEST_SUITES_REGEX "${SKIP_TEST_SUITES}")
|
|
string(REPLACE "." "\\." SKIP_TEST_SUITES_REGEX "${SKIP_TEST_SUITES_REGEX}")
|
|
set(SKIP_TEST_SUITES_REGEX "^(${SKIP_TEST_SUITES_REGEX})(\$|\\.)")
|
|
|
|
function(add_test_suite suite_name)
|
|
if(ARGV1)
|
|
set(data_name ${ARGV1})
|
|
else()
|
|
set(data_name ${suite_name})
|
|
endif()
|
|
|
|
add_custom_command(
|
|
OUTPUT test_suite_${data_name}.c
|
|
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_test_code.py -f ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function -d ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data -t ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function -p ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function -s ${CMAKE_CURRENT_SOURCE_DIR}/suites --helpers-file ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function -o .
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_test_code.py mbedtls ${CMAKE_CURRENT_SOURCE_DIR}/suites/helpers.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/main_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/host_test.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${suite_name}.function ${CMAKE_CURRENT_SOURCE_DIR}/suites/test_suite_${data_name}.data
|
|
)
|
|
|
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
|
add_executable(test_suite_${data_name} test_suite_${data_name}.c)
|
|
target_link_libraries(test_suite_${data_name} ${libs})
|
|
target_include_directories(test_suite_${data_name}
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/include/
|
|
PUBLIC ${CMAKE_SOURCE_DIR}/crypto/include/)
|
|
|
|
if(${data_name} MATCHES ${SKIP_TEST_SUITES_REGEX})
|
|
message(STATUS "The test suite ${data_name} will not be executed.")
|
|
else()
|
|
add_test(${data_name}-suite test_suite_${data_name} --verbose)
|
|
endif()
|
|
endfunction(add_test_suite)
|
|
|
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function")
|
|
endif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_CLANG)
|
|
|
|
if(MSVC)
|
|
# If a warning level has been defined, suppress all warnings for test code
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W0")
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX-")
|
|
endif(MSVC)
|
|
|
|
add_test_suite(aes aes.ecb)
|
|
add_test_suite(aes aes.cbc)
|
|
add_test_suite(aes aes.cfb)
|
|
add_test_suite(aes aes.ofb)
|
|
add_test_suite(aes aes.rest)
|
|
add_test_suite(aes aes.xts)
|
|
add_test_suite(arc4)
|
|
add_test_suite(aria)
|
|
add_test_suite(asn1write)
|
|
add_test_suite(base64)
|
|
add_test_suite(blowfish)
|
|
add_test_suite(camellia)
|
|
add_test_suite(ccm)
|
|
add_test_suite(chacha20)
|
|
add_test_suite(chachapoly)
|
|
add_test_suite(cipher cipher.aes)
|
|
add_test_suite(cipher cipher.arc4)
|
|
add_test_suite(cipher cipher.blowfish)
|
|
add_test_suite(cipher cipher.camellia)
|
|
add_test_suite(cipher cipher.ccm)
|
|
add_test_suite(cipher cipher.chacha20)
|
|
add_test_suite(cipher cipher.chachapoly)
|
|
add_test_suite(cipher cipher.des)
|
|
add_test_suite(cipher cipher.gcm)
|
|
add_test_suite(cipher cipher.misc)
|
|
add_test_suite(cipher cipher.null)
|
|
add_test_suite(cipher cipher.padding)
|
|
add_test_suite(cmac)
|
|
add_test_suite(ctr_drbg)
|
|
add_test_suite(des)
|
|
add_test_suite(dhm)
|
|
add_test_suite(ecdh)
|
|
add_test_suite(ecdsa)
|
|
add_test_suite(ecjpake)
|
|
add_test_suite(ecp)
|
|
add_test_suite(entropy)
|
|
add_test_suite(error)
|
|
add_test_suite(gcm gcm.aes128_en)
|
|
add_test_suite(gcm gcm.aes192_en)
|
|
add_test_suite(gcm gcm.aes256_en)
|
|
add_test_suite(gcm gcm.aes128_de)
|
|
add_test_suite(gcm gcm.aes192_de)
|
|
add_test_suite(gcm gcm.aes256_de)
|
|
add_test_suite(gcm gcm.camellia)
|
|
add_test_suite(gcm gcm.misc)
|
|
add_test_suite(hkdf)
|
|
add_test_suite(hmac_drbg hmac_drbg.misc)
|
|
add_test_suite(hmac_drbg hmac_drbg.no_reseed)
|
|
add_test_suite(hmac_drbg hmac_drbg.nopr)
|
|
add_test_suite(hmac_drbg hmac_drbg.pr)
|
|
add_test_suite(md)
|
|
add_test_suite(mdx)
|
|
add_test_suite(memory_buffer_alloc)
|
|
add_test_suite(mpi)
|
|
add_test_suite(nist_kw)
|
|
add_test_suite(pem)
|
|
add_test_suite(pkcs1_v15)
|
|
add_test_suite(pkcs1_v21)
|
|
add_test_suite(pkcs5)
|
|
add_test_suite(pk)
|
|
add_test_suite(pkparse)
|
|
add_test_suite(pkwrite)
|
|
add_test_suite(poly1305)
|
|
add_test_suite(psa_crypto)
|
|
add_test_suite(psa_crypto_entropy)
|
|
add_test_suite(psa_crypto_hash)
|
|
add_test_suite(psa_crypto_init)
|
|
add_test_suite(psa_crypto_metadata)
|
|
add_test_suite(psa_crypto_persistent_key)
|
|
add_test_suite(psa_crypto_slot_management)
|
|
add_test_suite(psa_crypto_storage_file)
|
|
add_test_suite(shax)
|
|
add_test_suite(timing)
|
|
add_test_suite(rsa)
|
|
add_test_suite(xtea)
|
|
if (NOT USE_CRYPTO_SUBMODULE)
|
|
add_test_suite(version)
|
|
endif()
|
|
|
|
# Make scripts and data files needed for testing available in an
|
|
# out-of-source build.
|
|
if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
|
|
link_to_source(data_files)
|
|
link_to_source(scripts)
|
|
link_to_source(suites)
|
|
endif()
|