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
@@ -22,7 +48,7 @@ IF(ENABLE_CXX11)
22
48
ENDIF (ENABLE_CXX11 )
23
49
24
50
# 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 )
26
52
27
53
# setup threading
28
54
INCLUDE (SetupLibfreenect2Threading )
@@ -31,43 +57,53 @@ INCLUDE_DIRECTORIES(${LIBFREENECT2_THREADING_INCLUDE_DIR})
31
57
INCLUDE (GenerateResources )
32
58
33
59
#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 )
35
61
36
62
#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 )
38
64
39
65
FIND_PACKAGE (OpenCL )
40
-
41
- # dependencies
42
66
FIND_PACKAGE (OpenCV REQUIRED )
43
-
44
- FIND_PACKAGE (libusb REQUIRED )
45
-
46
67
FIND_PACKAGE (TurboJPEG REQUIRED )
47
68
48
- FIND_PACKAGE (GLEW REQUIRED )
49
69
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
+
50
77
ADD_DEFINITIONS (-DGLEW_MX )
51
78
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
+
52
83
# 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})
54
85
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" )
60
86
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 ()
63
99
64
100
if (APPLE )
65
101
# 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/" )
68
104
endif ()
69
105
70
- SET (RESOURCES_INC_FILE "${MY_DIR } /src/resources.inc" )
106
+ SET (RESOURCES_INC_FILE "${CMAKE_CURRENT_SOURCE_DIR } /src/resources.inc" )
71
107
72
108
SET (SOURCES
73
109
@@ -99,7 +135,8 @@ SET(LIBRARIES
99
135
${LibUSB_LIBRARIES}
100
136
${TJPEG_LIBRARY}
101
137
${LIBFREENECT2_THREADING_LIBRARIES}
102
- ${GLEW_LIBRARY}
138
+ ${GLEW_LIBRARIES}
139
+ ${GLEWmx_LIBRARIES}
103
140
)
104
141
105
142
SET (RESOURCES
@@ -145,9 +182,9 @@ IF(ENABLE_OPENCL AND OPENCL_FOUND)
145
182
)
146
183
ENDIF (ENABLE_OPENCL AND OPENCL_FOUND )
147
184
148
- GENERATE_RESOURCES (${RESOURCES_INC_FILE} ${MY_DIR } ${RESOURCES} )
185
+ GENERATE_RESOURCES (${RESOURCES_INC_FILE} ${CMAKE_CURRENT_SOURCE_DIR } ${RESOURCES} )
149
186
150
- INCLUDE_DIRECTORIES ("${MY_DIR } /include" )
187
+ INCLUDE_DIRECTORIES ("${CMAKE_CURRENT_SOURCE_DIR } /include" )
151
188
152
189
ADD_DEFINITIONS (-DRESOURCES_INC )
153
190
ADD_LIBRARY (freenect2 SHARED ${SOURCES} )
@@ -175,10 +212,10 @@ CONFIGURE_FILE(freenect2.cmake.in
175
212
INSTALL (TARGETS
176
213
freenect2 DESTINATION lib )
177
214
INSTALL (DIRECTORY
178
- "${MY_DIR } /include/" DESTINATION include )
215
+ "${CMAKE_CURRENT_SOURCE_DIR } /include/" DESTINATION include )
179
216
IF ("${LIBFREENECT2_THREADING} " MATCHES "tinythread" )
180
217
INSTALL (FILES
181
- "${MY_DIR } /src/tinythread/tinythread.h" DESTINATION include /${PROJECT_NAME}/tinythread/ )
218
+ "${CMAKE_CURRENT_SOURCE_DIR } /src/tinythread/tinythread.h" DESTINATION include /${PROJECT_NAME}/tinythread/ )
182
219
ENDIF ("${LIBFREENECT2_THREADING} " MATCHES "tinythread" )
183
220
INSTALL (FILES
184
221
"${PROJECT_BINARY_DIR} /freenect2Config.cmake" DESTINATION lib/cmake/freenect2/ )
0 commit comments