Skip to content

Commit ace3c1a

Browse files
goldhoornlarshg
authored andcommitted
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 452a585 commit ace3c1a

File tree

4 files changed

+64
-38
lines changed

4 files changed

+64
-38
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ examples/protonect/include/libfreenect2/config.h
33

44
# generated resource file
55
examples/protonect/src/resources.inc
6+
examples/protonect/build
67

78
# Dependency folders
89
depends/*/

examples/protonect/CMakeLists.txt

Lines changed: 54 additions & 18 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
OPTION(ENABLE_OPENGL "Enable OpenGL support" ON)
@@ -23,7 +49,7 @@ IF(ENABLE_CXX11)
2349
ENDIF(ENABLE_CXX11)
2450

2551
# 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)
2753

2854
# setup threading
2955
INCLUDE(SetupLibfreenect2Threading)
@@ -32,27 +58,35 @@ INCLUDE_DIRECTORIES(${LIBFREENECT2_THREADING_INCLUDE_DIR})
3258
INCLUDE(GenerateResources)
3359

3460
#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)
3662

3763
#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)
3965

4066
FIND_PACKAGE(OpenCL)
41-
42-
# dependencies
4367
FIND_PACKAGE(OpenCV REQUIRED)
44-
45-
FIND_PACKAGE(libusb REQUIRED)
46-
4768
FIND_PACKAGE(TurboJPEG REQUIRED)
4869

49-
FIND_PACKAGE(GLEW REQUIRED)
5070

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+
5178
ADD_DEFINITIONS(-DGLEW_MX)
5279

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+
5384
# 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})
5586
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})
5690
# GLFW
5791
SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
5892
SET(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs")
@@ -62,14 +96,15 @@ IF(ENABLE_OPENGL)
6296
ADD_SUBDIRECTORY(${MY_DIR}/../../depends/glfw_src/ ${MY_DIR}/../../depends/glfw)
6397
INCLUDE_DIRECTORIES(${MY_DIR}/../../depends/glfw_src/include/)
6498
ENDIF(ENABLE_OPENGL)
99+
endif()
65100

66101
if(APPLE)
67102
# 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/")
70105
endif()
71106

72-
SET(RESOURCES_INC_FILE "${MY_DIR}/src/resources.inc")
107+
SET(RESOURCES_INC_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/resources.inc")
73108

74109
SET(SOURCES
75110

@@ -101,7 +136,8 @@ SET(LIBRARIES
101136
${LibUSB_LIBRARIES}
102137
${TJPEG_LIBRARY}
103138
${LIBFREENECT2_THREADING_LIBRARIES}
104-
${GLEW_LIBRARY}
139+
${GLEW_LIBRARIES}
140+
${GLEWmx_LIBRARIES}
105141
)
106142

107143
SET(RESOURCES
@@ -151,10 +187,10 @@ IF(ENABLE_OPENCL AND OPENCL_FOUND)
151187
ENDIF(ENABLE_OPENCL AND OPENCL_FOUND)
152188

153189
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})
154191

155-
GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES})
156192

157-
INCLUDE_DIRECTORIES("${MY_DIR}/include")
193+
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_SOURCE_DIR}/include")
158194

159195
ADD_DEFINITIONS(-DRESOURCES_INC)
160196
ADD_LIBRARY(freenect2 SHARED ${SOURCES})

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)