]>
Commit | Line | Data |
---|---|---|
1e59de90 TL |
1 | cmake_minimum_required (VERSION 3.10) |
2 | project (vlfeat) | |
3 | ||
4 | set(INSTALL_BIN_DIR "bin" CACHE PATH "Path where exe and dll will be installed") | |
5 | set(INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed") | |
6 | set(INSTALL_INCLUDE_DIR "include/vlfeat" CACHE PATH "Path where headers will be installed") | |
7 | set(INSTALL_CMAKE_DIR "share/vlfeat" CACHE PATH "Path where cmake configs will be installed") | |
8 | ||
9 | # Make relative paths absolute (needed later on) | |
10 | set(RELATIVE_INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR}) | |
11 | foreach(p LIB BIN INCLUDE CMAKE) | |
12 | set(var INSTALL_${p}_DIR) | |
13 | if(NOT IS_ABSOLUTE "${${var}}") | |
14 | set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}") | |
15 | endif() | |
16 | endforeach() | |
17 | ||
18 | # make sure that the default is a RELEASE | |
19 | set(default_build_type "Release") | |
20 | if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) | |
21 | message(STATUS "Setting build type to '${default_build_type}' as none was specified.") | |
22 | set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE | |
23 | STRING "Choose the type of build." FORCE) | |
24 | set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS | |
25 | "Debug" "Release" "MinSizeRel" "RelWithDebInfo") | |
26 | endif() | |
27 | ||
28 | if(ENABLE_OPENMP) | |
29 | find_package(OpenMP REQUIRED) | |
30 | set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") | |
31 | endif() | |
32 | ||
33 | if(MSVC) | |
34 | add_definitions(-D_CRT_SECURE_NO_DEPRECATE) | |
35 | add_definitions(-D__LITTLE_ENDIAN__) | |
36 | add_definitions(/Zp8) | |
37 | add_definitions(/wd4146) | |
38 | if(CMAKE_C_FLAGS MATCHES "/W[0-4]") | |
39 | string(REGEX REPLACE "/W[0-4]" "/W1" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") | |
40 | endif() | |
41 | endif() | |
42 | ||
43 | if(CMAKE_COMPILER_IS_GNUCC) | |
44 | add_definitions(-std=c99) | |
45 | add_definitions(-Wno-unused-function) | |
46 | add_definitions(-Wno-long-long) | |
47 | add_definitions(-Wno-variadic-macros) | |
48 | endif() | |
49 | ||
50 | if(USE_SSE) | |
51 | add_definitions(-D__SSE2__) | |
52 | set(SSE2_VL_C_FILES "vl/mathop_sse2.c" "vl/imopv_sse2.c") | |
53 | set(SSE2_VL_H_FILES "vl/mathop_sse2.h" "vl/imopv_sse2.h") | |
54 | else() | |
55 | add_definitions(-DVL_DISABLE_SSE2) | |
56 | endif() | |
57 | ||
58 | if(USE_AVX) | |
59 | set(AVX_VL_C_FILES "vl/mathop_avx.c") | |
60 | set(AVX_VL_H_FILES "vl/mathop_avx.h") | |
61 | else() | |
62 | add_definitions(-DVL_DISABLE_AVX) | |
63 | endif() | |
64 | ||
65 | ||
66 | set (C_SOURCES | |
67 | vl/aib.c | |
68 | vl/array.c | |
69 | vl/covdet.c | |
70 | vl/dsift.c | |
71 | vl/fisher.c | |
72 | vl/generic.c | |
73 | vl/getopt_long.c | |
74 | vl/gmm.c | |
75 | vl/hikmeans.c | |
76 | vl/hog.c | |
77 | vl/homkermap.c | |
78 | vl/host.c | |
79 | vl/ikmeans.c | |
80 | vl/imopv.c | |
81 | vl/kdtree.c | |
82 | vl/kmeans.c | |
83 | vl/lbp.c | |
84 | vl/liop.c | |
85 | vl/mathop.c | |
86 | ${AVX_VL_C_FILES} | |
87 | ${SSE2_VL_C_FILES} | |
88 | vl/mser.c | |
89 | vl/pgm.c | |
90 | vl/quickshift.c | |
91 | vl/random.c | |
92 | vl/rodrigues.c | |
93 | vl/scalespace.c | |
94 | vl/sift.c | |
95 | vl/slic.c | |
96 | vl/stringop.c | |
97 | vl/svm.c | |
98 | vl/svmdataset.c | |
99 | vl/vlad.c | |
100 | ) | |
101 | ||
102 | set (H_SOURCES | |
103 | vl/aib.h | |
104 | vl/array.h | |
105 | vl/covdet.h | |
106 | vl/dsift.h | |
107 | vl/fisher.h | |
108 | vl/generic.h | |
109 | vl/getopt_long.h | |
110 | vl/gmm.h | |
111 | vl/heap-def.h | |
112 | vl/hikmeans.h | |
113 | vl/hog.h | |
114 | vl/homkermap.h | |
115 | vl/host.h | |
116 | vl/ikmeans.h | |
117 | vl/imopv.h | |
118 | vl/kdtree.h | |
119 | vl/kmeans.h | |
120 | vl/lbp.h | |
121 | vl/liop.h | |
122 | vl/mathop.h | |
123 | ${AVX_VL_H_FILES} | |
124 | ${SSE2_VL_H_FILES} | |
125 | vl/mser.h | |
126 | vl/pgm.h | |
127 | vl/qsort-def.h | |
128 | vl/quickshift.h | |
129 | vl/random.h | |
130 | vl/rodrigues.h | |
131 | vl/scalespace.h | |
132 | vl/shuffle-def.h | |
133 | vl/sift.h | |
134 | vl/slic.h | |
135 | vl/stringop.h | |
136 | vl/svm.h | |
137 | vl/svmdataset.h | |
138 | vl/vlad.h | |
139 | ) | |
140 | ||
141 | add_library(vl ${C_SOURCES} ${H_SOURCES}) | |
142 | set_property(TARGET vl PROPERTY POSITION_INDEPENDENT_CODE ON) | |
143 | target_compile_definitions(vl PRIVATE -DVL_BUILD_DLL) | |
144 | target_include_directories(vl PUBLIC $<INSTALL_INTERFACE:${RELATIVE_INSTALL_INCLUDE_DIR}> $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/vl>) | |
145 | set_target_properties(vl PROPERTIES PUBLIC_HEADER "${H_SOURCES}") | |
146 | ||
147 | install(TARGETS vl EXPORT vlfeatTargets | |
148 | RUNTIME DESTINATION "${INSTALL_BIN_DIR}" | |
149 | LIBRARY DESTINATION "${INSTALL_LIB_DIR}" | |
150 | ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" | |
151 | PUBLIC_HEADER DESTINATION "${INSTALL_INCLUDE_DIR}" | |
152 | COMPONENT dev | |
153 | ) | |
154 | ||
155 | install(EXPORT vlfeatTargets | |
156 | FILE vlfeatConfig.cmake | |
157 | NAMESPACE unofficial::vlfeat:: | |
158 | DESTINATION "${INSTALL_CMAKE_DIR}" | |
159 | ) |