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 (TJPEG 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} ${TJPEG_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/" )
@@ -69,6 +79,7 @@ endif()
6979SET (RESOURCES_INC_FILE "${MY_DIR} /src/resources.inc" )
7080
7181SET (SOURCES
82+
7283 src/transfer_pool.cpp
7384 src/event_loop.cpp
7485
@@ -93,9 +104,10 @@ SET(SOURCES
93104)
94105
95106SET (LIBRARIES
96- usb-1.0
97107 ${OpenCV_LIBS}
98- turbojpeg
108+ ${OpenCV_LIBRARIES}
109+ ${LibUSB_LIBRARIES}
110+ ${TJPEG_LIBRARY}
99111 ${LIBFREENECT2_THREADING_LIBRARIES}
100112)
101113
@@ -107,17 +119,35 @@ SET(RESOURCES
107119
108120
109121IF (ENABLE_OPENGL)
122+ auto_detect_lib(GLFW3)
123+
124+ #Assuming local build witout global deps, ugly to to this automatic but to keep backward compatibiliy
125+ if (${GLFW3_FOUND} STREQUAL "FALSE" )
126+
127+ MESSAGE (STATUS "Building local GLFW" )
128+ # GLFW
129+ SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" )
130+ SET (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs" )
131+ SET (GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs" )
132+ SET (GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation" )
133+
134+ ADD_SUBDIRECTORY (${MY_DIR} /../../depends /glfw_src/ ${MY_DIR} /../../depends /glfw)
135+ INCLUDE_DIRECTORIES (${MY_DIR} /../../depends /glfw_src/include /)
136+ else ()
137+ INCLUDE_DIRECTORIES (${GLFW3_INCLUDE_DIRS} )
138+
139+ LINK_DIRECTORIES (${GLFW3_LIBRARY_DIRS} )
140+ LIST (APPEND LIBRARIES
141+ ${GLFW3_LIBRARIES}
142+ )
143+ endif ()
144+
110145 SET (LIBFREENECT2_WITH_OPENGL_SUPPORT 1)
111146 LIST (APPEND SOURCES
112147 src/flextGL.c
113148 src/opengl_depth_packet_processor.cpp
114149 )
115-
116- LIST (APPEND LIBRARIES
117- glfw
118- ${GLFW_LIBRARIES}
119- )
120-
150+
121151 LIST (APPEND RESOURCES
122152 src/shader/debug.fs
123153 src/shader/default.vs
@@ -128,31 +158,33 @@ IF(ENABLE_OPENGL)
128158 )
129159ENDIF (ENABLE_OPENGL)
130160
131- IF (ENABLE_OPENCL AND OPENCL_FOUND)
132- SET (LIBFREENECT2_WITH_OPENCL_SUPPORT 1)
133- INCLUDE_DIRECTORIES (${OPENCL_INCLUDE_DIRS} )
134-
135- LIST (APPEND SOURCES
136- src/opencl_depth_packet_processor.cpp
137- )
138-
139- LIST (APPEND LIBRARIES
140- ${OPENCL_LIBRARIES}
141- )
142-
143- LIST (APPEND RESOURCES
144- src/opencl_depth_packet_processor.cl
145- )
146- ENDIF (ENABLE_OPENCL AND OPENCL_FOUND)
161+ IF (ENABLE_OPENCL)
162+ FIND_PACKAGE (OpenCL)
163+
164+ IF (OPENCL_FOUND)
165+ SET (LIBFREENECT2_WITH_OPENCL_SUPPORT 1)
166+ INCLUDE_DIRECTORIES (${OPENCL_INCLUDE_DIRS} )
167+
168+ LIST (APPEND SOURCES
169+ src/opencl_depth_packet_processor.cpp
170+ )
171+
172+ LIST (APPEND LIBRARIES
173+ ${OPENCL_LIBRARIES}
174+ )
175+
176+ LIST (APPEND RESOURCES
177+ src/opencl_depth_packet_processor.cl
178+ )
179+ ENDIF (OPENCL_FOUND)
180+ ENDIF (ENABLE_OPENCL)
147181
148182CONFIGURE_FILE ("${MY_DIR} /include/libfreenect2/config.h.in" "${MY_DIR} /include/libfreenect2/config.h" @ONLY)
149-
150183GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES} )
151184
152- INCLUDE_DIRECTORIES ("${MY_DIR} /include" )
153-
154185ADD_DEFINITIONS (-DRESOURCES_INC)
155186ADD_LIBRARY (freenect2 SHARED ${SOURCES} )
187+ MESSAGE ("Linking with these libraries: ${LIBRARIES} " )
156188TARGET_LINK_LIBRARIES (freenect2 ${LIBRARIES} )
157189
158190ADD_EXECUTABLE (Protonect
0 commit comments