mirror of
https://github.com/yuzu-emu/mbedtls.git
synced 2024-11-23 12:45:37 +01:00
bda9abf696
With the build option SKIP_TEST_SUITES=..., the specified test suites are built, but skipped when running tests. Usage: make check SKIP_TEST_SUITES=timing,gcm or cmake -D SKIP_TEST_SUITES=timing,gcm ... The list can be separated by any of space, comma or semicolon, and each element can be a regular expression in ERE syntax except that "." stands for itself. Skipping "foo" skips not only "foo" itself but also any "foo.bar", but does not skip "foobar".
127 lines
4.0 KiB
CMake
127 lines
4.0 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()
|
|
|
|
# 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 ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.pl ${CMAKE_CURRENT_SOURCE_DIR}/suites test_suite_${suite_name} test_suite_${data_name}
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/scripts/generate_code.pl mbedtls suites/helpers.function suites/main_test.function suites/test_suite_${suite_name}.function 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})
|
|
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.rest)
|
|
add_test_suite(arc4)
|
|
add_test_suite(asn1write)
|
|
add_test_suite(base64)
|
|
add_test_suite(blowfish)
|
|
add_test_suite(camellia)
|
|
add_test_suite(ccm)
|
|
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.des)
|
|
add_test_suite(cipher cipher.gcm)
|
|
add_test_suite(cipher cipher.null)
|
|
add_test_suite(cipher cipher.padding)
|
|
add_test_suite(cmac)
|
|
add_test_suite(ctr_drbg)
|
|
add_test_suite(debug)
|
|
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(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(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(shax)
|
|
add_test_suite(ssl)
|
|
add_test_suite(timing)
|
|
add_test_suite(rsa)
|
|
add_test_suite(version)
|
|
add_test_suite(xtea)
|
|
add_test_suite(x509parse)
|
|
add_test_suite(x509write)
|
|
|
|
# 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(compat.sh)
|
|
link_to_source(data_files)
|
|
link_to_source(scripts)
|
|
link_to_source(ssl-opt.sh)
|
|
endif()
|