forked from ethereum-mining/ethminer
-
Notifications
You must be signed in to change notification settings - Fork 14
/
CMakeLists.txt
143 lines (119 loc) · 4.29 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
cmake_minimum_required(VERSION 3.5)
include(cmake/cable/bootstrap.cmake)
include(CableBuildInfo)
include(CableBuildType)
include(CableToolchains)
include(HunterGate)
include(defaults/HunterCacheServers)
cable_configure_toolchain(DEFAULT cxx11)
set(HUNTER_CONFIGURATION_TYPES Release CACHE STRING "Build type of Hunter packages")
set(HUNTER_JOBS_NUMBER 6 CACHE STRING "Number of parallel builds used by Hunter")
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.23.214.tar.gz"
SHA1 "e14bc153a7f16d6a5eeec845fb0283c8fad8c358"
LOCAL
)
project(ethminer)
set(PROJECT_VERSION 0.19.0)
cable_set_build_type(DEFAULT Release CONFIGURATION_TYPES Release RelWithDebInfo)
option(ETHASHCL "Build with OpenCL mining" ON)
option(ETHASHCUDA "Build with CUDA mining" ON)
option(ETHASHCPU "Build with CPU mining (only for development)" OFF)
option(ETHDBUS "Build with D-Bus support" OFF)
option(APICORE "Build with API Server support" ON)
option(BINKERN "Install AMD binary kernels" ON)
option(DEVBUILD "Log developer metrics" OFF)
option(USE_SYS_OPENCL "Build with system OpenCL" OFF)
# propagates CMake configuration options to the compiler
function(configureProject)
if (ETHASHCL)
add_definitions(-DETH_ETHASHCL)
endif()
if (ETHASHCUDA)
add_definitions(-DETH_ETHASHCUDA)
endif()
if (ETHASHCPU)
add_definitions(-DETH_ETHASHCPU)
endif()
if (ETHDBUS)
add_definitions(-DETH_DBUS)
endif()
if (APICORE)
add_definitions(-DAPI_CORE)
endif()
if (BINKERN)
add_definitions(-DBIN_KERN)
endif()
if (DEVBUILD)
add_definitions(-DDEV_BUILD)
endif()
if (USE_SYS_OPENCL)
add_definitions(-DUSE_SYS_OPENCL)
endif()
endfunction()
# propagate custom OpenCL directories to sub-projects
if(OPENCL_INC_DIR AND OPENCL_LIB_DIR)
set_directory_properties(PROPERTIES OPENCL_INC_DIR=${OPENCL_INC_DIR} OPENCL_LIB_DIR=${OPENCL_LIB_DIR})
include_directories(${OPENCL_INC_DIR})
link_directories(${OPENCL_LIB_DIR})
endif()
hunter_add_package(Boost COMPONENTS system filesystem thread)
find_package(Boost CONFIG REQUIRED COMPONENTS system filesystem thread)
hunter_add_package(jsoncpp)
find_package(jsoncpp CONFIG REQUIRED)
hunter_add_package(ethash)
find_package(ethash CONFIG REQUIRED)
configureProject()
if(APPLE)
set(USE_SYS_OPENCL ON)
endif()
message("")
message("----------------------------------------------------------------------------")
message("-- Project: ${PROJECT_NAME}")
message("-- CMake ${CMAKE_VERSION}")
message("-- Build ${CMAKE_BUILD_TYPE} / ${CMAKE_SYSTEM_NAME}")
message("----------------------------------------------------------------------------")
message("-- ETHASHCL Build OpenCL components ${ETHASHCL}")
message("-- ETHASHCUDA Build CUDA components ${ETHASHCUDA}")
message("-- ETHASHCPU Build CPU components (only for development) ${ETHASHCPU}")
message("-- ETHDBUS Build D-Bus components ${ETHDBUS}")
message("-- APICORE Build API Server components ${APICORE}")
message("-- BINKERN Install AMD binary kernels ${BINKERN}")
message("-- DEVBUILD Build with dev logging ${DEVBUILD}")
message("-- USE_SYS_OPENCL Build with system OpenCL ${USE_SYS_OPENCL}")
message("----------------------------------------------------------------------------")
message("")
include(EthCompilerSettings)
if(UNIX AND NOT APPLE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++")
endif()
cable_add_buildinfo_library(PROJECT_NAME ${PROJECT_NAME})
add_subdirectory(libdevcore)
add_subdirectory(libethcore)
add_subdirectory(libhwmon)
add_subdirectory(libpoolprotocols)
if (ETHASHCL)
add_subdirectory(libethash-cl)
if (BINKERN)
add_subdirectory(libethash-cl/kernels)
endif()
endif ()
if (ETHASHCUDA)
add_subdirectory(libethash-cuda)
endif ()
if (ETHASHCPU)
add_subdirectory(libethash-cpu)
endif ()
if (APICORE)
add_subdirectory(libapicore)
endif()
add_subdirectory(ethminer)
if(WIN32)
set(CPACK_GENERATOR ZIP)
else()
set(CPACK_GENERATOR TGZ)
endif()
set(CPACK_PACKAGE_FILE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_CHECKSUM SHA256)
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY FALSE)
include(CPack)