-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
88 lines (70 loc) · 2.59 KB
/
CMakeLists.txt
File metadata and controls
88 lines (70 loc) · 2.59 KB
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
cmake_minimum_required(VERSION 3.14)
if (WIN32)
add_definitions( "-D_GLIBCXX_USE_NANOSLEEP=1" ) # "'sleep_for' is not a member of 'std::this_thread'" in gcc 4.7/4.8
add_definitions( "-DWIN32_LEAN_AND_MEAN" )
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj -O2 -fPIC -F/Library/Frameworks -pthread -lcrypto -lcrypt32 -lbcrypt")
else()
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -F/Library/Frameworks -pthread")
endif()
project(monero LANGUAGES CXX)
option(ENABLE_COVERAGE "Enable coverage" OFF)
if(ENABLE_COVERAGE)
message(STATUS "Coverage enabled")
add_compile_options(--coverage -O0 -g -fprofile-update=atomic)
add_link_options(--coverage)
endif()
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Python3 REQUIRED COMPONENTS Interpreter Development.Module)
find_package(pybind11 REQUIRED)
set(Boost_NO_BOOST_CMAKE 1)
set(Boost_USE_MULTITHREADED ON)
find_package(Boost REQUIRED COMPONENTS system thread serialization filesystem)
find_package(OpenSSL REQUIRED)
set(SOURCES
src/cpp/common/py_monero_common.cpp
src/cpp/daemon/py_monero_daemon_model.cpp
src/cpp/daemon/py_monero_daemon_rpc_model.cpp
src/cpp/daemon/py_monero_daemon_rpc.cpp
src/cpp/wallet/py_monero_wallet_model.cpp
src/cpp/wallet/py_monero_wallet.cpp
src/cpp/wallet/py_monero_wallet_rpc_model.cpp
src/cpp/wallet/py_monero_wallet_rpc.cpp
src/cpp/utils/py_monero_utils.cpp
src/cpp/py_monero.cpp
)
include_directories(
${pybind11_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/external/monero-cpp/src
${CMAKE_CURRENT_SOURCE_DIR}/external/monero-cpp/external/monero-project/src
${CMAKE_CURRENT_SOURCE_DIR}/external/monero-cpp/external/monero-project/contrib/epee/include
${CMAKE_CURRENT_SOURCE_DIR}/external/monero-cpp/external/monero-project/external
${CMAKE_CURRENT_SOURCE_DIR}/external/monero-cpp/external/monero-project/external/easylogging++
${CMAKE_CURRENT_SOURCE_DIR}/external/monero-cpp/external/monero-project/external/rapidjson/include
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/common
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/daemon
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/wallet
${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/utils
)
link_directories(
${CMAKE_CURRENT_SOURCE_DIR}/external/monero-cpp/build
)
pybind11_add_module(monero ${SOURCES})
target_link_libraries(monero PRIVATE
monero-cpp
Boost::system
Boost::thread
Boost::serialization
Boost::filesystem
OpenSSL::SSL
OpenSSL::Crypto
)
if (WIN32)
target_link_libraries(monero PRIVATE
ws2_32
crypt32
bcrypt
)
endif()
install(TARGETS monero DESTINATION .)