forked from ladnir/cryptoTools
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
90 lines (63 loc) · 3.12 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
cmake_minimum_required (VERSION 2.8)
project(cryptoTools)
if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
############################################
# If top level cmake #
############################################
if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
message("Please consider updating CMake to 3.12+")
endif()
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/bin)
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib)
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/lib)
set(CMAKE_C_FLAGS "-ffunction-sections -Wall -maes -msse2 -msse4.1 -mpclmul -Wfatal-errors -pthread -fPIC -Wno-ignored-attributes")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS}")
#if(ENABLE_CPP_14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
#else()
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
#endif()
# Set a default build type for single-configuration
# CMake generators if no build type is set.
if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
SET(CMAKE_BUILD_TYPE Release)
endif()
# Select flags.
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO " -O2 -g -ggdb")
SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g -ggdb")
endif()
#############################################
# CONFIGURE #
#############################################
find_program(NASM nasm)
option(ENABLE_MIRACL "use the miracl library" OFF)
option(ENABLE_RELIC "use the relic library" OFF)
option(ENABLE_CIRCUITS "compile the circuit module" OFF)
option(ENABLE_CPP_14 "compile with the c++14" ON)
option(ENABLE_NET_LOG "compile with network logging" OFF)
option(ENABLE_WOLFSSL "conpiler with WolfSSL enabled" OFF)
set(ENABLE_FULL_GSL ${ENABLE_CPP_14})
# make these visable to the parent scope
set(ENABLE_MIRACL ${ENABLE_MIRACL} PARENT_SCOPE)
set(ENABLE_RELIC ${ENABLE_RELIC} PARENT_SCOPE)
message(STATUS "cryptoTools options\n=======================================================")
message(STATUS "Option: CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}\n\tRelease\n\tDebug\n\tRELWITHDEBINFO")
message(STATUS "Option: ENABLE_MIRACL = ${ENABLE_MIRACL}")
message(STATUS "Option: ENABLE_RELIC = ${ENABLE_RELIC}")
message(STATUS "Option: ENABLE_CIRCUITS = ${ENABLE_CIRCUITS}")
#message(STATUS "Option: ENABLE_CPP_14 = ${ENABLE_CPP_14}")
message(STATUS "Option: ENABLE_NET_LOG = ${ENABLE_NET_LOG}")
message(STATUS "Option: ENABLE_WOLFSSL = ${ENABLE_WOLFSSL}\n\n")
if(NOT ENABLE_CPP_14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing")
endif()
configure_file(cryptoTools/Common/config.h.in "${CMAKE_CURRENT_SOURCE_DIR}/cryptoTools/Common/config.h" )
#############################################
# cryptoTools, tests, frontend #
#############################################
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
add_subdirectory(cryptoTools)
add_subdirectory(tests_cryptoTools)
add_subdirectory(frontend_cryptoTools)
install(FILES cryptotools-config.cmake DESTINATION cmake/)