-
Notifications
You must be signed in to change notification settings - Fork 229
/
CMakeLists.txt
89 lines (72 loc) · 2.22 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
PROJECT(tsne_multicore CXX)
CMAKE_MINIMUM_REQUIRED(VERSION 3.9 FATAL_ERROR)
CMAKE_POLICY(VERSION 3.9)
SET(TSNE_MULTICORE_HEADER_FILES
splittree.h
tsne.h
vptree.h
)
ADD_LIBRARY(tsne_multicore
SHARED
tsne.cpp
splittree.cpp
${TSNE_MULTICORE_HEADER_FILES}
${TSNE_MULTICORE_HEADER_FILES_PRIVATE}
)
ADD_LIBRARY(tsne_multicore::tsne_multicore ALIAS tsne_multicore)
TARGET_LINK_LIBRARIES(tsne_multicore PRIVATE m)
# enable -fPIC
SET_TARGET_PROPERTIES(tsne_multicore PROPERTIES POSITION_INDEPENDENT_CODE True)
TARGET_COMPILE_OPTIONS(tsne_multicore PRIVATE -Wall)
IF(MSVC)
TARGET_COMPILE_OPTIONS(tsne_multicore
PRIVATE
$<$<CONFIG:Release>:/fp:fast>
$<$<CONFIG:RelWithDebInfo>:/fp:fast>
)
ELSE()
TARGET_COMPILE_OPTIONS(tsne_multicore
PRIVATE
$<$<CONFIG:Release>:-ffast-math -funroll-loops>
$<$<CONFIG:RelWithDebInfo>:-ffast-math -funroll-loops>
)
ENDIF()
FIND_PACKAGE(OpenMP 2)
IF(OPENMP_FOUND)
TARGET_LINK_LIBRARIES(tsne_multicore PRIVATE OpenMP::OpenMP_CXX)
ELSE()
MESSAGE(WARNING "Not using OpenMP. Performance will suffer.")
ENDIF()
include(GNUInstallDirs)
set(TSNE_MULTICORE_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}/tsne_multicore)
set(TSNE_MULTICORE_CONFIGDIR ${CMAKE_INSTALL_LIBDIR}/cmake/tsne_multicore)
set(TSNE_MULTICORE_LIBDIR ${CMAKE_INSTALL_LIBDIR})
TARGET_INCLUDE_DIRECTORIES(tsne_multicore
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${TSNE_MULTICORE_INCLUDEDIR}>
)
install(TARGETS tsne_multicore
EXPORT
tsne_multicore_targets
LIBRARY DESTINATION ${TSNE_MULTICORE_LIBDIR}
ARCHIVE DESTINATION ${TSNE_MULTICORE_LIBDIR}
)
install(FILES ${TSNE_MULTICORE_HEADER_FILES}
DESTINATION ${TSNE_MULTICORE_INCLUDEDIR}
COMPONENT Devel
)
install(EXPORT tsne_multicore_targets
FILE tsne_multicore_targets.cmake
NAMESPACE tsne_multicore::
DESTINATION ${TSNE_MULTICORE_CONFIGDIR}
)
include(CMakePackageConfigHelpers)
configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/tsne_multicoreConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/tsne_multicoreConfig.cmake
INSTALL_DESTINATION ${TSNE_MULTICORE_CONFIGDIR}
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/tsne_multicoreConfig.cmake
DESTINATION ${TSNE_MULTICORE_CONFIGDIR}
)