forked from nmslib/hnswlib
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
132 lines (98 loc) · 5.12 KB
/
CMakeLists.txt
File metadata and controls
132 lines (98 loc) · 5.12 KB
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
cmake_minimum_required(VERSION 3.0...3.26)
project(hnswlib
LANGUAGES CXX)
include(GNUInstallDirs)
include(CheckCXXCompilerFlag)
add_library(hnswlib INTERFACE)
add_library(hnswlib::hnswlib ALIAS hnswlib)
target_include_directories(hnswlib INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>)
# Install
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/hnswlib
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
install(TARGETS hnswlib
EXPORT hnswlibTargets)
install(EXPORT hnswlibTargets
FILE hnswlibConfig.cmake
NAMESPACE hnswlib::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hnswlib)
# Examples and tests
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
option(HNSWLIB_EXAMPLES "Build examples and tests." ON)
else()
option(HNSWLIB_EXAMPLES "Build examples and tests." OFF)
endif()
if(HNSWLIB_EXAMPLES)
set(CMAKE_CXX_STANDARD 11)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
SET( CMAKE_CXX_FLAGS "-Ofast -std=c++11 -DHAVE_CXX0X -openmp -fpic -ftree-vectorize" )
check_cxx_compiler_flag("-march=native" COMPILER_SUPPORT_NATIVE_FLAG)
if(COMPILER_SUPPORT_NATIVE_FLAG)
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native" )
message("set -march=native flag")
else()
check_cxx_compiler_flag("-mcpu=apple-m1" COMPILER_SUPPORT_M1_FLAG)
if(COMPILER_SUPPORT_M1_FLAG)
SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcpu=apple-m1" )
message("set -mcpu=apple-m1 flag")
endif()
endif()
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
SET( CMAKE_CXX_FLAGS "-Ofast -lrt -std=c++11 -DHAVE_CXX0X -march=native -fpic -w -fopenmp -ftree-vectorize -ftree-vectorizer-verbose=0" )
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
SET( CMAKE_CXX_FLAGS "/O2 -DHAVE_CXX0X /W1 /openmp /EHsc" )
endif()
# examples
# add_executable(example_search examples/cpp/example_search.cpp)
# target_link_libraries(example_search hnswlib)
# add_executable(example_epsilon_search examples/cpp/example_epsilon_search.cpp)
# target_link_libraries(example_epsilon_search hnswlib)
# add_executable(example_multivector_search examples/cpp/example_multivector_search.cpp)
# target_link_libraries(example_multivector_search hnswlib)
# add_executable(example_filter examples/cpp/example_filter.cpp)
# target_link_libraries(example_filter hnswlib)
# add_executable(example_replace_deleted examples/cpp/example_replace_deleted.cpp)
# target_link_libraries(example_replace_deleted hnswlib)
# add_executable(example_mt_search examples/cpp/example_mt_search.cpp)
# target_link_libraries(example_mt_search hnswlib)
# add_executable(example_mt_filter examples/cpp/example_mt_filter.cpp)
# target_link_libraries(example_mt_filter hnswlib)
# add_executable(example_mt_replace_deleted examples/cpp/example_mt_replace_deleted.cpp)
# target_link_libraries(example_mt_replace_deleted hnswlib)
# add_executable(example_henn examples/cpp/example_henn.cpp)
# target_link_libraries(example_henn hnswlib)
# add_executable(hnsw_hardness examples/cpp/hnsw_hardness.cpp)
# target_link_libraries(hnsw_hardness hnswlib)
# add_executable(henn_hardness examples/cpp/henn_hardness.cpp)
# target_link_libraries(henn_hardness hnswlib)
# add_executable(henn_compare_time examples/cpp/henn_compare_time.cpp)
# target_link_libraries(henn_compare_time hnswlib)
# add_executable(henn_avg_time examples/cpp/henn/henn_avg_time.cpp)
# target_link_libraries(henn_avg_time hnswlib)
add_executable(worst_time_compare examples/cpp/henn/worst_time_compare.cpp)
target_link_libraries(worst_time_compare hnswlib)
add_executable(henn_time_recall examples/cpp/henn/henn_time_recall.cpp)
target_link_libraries(henn_time_recall hnswlib)
add_executable(hnsw_time_recall examples/cpp/henn/hnsw_time_recall.cpp)
target_link_libraries(hnsw_time_recall hnswlib)
add_executable(hops_compare examples/cpp/henn/hops_compare.cpp)
target_link_libraries(hops_compare hnswlib)
# # tests
# add_executable(multivector_search_test tests/cpp/multivector_search_test.cpp)
# target_link_libraries(multivector_search_test hnswlib)
# add_executable(epsilon_search_test tests/cpp/epsilon_search_test.cpp)
# target_link_libraries(epsilon_search_test hnswlib)
# add_executable(test_updates tests/cpp/updates_test.cpp)
# target_link_libraries(test_updates hnswlib)
# add_executable(searchKnnCloserFirst_test tests/cpp/searchKnnCloserFirst_test.cpp)
# target_link_libraries(searchKnnCloserFirst_test hnswlib)
# add_executable(searchKnnWithFilter_test tests/cpp/searchKnnWithFilter_test.cpp)
# target_link_libraries(searchKnnWithFilter_test hnswlib)
# add_executable(multiThreadLoad_test tests/cpp/multiThreadLoad_test.cpp)
# target_link_libraries(multiThreadLoad_test hnswlib)
# add_executable(multiThread_replace_test tests/cpp/multiThread_replace_test.cpp)
# target_link_libraries(multiThread_replace_test hnswlib)
# add_executable(main tests/cpp/main.cpp tests/cpp/sift_1b.cpp)
# target_link_libraries(main hnswlib)
endif()