11CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
22
3+
4+ function (auto_detect_lib LIBNAME)
5+ if (NOT DEFINED ${${LIBNAME} _FOUND})
6+ find_package (PkgConfig)
7+ if ( PKG_CONFIG_FOUND )
8+ string (TOLOWER ${LIBNAME} LOWER_${LIBNAME} )
9+ pkg_check_modules(${LIBNAME} ${ARGN} ${LOWER_${LIBNAME} })
10+ MESSAGE ("LIB ${LIBNAME} found and include is in ${${LIBNAME} _INCLUDE_DIRS}" )
11+ else ()
12+ MESSAGE ("Fallback to non-pkg-config" )
13+ FIND_PACKAGE (${LIBNAME} ${ARGN} )
14+ endif ()
15+ else ()
16+ MESSAGE ("WARNING lib was already known ${LIBNAME} becasue of ${${LIBNAME} _FOUND}" )
17+ endif ()
18+
19+ if (NOT ${${LIBNAME} _FOUND})
20+ MESSAGE ("WARNING lib #{LIBNAME} Not found" )
21+ else ()
22+ endif ()
23+
24+ MESSAGE ("LIB ${LIBNAME} found and include is in ${${LIBNAME} _INCLUDE_DIRS}" )
25+ #Still include paths because we are assuming FOUND is givern externally
26+ INCLUDE_DIRECTORIES (${${LIBNAME} _INCLUDE_DIRS})
27+ LINK_DIRECTORIES (${${LIBNAME} _LIBRARY_DIRS})
28+ endfunction ()
29+
30+
331PROJECT (libfreenect2)
432SET (CMAKE_BUILD_TYPE RelWithDebInfo)
533
6- SET (MY_DIR ${libfreenect2_SOURCE_DIR} )
7-
834OPTION (ENABLE_CXX11 "Enable C++11 support" OFF )
935OPTION (ENABLE_OPENCL "Enable OpenCL support" ON )
1036
@@ -22,7 +48,7 @@ IF(ENABLE_CXX11)
2248ENDIF (ENABLE_CXX11)
2349
2450# additional cmake modules
25- LIST (APPEND CMAKE_MODULE_PATH ${MY_DIR } /cmake_modules)
51+ LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR } /cmake_modules)
2652
2753# setup threading
2854INCLUDE (SetupLibfreenect2Threading)
@@ -31,43 +57,53 @@ INCLUDE_DIRECTORIES(${LIBFREENECT2_THREADING_INCLUDE_DIR})
3157INCLUDE (GenerateResources)
3258
3359#set the default path for built executables to the "bin" directory
34- SET (EXECUTABLE_OUTPUT_PATH ${MY_DIR } /bin)
60+ SET (EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR } /bin)
3561
3662#set the default path for built libraries to the "lib" directory
37- SET (LIBRARY_OUTPUT_PATH ${MY_DIR } /lib)
63+ SET (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR } /lib)
3864
3965FIND_PACKAGE (OpenCL)
40-
41- # dependencies
4266FIND_PACKAGE (OpenCV REQUIRED)
43-
44- FIND_PACKAGE (libusb REQUIRED)
45-
4667FIND_PACKAGE (TurboJPEG REQUIRED)
4768
48- FIND_PACKAGE (GLEW REQUIRED)
4969
70+ # dependencies
71+ auto_detect_lib(LibUsb REQUIRED)
72+ auto_detect_lib(GLEW REQUIRED)
73+ auto_detect_lib(GLEWmx REQUIRED)
74+ auto_detect_lib(GLFW3)
75+
76+
5077ADD_DEFINITIONS (-DGLEW_MX)
5178
79+ #Our headers include libusb a bit haky, so we need to workaround the given path here
80+ INCLUDE_DIRECTORIES (${LibUsb_INCLUDEDIR} /libusb-1.0)
81+
82+
5283# Add includes
53- INCLUDE_DIRECTORIES (${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${TJPEG_INCLUDE_DIR} )
84+ # INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${TJPEG_INCLUDE_DIR})
5485
55- # GLFW
56- SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" )
57- SET (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs" )
58- SET (GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs" )
59- SET (GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation" )
6086
61- ADD_SUBDIRECTORY (${MY_DIR} /../../depends /glfw_src/ ${MY_DIR} /../../depends /glfw)
62- INCLUDE_DIRECTORIES (${MY_DIR} /../../depends /glfw_src/include /)
87+ #Assuming local build witout global deps, ugly to to this automatic but to keep backward compatibiliy
88+ if (not ${GLFW_FOUND} )
89+ # GLFW
90+ SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" )
91+ SET (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs" )
92+ SET (GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs" )
93+ SET (GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation" )
94+
95+
96+ ADD_SUBDIRECTORY (${CMAKE_CURRENT_SOURCE_DIR} /../../depends /glfw_src/ ${CMAKE_CURRENT_SOURCE_DIR} /../../depends /glfw)
97+ INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR} /../../depends /glfw_src/include /)
98+ endif ()
6399
64100if (APPLE )
65101 # libjpeg-turbo
66- INCLUDE_DIRECTORIES ("${MY_DIR } /../../depends/libjpeg_turbo/include/" )
67- LINK_DIRECTORIES ("${MY_DIR } /../../depends/libjpeg_turbo/lib/" )
102+ INCLUDE_DIRECTORIES ("${CMAKE_CURRENT_SOURCE_DIR } /../../depends/libjpeg_turbo/include/" )
103+ LINK_DIRECTORIES ("${CMAKE_CURRENT_SOURCE_DIR } /../../depends/libjpeg_turbo/lib/" )
68104endif ()
69105
70- SET (RESOURCES_INC_FILE "${MY_DIR } /src/resources.inc" )
106+ SET (RESOURCES_INC_FILE "${CMAKE_CURRENT_SOURCE_DIR } /src/resources.inc" )
71107
72108SET (SOURCES
73109
@@ -99,7 +135,8 @@ SET(LIBRARIES
99135 ${LibUSB_LIBRARIES}
100136 ${TJPEG_LIBRARY}
101137 ${LIBFREENECT2_THREADING_LIBRARIES}
102- ${GLEW_LIBRARY}
138+ ${GLEW_LIBRARIES}
139+ ${GLEWmx_LIBRARIES}
103140)
104141
105142SET (RESOURCES
@@ -146,10 +183,10 @@ IF(ENABLE_OPENCL AND OPENCL_FOUND)
146183ENDIF (ENABLE_OPENCL AND OPENCL_FOUND)
147184
148185CONFIGURE_FILE ("${MY_DIR} /include/libfreenect2/config.h.in" "${MY_DIR} /include/libfreenect2/config.h" @ONLY)
186+ GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${CMAKE_CURRENT_SOURCE_DIR} ${RESOURCES} )
149187
150- GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES} )
151188
152- INCLUDE_DIRECTORIES ("${MY_DIR } /include" )
189+ INCLUDE_DIRECTORIES ("${CMAKE_CURRENT_SOURCE_DIR } /include" )
153190
154191ADD_DEFINITIONS (-DRESOURCES_INC)
155192ADD_LIBRARY (freenect2 SHARED ${SOURCES} )
0 commit comments