-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
98 lines (76 loc) · 2.6 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
91
92
93
94
95
96
97
98
cmake_minimum_required(VERSION 3.9.3)
set(module_dir ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
if(EXISTS ${module_dir})
list(APPEND CMAKE_MODULE_PATH ${module_dir})
endif()
include(HunterGate)
HunterGate(
URL "https://github.com/cpp-pm/hunter/archive/v0.24.7.tar.gz"
SHA1 "908ddcb223f25fa155315baae64ce0ab48a38bf7"
LOCAL
)
project(binding)
include(CheckCXXCompilerFlag)
if (NOT MSVC)
CHECK_CXX_COMPILER_FLAG(-std=c++17 LIBCXX_HAS_STDCXX17_FLAG)
if(LIBCXX_HAS_STDCXX17_FLAG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -O3")
else()
message(FATAL_ERROR "c++17 is required")
endif()
if(NOT APPLE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
endif()
if (APPLE)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -stdlib=libc++")
endif()
else()
CHECK_CXX_COMPILER_FLAG(/std:c++17 LIBCXX_HAS_STDCXX17_FLAG)
if(LIBCXX_HAS_STDCXX17_FLAG)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17 /O2 /arch:AVX2")
else()
message(FATAL_ERROR "c++17 is required")
endif()
endif(NOT MSVC)
# Build static libs
set(BUILD_SHARED_LIBS OFF CACHE BOOL "")
# Ignore tests and benchmarks
set(EVMONE_TESTING OFF CACHE BOOL "")
set(LEVELDB_BUILD_TESTS OFF CACHE BOOL "")
set(LEVELDB_BUILD_BENCHMARKS OFF CACHE BOOL "")
set(LEVELDB_INSTALL OFF CACHE BOOL "")
set(SNAPPY_BUILD_TESTS OFF CACHE BOOL "")
set(SNAPPY_BUILD_BENCHMARKS OFF CACHE BOOL "")
set(SNAPPY_INSTALL OFF CACHE BOOL "")
# Explicitly tell leveldb that we have snappy
set(HAVE_SNAPPY ON)
# Use static boost libs
set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_DEBUG_LIBS OFF)
set(Boost_USE_RELEASE_LIBS ON)
set(Boost_USE_MULTITHREADED ON)
set(Boost_USE_STATIC_RUNTIME OFF)
hunter_add_package(Boost COMPONENTS filesystem system thread context atomic log)
find_package(Boost CONFIG REQUIRED filesystem system thread context atomic log)
hunter_add_package(jsoncpp)
find_package(jsoncpp CONFIG REQUIRED)
hunter_add_package(cryptopp)
find_package(cryptopp CONFIG REQUIRED)
hunter_add_package(libscrypt)
find_package(libscrypt CONFIG REQUIRED)
hunter_add_package(ethash)
find_package(ethash CONFIG REQUIRED)
include(ProjectSecp256k1)
include(ProjectLibFF)
find_package(Threads)
# Global include path for all libs
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/libaleth")
add_subdirectory(evmone)
add_subdirectory(snappy)
add_subdirectory(leveldb)
add_subdirectory(leveldb-binding)
add_subdirectory(libaleth)
add_subdirectory(evm-binding)