/
CMakeLists.txt
145 lines (110 loc) · 4.39 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(bitcoin)
OPTION(BITCOIN_ENABLE_CUDA "Enable CUDA miner" OFF)
OPTION(BITCOIN_ENABLE_OPENCL "Enable OpenCL miner" OFF)
OPTION(BITCOIN_ENABLE_REMOTE_SERVER "Enable remote miner server" ON)
OPTION(BITCOIN_BUILD_GUI "Build Server GUI (bitcoin)" OFF)
OPTION(BITCOIN_BUILD_DAEMON "Build Server Daemon (bitcoind)" ON)
OPTION(BITCOIN_BUILD_REMOTE_MINER "Build remote miner (bitcoinr)" ON)
OPTION(BITCOIN_BUILD_RPC_MINER "Build RPC miner (rpcminer)" OFF)
IF(NOT BITCOIN_ENABLE_CUDA AND NOT BITCOIN_ENABLE_OPENCL)
OPTION(BITCOIN_4WAYSSE2 "Enable 4 Way SSE2 CPU mining" OFF)
ENDIF(NOT BITCOIN_ENABLE_CUDA AND NOT BITCOIN_ENABLE_OPENCL)
SET(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake-modules/" ${CMAKE_MODULE_PATH})
SET(BITCOIN_BASE_SRC
${CMAKE_SOURCE_DIR}/src/db.cpp
${CMAKE_SOURCE_DIR}/src/init.cpp
${CMAKE_SOURCE_DIR}/src/irc.cpp
${CMAKE_SOURCE_DIR}/src/main.cpp
${CMAKE_SOURCE_DIR}/src/net.cpp
${CMAKE_SOURCE_DIR}/src/rpc.cpp
${CMAKE_SOURCE_DIR}/src/script.cpp
${CMAKE_SOURCE_DIR}/src/sha256.cpp
${CMAKE_SOURCE_DIR}/src/util.cpp
${CMAKE_SOURCE_DIR}/src/cryptopp/cpu.cpp
${CMAKE_SOURCE_DIR}/src/cryptopp/sha.cpp
${CMAKE_SOURCE_DIR}/src/gpucommon/gpucommon.cpp
${CMAKE_SOURCE_DIR}/src/json/json_spirit_reader.cpp
${CMAKE_SOURCE_DIR}/src/json/json_spirit_value.cpp
${CMAKE_SOURCE_DIR}/src/json/json_spirit_writer.cpp
${CMAKE_SOURCE_DIR}/src/minercommon/base64.c
${CMAKE_SOURCE_DIR}/src/remote/remoteminer.cpp
${CMAKE_SOURCE_DIR}/src/remote/remoteminermessage.cpp
)
IF(WIN32)
SET(BITCOIN_BASE_SRC ${BITCOIN_BASE_SRC} ${CMAKE_SOURCE_DIR}/src/ui.rc)
ENDIF(WIN32)
SET(BITCOIN_GUI_SRC
${CMAKE_SOURCE_DIR}/src/ui.cpp
${CMAKE_SOURCE_DIR}/src/uibase.cpp
)
SET(BITCOIN_CUDA_SRC
${CMAKE_SOURCE_DIR}/src/cuda/bitcoinminercuda.cpp
${CMAKE_SOURCE_DIR}/src/cuda/bitcoinminercuda.cu
)
SET(BITCOIN_OPENCL_SRC
${CMAKE_SOURCE_DIR}/src/opencl/bitcoinmineropencl.cpp
)
IF(BITOIN_ENABLE_CUDA AND BITCOIN_ENABLE_OPENCL)
MESSAGE(FATAL_ERROR "You can only enable CUDA or OpenCL, not both")
ENDIF(BITOIN_ENABLE_CUDA AND BITCOIN_ENABLE_OPENCL)
IF(NOT BITCOIN_BUILD_GUI AND NOT BITCOIN_BUILD_DAEMON AND NOT BITCOIN_BUILD_REMOTE_MINER AND NOT BITCOIN_BUILD_RPC_MINER)
MESSAGE(FATAL_ERROR "Nothing to build. You must build the GUI, Daemon, Remote Miner, or RPC Miner.")
ENDIF(NOT BITCOIN_BUILD_GUI AND NOT BITCOIN_BUILD_DAEMON AND NOT BITCOIN_BUILD_REMOTE_MINER AND NOT BITCOIN_BUILD_RPC_MINER)
# Find all the libraries we will need (Boost, wxWidgets, BDB, OpenSSL, and optionally CUDA or OpenCL)
# Use Boot module built into CMake
SET(Boost_USE_STATIC_LIBS ON)
SET(Boost_USE_MULTITHREADED ON)
FIND_PACKAGE(Boost REQUIRED date_time filesystem program_options regex system thread)
IF(Boost_FOUND)
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
ENDIF(Boost_FOUND)
# Use wxWidgets module built into CMake
IF(BITCOIN_BUILD_GUI)
SET(wxWidgets_USE_DEBUG OFF)
SET(wxWidgets_USE_UNICODE ON)
SET(wxWidgets_USE_UNIVERSAL ON)
SET(wxWidgets_USE_STATIC ON)
FIND_PACKAGE(wxWidgets REQUIRED base core adv html)
IF(wxWidgets_FOUND)
INCLUDE_DIRECTORIES(${wxWidgets_INCLUDE_DIRS})
ENDIF(wxWidgets_FOUND)
ENDIF(BITCOIN_BUILD_GUI)
# Use OpenSSL module built into CMake
FIND_PACKAGE(OpenSSL REQUIRED)
IF(OPENSSL_FOUND)
INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR})
ENDIF(OPENSSL_FOUND)
# Use BDB local module
FIND_PACKAGE(BerkeleyDB)
IF(DB_INCLUDE_DIR)
INCLUDE_DIRECTORIES(${DB_INCLUDE_DIR})
ELSE(DB_INCLUDE_DIR)
MESSAGE(FATAL_ERROR "Could not locate BerkeleyDB")
ENDIF(DB_INCLUDE_DIR)
# Use fixed CUDA local module (2.8.2 standard one won't work in Windows when declaring WIN32)
IF(BITCOIN_ENABLE_CUDA)
FIND_PACKAGE(CUDA REQUIRED)
IF(CUDA_FOUND)
INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})
ENDIF(CUDA_FOUND)
ENDIF(BITCOIN_ENABLE_CUDA)
# Use OpenCL local module
IF(BITCOIN_ENABLE_OPENCL)
FIND_PACKAGE(OpenCL REQUIRED)
IF(OpenCL_FOUND)
INCLUDE_DIRECTORIES(${OPENCL_INCLUDE_DIR})
ENDIF(OpenCL_FOUND)
ENDIF(BITCOIN_ENABLE_OPENCL)
IF(BITCOIN_BUILD_GUI)
ADD_SUBDIRECTORY(cmake-bitcoin)
ENDIF(BITCOIN_BUILD_GUI)
IF(BITCOIN_BUILD_DAEMON)
ADD_SUBDIRECTORY(cmake-bitcoind)
ENDIF(BITCOIN_BUILD_DAEMON)
IF(BITCOIN_BUILD_REMOTE_MINER)
ADD_SUBDIRECTORY(cmake-bitcoinr)
ENDIF(BITCOIN_BUILD_REMOTE_MINER)
IF(BITCOIN_BUILD_RPC_MINER)
ADD_SUBDIRECTORY(cmake-rpcminer)
ENDIF(BITCOIN_BUILD_RPC_MINER)