X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=5d6da65729cab1fa0d0dd5a81c5be0d8c4cdd85c;hb=bd1b2c234ea8ef2bdfe8f303f6002525d6d69bc7;hp=2ea95746bb4186d3decf2afe296b3a00cc8d60e4;hpb=a7a5ff4a0eaff8586f963d7d15a3b3236201c5d0;p=openssl-gost%2Fengine.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ea9574..5d6da65 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,6 +4,7 @@ project(gost-engine LANGUAGES C) include(GNUInstallDirs) include(CheckLibraryExists) include(CheckFunctionExists) +include(CheckCSourceRuns) enable_testing() @@ -26,6 +27,11 @@ if (ASAN) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -g3 -fno-omit-frame-pointer") endif() +# DEPRECATEDIN_3_0 CMAC +set_source_files_properties(gost_omac.c PROPERTIES COMPILE_FLAGS -Wno-error=deprecated-declarations) +# DEPRECATEDIN_3_0 HMAC +set_source_files_properties(gost_keyexpimp.c PROPERTIES COMPILE_FLAGS -Wno-error=deprecated-declarations) + set(CMAKE_C_STANDARD 90) CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME_C) CHECK_LIBRARY_EXISTS(rt clock_gettime "" HAVE_CLOCK_GETTIME_RT) @@ -42,8 +48,28 @@ else() add_definitions(-DL_ENDIAN) endif() +check_c_source_runs(" + #ifdef _MSC_VER + # include + #else + # include + #endif + int main(void) { + unsigned long long x = -1, y = 1, r; + unsigned char cf; + cf = _addcarry_u64(1, (unsigned long)x, y, &r); + return !(cf == 1 && r == 1); + } + " ADDCARRY_U64) +if (ADDCARRY_U64) + add_definitions(-DHAVE_ADDCARRY_U64) +endif() + set(BIN_DIRECTORY bin) +# Same soversion as OpenSSL +set(GOST_SOVERSION "${OPENSSL_VERSION_MAJOR}.${OPENSSL_VERSION_MINOR}") + set(OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${BIN_DIRECTORY}) #set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUT_DIRECTORY}) @@ -186,7 +212,7 @@ add_test(NAME engine COMMAND perl run_tests WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test) set_tests_properties(engine PROPERTIES ENVIRONMENT - "OPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR};OPENSSL_ENGINES=${OUTPUT_DIRECTORY}") + "OPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR};OPENSSL_ENGINES=${OUTPUT_DIRECTORY};OPENSSL_CONF=${CMAKE_SOURCE_DIR}/test/empty.cnf") endif() add_executable(sign benchmark/sign.c) @@ -209,8 +235,9 @@ set_property(TARGET ${BINARY_TESTS_TARGETS} APPEND PROPERTY COMPILE_DEFINITIONS add_library(gost_core STATIC ${GOST_LIB_SOURCE_FILES}) set_target_properties(gost_core PROPERTIES POSITION_INDEPENDENT_CODE ON) -add_library(gost_engine MODULE ${GOST_ENGINE_SOURCE_FILES}) +add_library(gost_engine SHARED ${GOST_ENGINE_SOURCE_FILES}) set_target_properties(gost_engine PROPERTIES PREFIX "" OUTPUT_NAME "gost") +set_target_properties(gost_engine PROPERTIES VERSION ${GOST_SOVERSION} SOVERSION ${GOST_SOVERSION}) target_link_libraries(gost_engine gost_core ${OPENSSL_CRYPTO_LIBRARY}) set(GOST_SUM_SOURCE_FILES @@ -232,6 +259,10 @@ add_custom_target(tags COMMAND ctags -R . ${OPENSSL_ROOT_DIR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) +add_custom_target(tcl_tests + COMMAND ENGINE_DIR=${OUTPUT_DIRECTORY} sh ./runtest.sh + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tcl_tests) + add_executable(test_tlstree test_tlstree.c) target_link_libraries(test_tlstree PUBLIC ${OPENSSL_CRYPTO_LIBRARY})