1
1
CMAKE_MINIMUM_REQUIRED (VERSION 2.6 )
2
2
3
+ macro (auto_detect_lib LIBNAME )
4
+ if ( PKG_CONFIG_FOUND )
5
+ string (TOLOWER ${LIBNAME} PKGCONFIGNAME )
6
+ pkg_check_modules (${LIBNAME} ${PKGCONFIGNAME} ${ARGN} )
7
+ else (PKG_CONFIG_FOUND )
8
+ #MESSAGE("Fallback to non-pkg-config")
9
+ FIND_PACKAGE (${LIBNAME} ${ARGN} )
10
+ endif (PKG_CONFIG_FOUND )
11
+ endmacro ()
12
+
3
13
PROJECT (libfreenect2 )
4
14
SET (CMAKE_BUILD_TYPE RelWithDebInfo )
5
15
@@ -14,9 +24,9 @@ IF(ENABLE_CXX11)
14
24
CHECK_CXX_COMPILER_FLAG ("-std=c++11" COMPILER_SUPPORTS_CXX11 )
15
25
CHECK_CXX_COMPILER_FLAG ("-std=c++0x" COMPILER_SUPPORTS_CXX0X )
16
26
IF (COMPILER_SUPPORTS_CXX11 )
17
- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
27
+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
18
28
ELSEIF (COMPILER_SUPPORTS_CXX0X )
19
- SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x" )
29
+ SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x" )
20
30
ELSE ()
21
31
MESSAGE (STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler." )
22
32
ENDIF ()
@@ -27,7 +37,6 @@ LIST(APPEND CMAKE_MODULE_PATH ${MY_DIR}/cmake_modules)
27
37
28
38
# setup threading
29
39
INCLUDE (SetupLibfreenect2Threading )
30
- INCLUDE_DIRECTORIES (${LIBFREENECT2_THREADING_INCLUDE_DIR} )
31
40
32
41
INCLUDE (GenerateResources )
33
42
@@ -37,30 +46,21 @@ SET(EXECUTABLE_OUTPUT_PATH ${MY_DIR}/bin)
37
46
#set the default path for built libraries to the "lib" directory
38
47
SET (LIBRARY_OUTPUT_PATH ${MY_DIR} /lib )
39
48
40
- FIND_PACKAGE (OpenCL )
41
-
42
49
# dependencies
43
- FIND_PACKAGE (OpenCV REQUIRED )
44
-
45
- # OpenCV
46
- INCLUDE_DIRECTORIES (${OpenCV_INCLUDE_DIR} )
47
-
48
- # LibUSB
49
- INCLUDE_DIRECTORIES ("${MY_DIR} /../../depends/libusb/include/libusb-1.0/" )
50
- LINK_DIRECTORIES ("${MY_DIR} /../../depends/libusb/lib/" )
50
+ find_package (PkgConfig ) # try find PKGConfig as it will be used if found
51
+ auto_detect_lib (LibUSB REQUIRED )
52
+ auto_detect_lib (OpenCV REQUIRED )
53
+ FIND_PACKAGE (TurboJPEG REQUIRED ) #does not provide a package-config file
54
+
55
+ #hack for buggy libusb pkgconfig file
56
+ if (NOT LibUSB_INCLUDE_DIR )
57
+ find_path (LibUSB_INCLUDE_DIR NAMES libusb.h PATHS /usr/include/libusb-1.0 )
58
+ endif ()
51
59
52
- IF (ENABLE_OPENGL )
53
- # GLFW
54
- SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" )
55
- SET (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs" )
56
- SET (GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs" )
57
- SET (GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation" )
58
-
59
- ADD_SUBDIRECTORY (${MY_DIR} /../../depends/glfw_src/ ${MY_DIR} /../../depends/glfw )
60
- INCLUDE_DIRECTORIES (${MY_DIR} /../../depends/glfw_src/include/ )
61
- ENDIF (ENABLE_OPENGL )
60
+ # Add includes
61
+ INCLUDE_DIRECTORIES ("${MY_DIR} /include" ${LIBFREENECT2_THREADING_INCLUDE_DIR} ${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${TurboJPEG_INCLUDE_DIR} )
62
62
63
- if (APPLE )
63
+ if (APPLE AND NOT ${TurboJPEG_FOUND} )
64
64
# libjpeg-turbo
65
65
INCLUDE_DIRECTORIES ("${MY_DIR} /../../depends/libjpeg_turbo/include/" )
66
66
LINK_DIRECTORIES ("${MY_DIR} /../../depends/libjpeg_turbo/lib/" )
@@ -115,9 +115,10 @@ SET(SOURCES
115
115
)
116
116
117
117
SET (LIBRARIES
118
- usb-1.0
119
118
${OpenCV_LIBS}
120
- turbojpeg
119
+ ${OpenCV_LIBRARIES}
120
+ ${LibUSB_LIBRARIES}
121
+ ${TurboJPEG_LIBRARY}
121
122
${LIBFREENECT2_THREADING_LIBRARIES}
122
123
)
123
124
@@ -127,19 +128,41 @@ SET(RESOURCES
127
128
zTable.bin
128
129
)
129
130
130
-
131
131
IF (ENABLE_OPENGL )
132
+ auto_detect_lib (GLFW3 )
133
+
134
+ #Assuming local build witout global deps, ugly to to this automatic but to keep backward compatibiliy
135
+ if (${GLFW3_FOUND} STREQUAL "FALSE" )
136
+
137
+ MESSAGE (STATUS "Building local GLFW" )
138
+ # GLFW
139
+ SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" )
140
+ SET (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs" )
141
+ SET (GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs" )
142
+ SET (GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation" )
143
+
144
+ ADD_SUBDIRECTORY (${MY_DIR} /../../depends/glfw_src/ ${MY_DIR} /../../depends/glfw )
145
+ INCLUDE_DIRECTORIES (${MY_DIR} /../../depends/glfw_src/include/ )
146
+
147
+ LIST (APPEND LIBRARIES
148
+ glfw
149
+ )
150
+
151
+ else ()
152
+ INCLUDE_DIRECTORIES (${GLFW3_INCLUDE_DIRS} )
153
+
154
+ LINK_DIRECTORIES (${GLFW3_LIBRARY_DIRS} )
155
+ LIST (APPEND LIBRARIES
156
+ ${GLFW3_LIBRARIES}
157
+ )
158
+ endif ()
159
+
132
160
SET (LIBFREENECT2_WITH_OPENGL_SUPPORT 1 )
133
161
LIST (APPEND SOURCES
134
162
src/flextGL.c
135
163
src/opengl_depth_packet_processor.cpp
136
164
)
137
-
138
- LIST (APPEND LIBRARIES
139
- glfw
140
- ${GLFW_LIBRARIES}
141
- )
142
-
165
+
143
166
LIST (APPEND RESOURCES
144
167
src/shader/debug.fs
145
168
src/shader/default.vs
@@ -150,31 +173,33 @@ IF(ENABLE_OPENGL)
150
173
)
151
174
ENDIF (ENABLE_OPENGL )
152
175
153
- IF (ENABLE_OPENCL AND OPENCL_FOUND )
154
- SET (LIBFREENECT2_WITH_OPENCL_SUPPORT 1 )
155
- INCLUDE_DIRECTORIES (${OPENCL_INCLUDE_DIRS} )
156
-
157
- LIST (APPEND SOURCES
158
- src/opencl_depth_packet_processor.cpp
159
- )
160
-
161
- LIST (APPEND LIBRARIES
162
- ${OPENCL_LIBRARIES}
163
- )
164
-
165
- LIST (APPEND RESOURCES
166
- src/opencl_depth_packet_processor.cl
167
- )
168
- ENDIF (ENABLE_OPENCL AND OPENCL_FOUND )
176
+ IF (ENABLE_OPENCL )
177
+ FIND_PACKAGE (OpenCL )
178
+
179
+ IF (OPENCL_FOUND )
180
+ SET (LIBFREENECT2_WITH_OPENCL_SUPPORT 1 )
181
+ INCLUDE_DIRECTORIES (${OPENCL_INCLUDE_DIRS} )
182
+
183
+ LIST (APPEND SOURCES
184
+ src/opencl_depth_packet_processor.cpp
185
+ )
186
+
187
+ LIST (APPEND LIBRARIES
188
+ ${OPENCL_LIBRARIES}
189
+ )
190
+
191
+ LIST (APPEND RESOURCES
192
+ src/opencl_depth_packet_processor.cl
193
+ )
194
+ ENDIF (OPENCL_FOUND )
195
+ ENDIF (ENABLE_OPENCL )
169
196
170
197
CONFIGURE_FILE ("${MY_DIR} /include/libfreenect2/config.h.in" "${MY_DIR} /include/libfreenect2/config.h" @ONLY )
171
-
172
198
GENERATE_RESOURCES (${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES} )
173
199
174
- INCLUDE_DIRECTORIES ("${MY_DIR} /include" )
175
-
176
200
ADD_DEFINITIONS (-DRESOURCES_INC )
177
201
ADD_LIBRARY (freenect2 SHARED ${SOURCES} )
202
+ MESSAGE ("Linking with these libraries: ${LIBRARIES} " )
178
203
TARGET_LINK_LIBRARIES (freenect2 ${LIBRARIES} )
179
204
180
205
ADD_EXECUTABLE (Protonect
0 commit comments