11CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
22
3+ macro (auto_detect_lib LIBNAME)
4+ if (NOT DEFINED ${${LIBNAME} _FOUND})
5+ if ( PKG_CONFIG_FOUND )
6+ string (TOLOWER ${LIBNAME} PKGCONFIGNAME)
7+ pkg_check_modules(${LIBNAME} ${PKGCONFIGNAME} ${ARGN} )
8+ if (${${LIBNAME} _FOUND})
9+ MESSAGE (STATUS "LIB ${LIBNAME} found and include is in ${${LIBNAME} _INCLUDE_DIRS}" )
10+ endif ()
11+ else (PKG_CONFIG_FOUND)
12+ #MESSAGE("Fallback to non-pkg-config")
13+ FIND_PACKAGE (${LIBNAME} ${ARGN} )
14+ endif (PKG_CONFIG_FOUND)
15+ else ()
16+ MESSAGE (STATUS "LIB was already known ${LIBNAME} becasue of ${${LIBNAME} _FOUND}" )
17+ endif ()
18+ endmacro ()
19+
320PROJECT (libfreenect2)
421SET (CMAKE_BUILD_TYPE RelWithDebInfo)
522
@@ -27,7 +44,6 @@ LIST(APPEND CMAKE_MODULE_PATH ${MY_DIR}/cmake_modules)
2744
2845# setup threading
2946INCLUDE (SetupLibfreenect2Threading)
30- INCLUDE_DIRECTORIES (${LIBFREENECT2_THREADING_INCLUDE_DIR} )
3147
3248INCLUDE (GenerateResources)
3349
@@ -37,30 +53,24 @@ SET(EXECUTABLE_OUTPUT_PATH ${MY_DIR}/bin)
3753#set the default path for built libraries to the "lib" directory
3854SET (LIBRARY_OUTPUT_PATH ${MY_DIR} /lib)
3955
40- FIND_PACKAGE (OpenCL)
41-
4256# 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/" )
57+ find_package (PkgConfig) # try find PKGConfig as it will be used if found
58+ auto_detect_lib(LibUSB REQUIRED)
59+ auto_detect_lib(OpenCV REQUIRED)
60+ FIND_PACKAGE (TurboJPEG REQUIRED) #does not provide a package-config file
61+
62+ #hack for buggy libusb pkgconfig file
63+ if (NOT LibUSB_INCLUDE_DIR)
64+ find_path (LibUSB_INCLUDE_DIR
65+ NAMES libusb.h
66+ PATHS /usr/include /libusb-1.0
67+ )
68+ endif ()
5169
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)
70+ # Add includes
71+ INCLUDE_DIRECTORIES ("${MY_DIR} /include" ${LIBFREENECT2_THREADING_INCLUDE_DIR} ${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${TurboJPEG_INCLUDE_DIR} )
6272
63- if (APPLE )
73+ if (APPLE AND NOT ${TurboJPEG_FOUND} )
6474 # libjpeg-turbo
6575 INCLUDE_DIRECTORIES ("${MY_DIR} /../../depends/libjpeg_turbo/include/" )
6676 LINK_DIRECTORIES ("${MY_DIR} /../../depends/libjpeg_turbo/lib/" )
@@ -115,9 +125,10 @@ SET(SOURCES
115125)
116126
117127SET (LIBRARIES
118- usb-1.0
119128 ${OpenCV_LIBS}
120- turbojpeg
129+ ${OpenCV_LIBRARIES}
130+ ${LibUSB_LIBRARIES}
131+ ${TurboJPEG_LIBRARY}
121132 ${LIBFREENECT2_THREADING_LIBRARIES}
122133)
123134
@@ -129,17 +140,40 @@ SET(RESOURCES
129140
130141
131142IF (ENABLE_OPENGL)
143+ auto_detect_lib(GLFW3)
144+
145+ #Assuming local build witout global deps, ugly to to this automatic but to keep backward compatibiliy
146+ if (${GLFW3_FOUND} STREQUAL "FALSE" )
147+
148+ MESSAGE (STATUS "Building local GLFW" )
149+ # GLFW
150+ SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" )
151+ SET (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs" )
152+ SET (GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs" )
153+ SET (GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation" )
154+
155+ ADD_SUBDIRECTORY (${MY_DIR} /../../depends /glfw_src/ ${MY_DIR} /../../depends /glfw)
156+ INCLUDE_DIRECTORIES (${MY_DIR} /../../depends /glfw_src/include /)
157+
158+ LIST (APPEND LIBRARIES
159+ glfw
160+ )
161+
162+ else ()
163+ INCLUDE_DIRECTORIES (${GLFW3_INCLUDE_DIRS} )
164+
165+ LINK_DIRECTORIES (${GLFW3_LIBRARY_DIRS} )
166+ LIST (APPEND LIBRARIES
167+ ${GLFW3_LIBRARIES}
168+ )
169+ endif ()
170+
132171 SET (LIBFREENECT2_WITH_OPENGL_SUPPORT 1)
133172 LIST (APPEND SOURCES
134173 src/flextGL.c
135174 src/opengl_depth_packet_processor.cpp
136175 )
137-
138- LIST (APPEND LIBRARIES
139- glfw
140- ${GLFW_LIBRARIES}
141- )
142-
176+
143177 LIST (APPEND RESOURCES
144178 src/shader/debug.fs
145179 src/shader/default.vs
@@ -150,31 +184,33 @@ IF(ENABLE_OPENGL)
150184 )
151185ENDIF (ENABLE_OPENGL)
152186
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)
187+ IF (ENABLE_OPENCL)
188+ FIND_PACKAGE (OpenCL)
189+
190+ IF (OPENCL_FOUND)
191+ SET (LIBFREENECT2_WITH_OPENCL_SUPPORT 1)
192+ INCLUDE_DIRECTORIES (${OPENCL_INCLUDE_DIRS} )
193+
194+ LIST (APPEND SOURCES
195+ src/opencl_depth_packet_processor.cpp
196+ )
197+
198+ LIST (APPEND LIBRARIES
199+ ${OPENCL_LIBRARIES}
200+ )
201+
202+ LIST (APPEND RESOURCES
203+ src/opencl_depth_packet_processor.cl
204+ )
205+ ENDIF (OPENCL_FOUND)
206+ ENDIF (ENABLE_OPENCL)
169207
170208CONFIGURE_FILE ("${MY_DIR} /include/libfreenect2/config.h.in" "${MY_DIR} /include/libfreenect2/config.h" @ONLY)
171-
172209GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES} )
173210
174- INCLUDE_DIRECTORIES ("${MY_DIR} /include" )
175-
176211ADD_DEFINITIONS (-DRESOURCES_INC)
177212ADD_LIBRARY (freenect2 SHARED ${SOURCES} )
213+ MESSAGE ("Linking with these libraries: ${LIBRARIES} " )
178214TARGET_LINK_LIBRARIES (freenect2 ${LIBRARIES} )
179215
180216ADD_EXECUTABLE (Protonect
0 commit comments