-cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
project(gost-engine LANGUAGES C)
include(GNUInstallDirs)
add_definitions(-DL_ENDIAN)
endif()
-check_c_source_runs("
- #ifdef _MSC_VER
- # include <intrin.h>
- #else
- # include <x86intrin.h>
- #endif
- int main(void) {
- unsigned long long x = -1, y = 1, r;
- unsigned char cf;
- cf = _addcarry_u64(1, x, y, &r);
- return !(cf == 1 && r == 1);
- }
- " ADDCARRY_U64)
-if (ADDCARRY_U64)
- add_definitions(-DHAVE_ADDCARRY_U64)
-endif()
-
-check_c_source_runs("
- int main(void) {
- char buf[16] = { 0, 1, 2 };
- int *p = (int *)(buf + 1);
- int *q = (int *)(buf + 2);
- return (*p == *q);
- }
- " RELAXED_ALIGNMENT)
-if (NOT RELAXED_ALIGNMENT)
- add_definitions(-DSTRICT_ALIGNMENT)
-endif()
+if (NOT CMAKE_CROSSCOMPILING)
+ check_c_source_runs("
+ #ifdef _MSC_VER
+ # include <intrin.h>
+ #else
+ # include <x86intrin.h>
+ #endif
+ int main(void) {
+ unsigned long long x = -1, y = 1, r;
+ unsigned char cf;
+ cf = _addcarry_u64(1, x, y, &r);
+ return !(cf == 1 && r == 1);
+ }
+ " ADDCARRY_U64)
+ if (ADDCARRY_U64)
+ add_definitions(-DHAVE_ADDCARRY_U64)
+ endif()
+endif(NOT CMAKE_CROSSCOMPILING)
+
+if (NOT CMAKE_CROSSCOMPILING)
+ check_c_source_runs("
+ int main(void) {
+ char buf[16] = { 0, 1, 2 };
+ int *p = (int *)(buf + 1);
+ int *q = (int *)(buf + 2);
+ return (*p == *q);
+ }
+ " RELAXED_ALIGNMENT)
+ if (NOT RELAXED_ALIGNMENT)
+ add_definitions(-DSTRICT_ALIGNMENT)
+ endif()
+endif(NOT CMAKE_CROSSCOMPILING)
set(BIN_DIRECTORY bin)
gost_md.c
gost_md2012.c
gost_pmeth.c
- gost_omac.c
- gost_omac_acpkm.c
)
add_executable(test_digest test_digest.c)
COMMAND test_digest)
add_executable(test_curves test_curves.c)
-target_link_libraries(test_curves gost_engine gost_core)
+target_link_libraries(test_curves gost_engine OpenSSL::Crypto)
add_test(NAME curves
COMMAND test_curves)
COMMAND test_tls)
add_executable(test_context test_context.c)
-target_link_libraries(test_context gost_engine gost_core OpenSSL::Crypto)
+target_link_libraries(test_context gost_engine OpenSSL::Crypto)
add_test(NAME context
COMMAND test_context)
add_executable(test_grasshopper test_grasshopper.c)
-target_link_libraries(test_grasshopper gost_engine gost_core OpenSSL::Crypto)
+target_link_libraries(test_grasshopper gost_engine OpenSSL::Crypto)
add_test(NAME grasshopper
COMMAND test_grasshopper)
add_executable(test_keyexpimp test_keyexpimp.c)
#target_compile_definitions(test_keyexpimp PUBLIC -DOPENSSL_LOAD_CONF)
-target_link_libraries(test_keyexpimp gost_engine gost_core)
+target_link_libraries(test_keyexpimp gost_engine OpenSSL::Crypto)
add_test(NAME keyexpimp
COMMAND test_keyexpimp)
target_link_libraries(test_tlstree PUBLIC OpenSSL::Crypto)
# install
-set(OPENSSL_MAN_INSTALL_DIR ${CMAKE_INSTALL_MANDIR}/man1)
-
-install(TARGETS gost_engine gostsum gost12sum EXPORT GostEngineConfig
- LIBRARY DESTINATION ${OPENSSL_ENGINES_DIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
-install(FILES gostsum.1 gost12sum.1 DESTINATION ${OPENSSL_MAN_INSTALL_DIR})
-if (MSVC)
- install(FILES $<TARGET_PDB_FILE:gost_engine> DESTINATION ${OPENSSL_ENGINES_DIR} OPTIONAL)
- install(FILES $<TARGET_PDB_FILE:gostsum> $<TARGET_PDB_FILE:gost12sum> DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
+if (NOT CMAKE_SKIP_INSTALL_RULES)
+ set(OPENSSL_MAN_INSTALL_DIR ${CMAKE_INSTALL_MANDIR}/man1)
+
+ install(TARGETS gost_engine gostsum gost12sum EXPORT GostEngineConfig
+ LIBRARY DESTINATION ${OPENSSL_ENGINES_DIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
+ install(FILES gostsum.1 gost12sum.1 DESTINATION ${OPENSSL_MAN_INSTALL_DIR})
+ if (MSVC)
+ install(FILES $<TARGET_PDB_FILE:gost_engine> DESTINATION ${OPENSSL_ENGINES_DIR} OPTIONAL)
+ install(FILES $<TARGET_PDB_FILE:gostsum> $<TARGET_PDB_FILE:gost12sum> DESTINATION ${CMAKE_INSTALL_BINDIR} OPTIONAL)
+ endif()
endif()