1
1
CMAKE_MINIMUM_REQUIRED (VERSION 2.6 )
2
2
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
+
3
31
PROJECT (libfreenect2 )
4
32
SET (CMAKE_BUILD_TYPE RelWithDebInfo )
5
33
6
- SET (MY_DIR ${libfreenect2_SOURCE_DIR} )
7
-
8
34
OPTION (ENABLE_CXX11 "Enable C++11 support" OFF )
9
35
OPTION (ENABLE_OPENCL "Enable OpenCL support" ON )
10
36
OPTION (ENABLE_OPENGL "Enable OpenGL support" ON )
@@ -23,7 +49,7 @@ IF(ENABLE_CXX11)
23
49
ENDIF (ENABLE_CXX11 )
24
50
25
51
# additional cmake modules
26
- LIST (APPEND CMAKE_MODULE_PATH ${MY_DIR } /cmake_modules )
52
+ LIST (APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR } /cmake_modules )
27
53
28
54
# setup threading
29
55
INCLUDE (SetupLibfreenect2Threading )
@@ -32,27 +58,35 @@ INCLUDE_DIRECTORIES(${LIBFREENECT2_THREADING_INCLUDE_DIR})
32
58
INCLUDE (GenerateResources )
33
59
34
60
#set the default path for built executables to the "bin" directory
35
- SET (EXECUTABLE_OUTPUT_PATH ${MY_DIR } /bin )
61
+ SET (EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR } /bin )
36
62
37
63
#set the default path for built libraries to the "lib" directory
38
- SET (LIBRARY_OUTPUT_PATH ${MY_DIR } /lib )
64
+ SET (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR } /lib )
39
65
40
66
FIND_PACKAGE (OpenCL )
41
-
42
- # dependencies
43
67
FIND_PACKAGE (OpenCV REQUIRED )
44
-
45
- FIND_PACKAGE (libusb REQUIRED )
46
-
47
68
FIND_PACKAGE (TurboJPEG REQUIRED )
48
69
49
- FIND_PACKAGE (GLEW REQUIRED )
50
70
71
+ # dependencies
72
+ auto_detect_lib (LibUsb REQUIRED )
73
+ auto_detect_lib (GLEW REQUIRED )
74
+ auto_detect_lib (GLEWmx REQUIRED )
75
+ auto_detect_lib (GLFW3 )
76
+
77
+
51
78
ADD_DEFINITIONS (-DGLEW_MX )
52
79
80
+ #Our headers include libusb a bit haky, so we need to workaround the given path here
81
+ INCLUDE_DIRECTORIES (${LibUsb_INCLUDEDIR} /libusb-1.0 )
82
+
83
+
53
84
# Add includes
54
- INCLUDE_DIRECTORIES (${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${TJPEG_INCLUDE_DIR} )
85
+ # INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${GLEW_INCLUDE_DIR} ${TJPEG_INCLUDE_DIR})
55
86
IF (ENABLE_OPENGL )
87
+
88
+ #Assuming local build witout global deps, ugly to to this automatic but to keep backward compatibiliy
89
+ if (not ${GLFW_FOUND} )
56
90
# GLFW
57
91
SET (BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries" )
58
92
SET (GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs" )
@@ -62,14 +96,15 @@ IF(ENABLE_OPENGL)
62
96
ADD_SUBDIRECTORY (${MY_DIR} /../../depends/glfw_src/ ${MY_DIR} /../../depends/glfw )
63
97
INCLUDE_DIRECTORIES (${MY_DIR} /../../depends/glfw_src/include/ )
64
98
ENDIF (ENABLE_OPENGL )
99
+ endif ()
65
100
66
101
if (APPLE )
67
102
# libjpeg-turbo
68
- INCLUDE_DIRECTORIES ("${MY_DIR } /../../depends/libjpeg_turbo/include/" )
69
- LINK_DIRECTORIES ("${MY_DIR } /../../depends/libjpeg_turbo/lib/" )
103
+ INCLUDE_DIRECTORIES ("${CMAKE_CURRENT_SOURCE_DIR } /../../depends/libjpeg_turbo/include/" )
104
+ LINK_DIRECTORIES ("${CMAKE_CURRENT_SOURCE_DIR } /../../depends/libjpeg_turbo/lib/" )
70
105
endif ()
71
106
72
- SET (RESOURCES_INC_FILE "${MY_DIR } /src/resources.inc" )
107
+ SET (RESOURCES_INC_FILE "${CMAKE_CURRENT_SOURCE_DIR } /src/resources.inc" )
73
108
74
109
SET (SOURCES
75
110
@@ -101,7 +136,8 @@ SET(LIBRARIES
101
136
${LibUSB_LIBRARIES}
102
137
${TJPEG_LIBRARY}
103
138
${LIBFREENECT2_THREADING_LIBRARIES}
104
- ${GLEW_LIBRARY}
139
+ ${GLEW_LIBRARIES}
140
+ ${GLEWmx_LIBRARIES}
105
141
)
106
142
107
143
SET (RESOURCES
@@ -151,10 +187,10 @@ IF(ENABLE_OPENCL AND OPENCL_FOUND)
151
187
ENDIF (ENABLE_OPENCL AND OPENCL_FOUND )
152
188
153
189
CONFIGURE_FILE ("${MY_DIR} /include/libfreenect2/config.h.in" "${MY_DIR} /include/libfreenect2/config.h" @ONLY )
190
+ GENERATE_RESOURCES (${RESOURCES_INC_FILE} ${CMAKE_CURRENT_SOURCE_DIR} ${RESOURCES} )
154
191
155
- GENERATE_RESOURCES (${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES} )
156
192
157
- INCLUDE_DIRECTORIES ("${MY_DIR } /include" )
193
+ INCLUDE_DIRECTORIES ("${CMAKE_CURRENT_SOURCE_DIR } /include" )
158
194
159
195
ADD_DEFINITIONS (-DRESOURCES_INC )
160
196
ADD_LIBRARY (freenect2 SHARED ${SOURCES} )
0 commit comments