mbed TLS Build

Dependents:   Slave-prot-prod

Revision:
0:cdf462088d13
diff -r 000000000000 -r cdf462088d13 tests/CMakeLists.txt
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/CMakeLists.txt	Thu Jan 05 00:18:44 2017 +0000
@@ -0,0 +1,130 @@
+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()
+
+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})
+    add_test(${data_name}-suite test_suite_${data_name})
+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 data_files available in an out-of-source build
+if (NOT ${CMAKE_CURRENT_BINARY_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
+    # Get OS dependent path to use in `execute_process`
+    file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/data_files" link)
+    file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/data_files" target)
+
+    if (NOT EXISTS ${link})
+        if (CMAKE_HOST_UNIX)
+            set(command ln -s ${target} ${link})
+        else()
+            set(command cmd.exe /c mklink /j ${link} ${target})
+        endif()
+
+        execute_process(COMMAND ${command}
+                        RESULT_VARIABLE result
+                        ERROR_VARIABLE output)
+
+        if (NOT ${result} EQUAL 0)
+            message(FATAL_ERROR "Could not create symbolic link for: ${target} --> ${output}")
+        endif()
+    endif()
+endif()
+