-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathCMakeLists.txt
131 lines (107 loc) · 4.51 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
cmake_minimum_required(VERSION 3.5.1)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
project(amunmt C CXX)
set(CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(CMAKE_CXX_FLAGS_RELEASE "-std=c++14 -fPIC -O3 -Ofast -m64 -march=native -funroll-loops -ffinite-math-only -Wno-unused-result -Wno-deprecated -pthread -DNDEBUG") #
set(CMAKE_CXX_FLAGS_DEBUG "-std=c++14 -fPIC -g -O0 -m64 -march=native -funroll-loops -ffinite-math-only -Wno-unused-result -Wno-deprecated -pthread")
set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE} -g -pg")
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS_RELEASE})
if(BUILD_STATIC)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
set(CMAKE_EXE_LINKER_FLAGS "-static")
set(Boost_USE_STATIC_LIBS "TRUE")
endif(BUILD_STATIC)
include_directories(${amunmt_SOURCE_DIR})
option(CPU "Select to compile with CPU support" ON)
option(CUDA "Select to compile CUDA support by default if available" ON)
option(FPGA "Select to compile with FPGA support" OFF)
if(CPU)
add_definitions(-DHAS_CPU)
endif(CPU)
if(FPGA)
add_definitions(-DHAS_FPGA)
endif(FPGA)
if(CUDA)
find_package(CUDA)
if(CUDA_FOUND)
LIST(APPEND CUDA_NVCC_FLAGS --default-stream per-thread; -std=c++14; -O3; -gencode=arch=compute_52,code=sm_52; -gencode=arch=compute_60,code=sm_60; -gencode=arch=compute_61,code=sm_61; -gencode=arch=compute_61,code=compute_61 ; -lineinfo; --use_fast_math; -DNDEBUG; ) #
# add_definitions(-DCUDA_API_PER_THREAD_DEFAULT_STREAM)
add_definitions(-DCUDA)
SET(CUDA_PROPAGATE_HOST_FLAGS OFF)
message("-- Compiling with CUDA support")
else(CUDA_FOUND)
add_definitions(-DNO_CUDA)
message("-- Cannot find CUDA libraries. Compiling without them." )
endif(CUDA_FOUND)
else(CUDA)
message("-- Forcing compilation without CUDA.")
add_definitions(-DNO_CUDA)
endif(CUDA)
if(PYTHON_VERSION)
STRING(REPLACE "." "" PYTHON_VERSION_NORMALIZED ${PYTHON_VERSION})
else(PYTHON_VERSION)
set(PYTHON_VERSION "2.7")
endif(PYTHON_VERSION)
if (UNIX AND NOT APPLE)
if(PYTHON_VERSION_NORMALIZED)
set(BOOST_PYTHON_VERSION_NAME "python-py${PYTHON_VERSION_NORMALIZED}")
else(PYTHON_VERSION_NORMALIZED)
set(BOOST_PYTHON_VERSION_NAME "python")
endif(PYTHON_VERSION_NORMALIZED)
find_package(Boost COMPONENTS system filesystem program_options timer iostreams ${BOOST_PYTHON_VERSION_NAME} thread chrono)
elseif (APPLE)
# On macOS, boost-python component is named python if compiled against python2.7 or
# python3 if compiled against python3.x
if(NOT PYTHON_VERSION_NORMALIZED EQUAL 27)
set(BOOST_PYTHON_VERSION_NAME "python${PYTHON_VERSION_NORMALIZED}")
else(NOT PYTHON_VERSION_NORMALIZED EQUAL 27)
set(BOOST_PYTHON_VERSION_NAME "python")
endif(NOT PYTHON_VERSION_NORMALIZED EQUAL 27)
# On macOS, python isn't able to load dylib libraries. Renaming them to .so solves this problem
set(CMAKE_SHARED_LIBRARY_SUFFIX ".so")
find_package(Boost COMPONENTS system filesystem program_options timer iostreams ${BOOST_PYTHON_VERSION_NAME} thread chrono)
endif (UNIX AND NOT APPLE)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
set(EXT_LIBS ${EXT_LIBS} ${Boost_LIBRARIES})
else(Boost_FOUND)
message(SEND_ERROR "Cannot find Boost libraries. Terminating." )
endif(Boost_FOUND)
if (FPGA)
find_package( OpenCL REQUIRED )
if(OpenCL_FOUND)
set(EXT_LIBS ${EXT_LIBS} ${OpenCL_LIBRARIES})
endif(OpenCL_FOUND)
endif(FPGA)
find_package(PythonLibs ${PYTHON_VERSION} REQUIRED)
if(PYTHONLIBS_FOUND)
message("-- Found Python" )
include_directories(${PYTHON_INCLUDE_DIRS})
set(EXT_LIBS ${EXT_LIBS} ${PYTHON_LIBRARIES})
else(PYTHONLIBS_FOUND)
message("-- Cannot find python libraries. Building without bindings." )
endif(PYTHONLIBS_FOUND)
find_package (ZLIB)
if (ZLIB_FOUND)
include_directories(${ZLIB_INCLUDE_DIRS})
set(EXT_LIBS ${EXT_LIBS} ${ZLIB_LIBRARIES})
endif (ZLIB_FOUND)
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
FIND_PACKAGE(Git)
IF(GIT_FOUND)
EXECUTE_PROCESS(
COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
OUTPUT_VARIABLE "AMUNMT_BUILD_VERSION"
ERROR_QUIET
OUTPUT_STRIP_TRAILING_WHITESPACE)
MESSAGE( STATUS "Git version: ${AMUNMT_BUILD_VERSION}" )
ELSE(GIT_FOUND)
SET(AMUNMT_BUILD_VERSION 0)
ENDIF(GIT_FOUND)
ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
SET(GIT_SHA1 ${AMUNMT_BUILD_VERSION})
include_directories(${amunmt_SOURCE_DIR}/src)
add_subdirectory(src)