Skip to content

Commit bcd3daa

Browse files
committed
Added pkg-config support for linux to find libraries externally.
Fined some paths in libturbojpeg find-script to get it working on linux. Changed name from GLEW_LIBRARY to GLEW_LIBRARIES to be compatible to pkg-config
1 parent 5b3f117 commit bcd3daa

File tree

4 files changed

+74
-47
lines changed

4 files changed

+74
-47
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# generated resource file
22
examples/protonect/src/resources.inc
3+
examples/protonect/build
34

45
# Dependency folders
56
depends/*/

examples/protonect/CMakeLists.txt

Lines changed: 64 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,36 @@
11
CMAKE_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+
331
PROJECT(libfreenect2)
432
SET(CMAKE_BUILD_TYPE RelWithDebInfo)
533

6-
SET(MY_DIR ${libfreenect2_SOURCE_DIR})
7-
834
OPTION(ENABLE_CXX11 "Enable C++11 support" OFF)
935
OPTION(ENABLE_OPENCL "Enable OpenCL support" ON)
1036

@@ -22,7 +48,7 @@ IF(ENABLE_CXX11)
2248
ENDIF(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
2854
INCLUDE(SetupLibfreenect2Threading)
@@ -31,43 +57,53 @@ INCLUDE_DIRECTORIES(${LIBFREENECT2_THREADING_INCLUDE_DIR})
3157
INCLUDE(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

3965
FIND_PACKAGE(OpenCL)
40-
41-
# dependencies
4266
FIND_PACKAGE(OpenCV REQUIRED)
43-
44-
FIND_PACKAGE(libusb REQUIRED)
45-
4667
FIND_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+
5077
ADD_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

64100
if(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/")
68104
endif()
69105

70-
SET(RESOURCES_INC_FILE "${MY_DIR}/src/resources.inc")
106+
SET(RESOURCES_INC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/resources.inc")
71107

72108
SET(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

105142
SET(RESOURCES
@@ -145,9 +182,9 @@ IF(ENABLE_OPENCL AND OPENCL_FOUND)
145182
)
146183
ENDIF(ENABLE_OPENCL AND OPENCL_FOUND)
147184

148-
GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES})
185+
GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${CMAKE_CURRENT_SOURCE_DIR} ${RESOURCES})
149186

150-
INCLUDE_DIRECTORIES("${MY_DIR}/include")
187+
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include")
151188

152189
ADD_DEFINITIONS(-DRESOURCES_INC)
153190
ADD_LIBRARY(freenect2 SHARED ${SOURCES})
@@ -175,10 +212,10 @@ CONFIGURE_FILE(freenect2.cmake.in
175212
INSTALL(TARGETS
176213
freenect2 DESTINATION lib)
177214
INSTALL(DIRECTORY
178-
"${MY_DIR}/include/" DESTINATION include)
215+
"${CMAKE_CURRENT_SOURCE_DIR}/include/" DESTINATION include)
179216
IF("${LIBFREENECT2_THREADING}" MATCHES "tinythread")
180217
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/)
182219
ENDIF("${LIBFREENECT2_THREADING}" MATCHES "tinythread")
183220
INSTALL(FILES
184221
"${PROJECT_BINARY_DIR}/freenect2Config.cmake" DESTINATION lib/cmake/freenect2/)

examples/protonect/cmake_modules/FindGlew.cmake

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#
66
# GLEW_FOUND
77
# GLEW_INCLUDE_DIR
8-
# GLEW_LIBRARY
8+
# GLEW_LIBRARIES
99
#
1010

1111
include(FindPackageHandleStandardArgs)
@@ -19,15 +19,15 @@ if (WIN32)
1919
DOC "The directory where GL/glew.h resides" )
2020

2121
if(ARCH STREQUAL "x86")
22-
find_library( GLEW_LIBRARY
22+
find_library( GLEW_LIBRARIES
2323
NAMES
2424
glew32mx glew32mxs
2525
PATHS
2626
"$ENV{GLEW_ROOT_DIR}/lib/Release MX/win32"
2727
"$ENV{GLEW_ROOT_DIR}/lib/Release MX/win32"
2828
DOC "The GLEW library")
2929
else()
30-
find_library( GLEW_LIBRARY
30+
find_library( GLEW_LIBRARIES
3131
NAMES
3232
glew32mx glew32mxs
3333
PATHS
@@ -48,7 +48,7 @@ else(WIN32)
4848
NO_DEFAULT_PATH
4949
DOC "The directory where GL/glew.h resides"
5050
)
51-
find_library( GLEW_LIBRARY
51+
find_library( GLEW_LIBRARIES
5252
NAMES
5353
GLEW glew
5454
PATHS
@@ -65,7 +65,7 @@ endif ()
6565

6666
find_package_handle_standard_args(GLEW DEFAULT_MSG
6767
GLEW_INCLUDE_DIR
68-
GLEW_LIBRARY
68+
GLEW_LIBRARIES
6969
)
7070

71-
mark_as_advanced( GLEW_FOUND )
71+
mark_as_advanced( GLEW_FOUND )

examples/protonect/cmake_modules/FindTurboJPEG.cmake

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,8 @@ if(WIN32)
3333
set(DEFAULT_TJPEG_LIBRARY c:\\libjpeg-turbo64\\lib\\turbojpeg.lib)
3434
endif()
3535
else()
36-
if(${CMAKE_SYSTEM_PROCESSOR} STREQUAL "x32")
37-
set(DEFAULT_TJPEG_LIBRARY /usr/lib/libturbojpeg.so)
38-
39-
if(NOT EXISTS ${DEFAULT_TJPEG_LIBRARY})
40-
set(DEFAULT_TJPEG_LIBRARY /opt/libjpeg-turbo/lib64/libturbojpeg.so)
41-
endif()
42-
else()
43-
set(DEFAULT_TJPEG_LIBRARY /usr/lib/libturbojpeg.a)
44-
45-
if(NOT EXISTS ${DEFAULT_TJPEG_LIBRARY})
46-
set(DEFAULT_TJPEG_LIBRARY /opt/libjpeg-turbo/lib/libturbojpeg.a)
47-
endif()
48-
endif()
36+
find_library(DEFAULT_TJPEG_LIBRARY NAMES libturbojpeg.so libturbojpeg.a
37+
HINTS /opt/libjpeg-turbo/lib64/ /opt/libjpeg-turbo/lib/)
4938
endif()
5039

5140
set(TJPEG_LIBRARY ${DEFAULT_TJPEG_LIBRARY} CACHE PATH
@@ -64,4 +53,4 @@ if(NOT TURBOJPEG_WORKS)
6453
message(FATAL_ERROR "Could not link with TurboJPEG library ${TJPEG_LIBRARY}. If it is installed in a different place, then set TJPEG_LIBRARY accordingly.")
6554
endif()
6655

67-
message(STATUS "TJPEG_LIBRARY = ${TJPEG_LIBRARY}")
56+
message(STATUS "TJPEG_LIBRARY = ${TJPEG_LIBRARY}")

0 commit comments

Comments
 (0)