11CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
22
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+
313PROJECT (libfreenect2)
414SET (CMAKE_BUILD_TYPE RelWithDebInfo)
515
@@ -14,9 +24,9 @@ IF(ENABLE_CXX11)
1424 CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
1525 CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
1626 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" )
1828 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" )
2030 ELSE ()
2131 MESSAGE (STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler." )
2232 ENDIF ()
@@ -27,7 +37,6 @@ LIST(APPEND CMAKE_MODULE_PATH ${MY_DIR}/cmake_modules)
2737
2838# setup threading
2939INCLUDE (SetupLibfreenect2Threading)
30- INCLUDE_DIRECTORIES (${LIBFREENECT2_THREADING_INCLUDE_DIR} )
3140
3241INCLUDE (GenerateResources)
3342
@@ -37,30 +46,21 @@ SET(EXECUTABLE_OUTPUT_PATH ${MY_DIR}/bin)
3746#set the default path for built libraries to the "lib" directory
3847SET (LIBRARY_OUTPUT_PATH ${MY_DIR} /lib)
3948
40- FIND_PACKAGE (OpenCL)
41-
4249# 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 ()
5159
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} )
6262
63- if (APPLE )
63+ if (APPLE AND NOT ${TurboJPEG_FOUND} )
6464 # libjpeg-turbo
6565 INCLUDE_DIRECTORIES ("${MY_DIR} /../../depends/libjpeg_turbo/include/" )
6666 LINK_DIRECTORIES ("${MY_DIR} /../../depends/libjpeg_turbo/lib/" )
@@ -115,9 +115,10 @@ SET(SOURCES
115115)
116116
117117SET (LIBRARIES
118- usb-1.0
119118 ${OpenCV_LIBS}
120- turbojpeg
119+ ${OpenCV_LIBRARIES}
120+ ${LibUSB_LIBRARIES}
121+ ${TurboJPEG_LIBRARY}
121122 ${LIBFREENECT2_THREADING_LIBRARIES}
122123)
123124
@@ -127,19 +128,41 @@ SET(RESOURCES
127128 zTable.bin
128129)
129130
130-
131131IF (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+
132160 SET (LIBFREENECT2_WITH_OPENGL_SUPPORT 1)
133161 LIST (APPEND SOURCES
134162 src/flextGL.c
135163 src/opengl_depth_packet_processor.cpp
136164 )
137-
138- LIST (APPEND LIBRARIES
139- glfw
140- ${GLFW_LIBRARIES}
141- )
142-
165+
143166 LIST (APPEND RESOURCES
144167 src/shader/debug.fs
145168 src/shader/default.vs
@@ -150,31 +173,33 @@ IF(ENABLE_OPENGL)
150173 )
151174ENDIF (ENABLE_OPENGL)
152175
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)
169196
170197CONFIGURE_FILE ("${MY_DIR} /include/libfreenect2/config.h.in" "${MY_DIR} /include/libfreenect2/config.h" @ONLY)
171-
172198GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES} )
173199
174- INCLUDE_DIRECTORIES ("${MY_DIR} /include" )
175-
176200ADD_DEFINITIONS (-DRESOURCES_INC)
177201ADD_LIBRARY (freenect2 SHARED ${SOURCES} )
202+ MESSAGE ("Linking with these libraries: ${LIBRARIES} " )
178203TARGET_LINK_LIBRARIES (freenect2 ${LIBRARIES} )
179204
180205ADD_EXECUTABLE (Protonect
0 commit comments