forked from OpenANN/OpenANN
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
117 lines (104 loc) · 3.78 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
cmake_minimum_required(VERSION 2.8)
project(OpenANN)
find_package(Doxygen)
find_package(OpenMP)
find_package(CUDA)
include(CheckIncludeFiles)
include(cmake/UseDoxygen.cmake)
include(cmake/Utilities.cmake)
include(cmake/FindEigen3.cmake)
if(NOT EIGEN3_FOUND)
message(FATAL_ERROR "Could not find Eigen 3 library. You can either "
"install it with your package management system or "
"download it from http://eigen.tuxfamily.org/ and "
"install it with CMake.")
endif()
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
message(FATAL_ERROR "Usage: mkdir build; cmake ..")
endif()
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
message(STATUS "Default build type.")
endif()
if(NOT PARALLEL_CORES)
set(PARALLEL_CORES 4)
endif()
set(OPENANN_VERSION_NUMBER "1.0.0")
set(OPENANN_URL "https://github.com/OpenANN/OpenANN")
set(OPENANN_BRIEF_DESCRIPTION "An open source library for artificial neural networks.")
current_time(OPENANN_TIME)
if(CUDA_FOUND)
set(OPENANN_CUDA_FLAGS "-DCUDA_AVAILABLE")
endif()
set(OPENANN_CUDA_FLAGS "${OPENANN_CUDA_FLAGS}")
set(OPENANN_OPTIMIZATION_FLAGS)
set(OPENANN_PYTHON_COMPILE_ARGS)
if(${CMAKE_BUILD_TYPE} STREQUAL Debug)
message(STATUS "Debug configuration")
if(CMAKE_COMPILER_IS_GNUCXX)
compiler_check_add_flag("-ggdb")
compiler_check_add_flag("-fno-default-inline")
if(OPENMP_FOUND)
compiler_add_flag("-fopenmp")
compiler_add_flag("-DPARALLEL_CORES=1")
endif()
endif()
elseif(${CMAKE_BUILD_TYPE} STREQUAL Release)
message(STATUS "Release configuration")
if(CMAKE_COMPILER_IS_GNUCXX)
compiler_check_add_flag("-g0")
compiler_check_add_flag("-s")
compiler_check_add_flag("-O3")
compiler_check_add_flag("-msse")
compiler_check_add_flag("-msse2")
compiler_check_add_flag("-msse3")
compiler_check_add_flag("-mssse3")
compiler_check_add_flag("-msse4.1")
compiler_check_add_flag("-msse4.2")
if(OPENMP_FOUND)
compiler_add_flag("-fopenmp")
compiler_add_flag("-DPARALLEL_CORES=${PARALLEL_CORES}")
endif()
endif()
else()
message(FATAL_ERROR "Unknown configuration, set CMAKE_BUILD_TYPE to Debug or Release")
endif()
set(OPENANN_COMPILER_FLAGS)
if(CMAKE_COMPILER_IS_GNUCXX)
set(COMPILER_WARNING_FLAGS "-Wall -Wextra -pedantic -Wno-long-long")
endif()
set(OPENANN_LINK_LIBS "-lopenann") # libraries to link for external executables
if(OPENMP_FOUND AND CMAKE_COMPILER_IS_GNUCXX)
set(OPENANN_LINK_LIBS "${OPENANN_LINK_LIBS} -lgomp")
endif()
set(OPENANN_COMPILER_FLAGS "${OPENANN_COMPILER_FLAGS} ${OPENANN_OPTIMIZATION_FLAGS}")
set(OPENANN_COMPILER_FLAGS "${OPENANN_COMPILER_FLAGS} ${OPENANN_CUDA_FLAGS}")
add_subdirectory(lib)
include_directories(. ${EIGEN3_INCLUDE_DIRS} lib/CMA-ESpp lib/ALGLIB test/lib/CPP-Test)
add_subdirectory(src)
add_subdirectory(examples)
add_subdirectory(benchmarks)
add_subdirectory(test)
option(BUILD_PYTHON "Build python extensions for OpenANN" ON)
if(BUILD_PYTHON)
add_subdirectory(python)
endif()
install(DIRECTORY OpenANN DESTINATION include)
option(BUILD_DOCUMENTATION "Build OpenANN documentation using doxygen" ON)
if(DOXYGEN_FOUND AND BUILD_DOCUMENTATION)
if(DOXYGEN_DOT_FOUND)
set(OPENANN_USE_DOT "YES")
else()
set(OPENANN_USE_DOT "NO")
endif()
configure_file(doxygen.cfg.in ${PROJECT_SOURCE_DIR}/doxygen.cfg)
add_documentation(openann_doc doxygen.cfg)
install_documentation(${PROJECT_BINARY_DIR}/html openann)
endif()
configure_file(openann.pc.in openann.pc @ONLY)
string(REPLACE ":" ";" pkg_target_search "$ENV{PKG_CONFIG_LIBDIR}")
find_path(pkg_target_dir "pkgconfig" ${pkg_target_search} "${CMAKE_INSTALL_PREFIX}/share" ${pkg_target_search})
if(NOT pkg_target_dir)
set(pkg_target_dir "lib")
endif()
install(FILES "${PROJECT_BINARY_DIR}/openann.pc" DESTINATION "${pkg_target_dir}/pkgconfig")