Skip to content

Commit 78ea54f

Browse files
committed
Merge pull request #274 from xlz/cmake
CMake cleanup
2 parents 72eb75a + 39bd5ab commit 78ea54f

File tree

5 files changed

+142
-165
lines changed

5 files changed

+142
-165
lines changed

examples/protonect/CMakeLists.txt

Lines changed: 19 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,10 @@
11
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
22

3-
macro(auto_detect_lib LIBNAME)
4-
if ( PKG_CONFIG_FOUND )
5-
string(TOLOWER ${LIBNAME} PKGCONFIGNAME)
6-
pkg_check_modules(${LIBNAME} ${PKGCONFIGNAME} ${ARGN})
7-
else(PKG_CONFIG_FOUND)
8-
#MESSAGE("Fallback to non-pkg-config")
9-
FIND_PACKAGE(${LIBNAME} ${ARGN})
10-
endif(PKG_CONFIG_FOUND)
11-
endmacro()
12-
133
PROJECT(libfreenect2)
144
SET(CMAKE_BUILD_TYPE RelWithDebInfo)
155

166
SET(MY_DIR ${libfreenect2_SOURCE_DIR})
17-
SET(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:${MY_DIR}/../../depends/libusb/lib/pkgconfig/:${MY_DIR}/../../depends/glfw/lib/pkgconfig/" )
7+
SET(DEPENDS_DIR "${MY_DIR}/../../depends" CACHE STRING "dependency directory")
188

199
OPTION(ENABLE_CXX11 "Enable C++11 support" OFF)
2010
OPTION(ENABLE_OPENCL "Enable OpenCL support" ON)
@@ -48,24 +38,21 @@ SET(EXECUTABLE_OUTPUT_PATH ${MY_DIR}/bin)
4838
SET(LIBRARY_OUTPUT_PATH ${MY_DIR}/lib)
4939

5040
# dependencies
51-
find_package(PkgConfig) # try find PKGConfig as it will be used if found
52-
auto_detect_lib(LibUSB-1.0 REQUIRED)
53-
auto_detect_lib(OpenCV REQUIRED)
41+
FIND_PACKAGE(PkgConfig) # try find PKGConfig as it will be used if found
42+
FIND_PACKAGE(LibUSB REQUIRED)
43+
FIND_PACKAGE(OpenCV REQUIRED)
5444
FIND_PACKAGE(TurboJPEG REQUIRED) #does not provide a package-config file
5545

56-
#hack for buggy libusb pkgconfig file
57-
if(NOT LibUSB_INCLUDE_DIR)
58-
find_path(LibUSB_INCLUDE_DIR NAMES libusb.h PATHS /usr/include/libusb-1.0 )
59-
endif()
60-
6146
# Add includes
62-
INCLUDE_DIRECTORIES("${MY_DIR}/include" ${LIBFREENECT2_THREADING_INCLUDE_DIR} ${OpenCV_INCLUDE_DIRS} ${LibUSB_INCLUDE_DIR} ${TurboJPEG_INCLUDE_DIR})
47+
INCLUDE_DIRECTORIES(
48+
"${MY_DIR}/include"
49+
${LIBFREENECT2_THREADING_INCLUDE_DIR}
50+
${OpenCV_INCLUDE_DIRS}
51+
${LibUSB_INCLUDE_DIRS}
52+
${TurboJPEG_INCLUDE_DIRS}
53+
)
6354

64-
if(APPLE AND NOT ${TurboJPEG_FOUND})
65-
# libjpeg-turbo
66-
INCLUDE_DIRECTORIES("${MY_DIR}/../../depends/libjpeg_turbo/include/")
67-
LINK_DIRECTORIES("${MY_DIR}/../../depends/libjpeg_turbo/lib/")
68-
endif()
55+
LINK_DIRECTORIES(${LibUSB_LIBRARY_DIRS})
6956

7057
SET(RESOURCES_INC_FILE "${MY_DIR}/src/resources.inc")
7158

@@ -119,7 +106,7 @@ SET(LIBRARIES
119106
${OpenCV_LIBS}
120107
${OpenCV_LIBRARIES}
121108
${LibUSB_LIBRARIES}
122-
${TurboJPEG_LIBRARY}
109+
${TurboJPEG_LIBRARIES}
123110
${LIBFREENECT2_THREADING_LIBRARIES}
124111
)
125112

@@ -130,34 +117,16 @@ SET(RESOURCES
130117
)
131118

132119
IF(ENABLE_OPENGL)
133-
auto_detect_lib(GLFW3)
134-
135-
#Assuming local build witout global deps, ugly to to this automatic but to keep backward compatibiliy
136-
if(NOT GLFW3_FOUND)
137-
138-
MESSAGE(STATUS "Building local GLFW")
139-
# GLFW
140-
SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries")
141-
SET(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "Build the GLFW example programs")
142-
SET(GLFW_BUILD_TESTS OFF CACHE BOOL "Build the GLFW test programs")
143-
SET(GLFW_BUILD_DOCS OFF CACHE BOOL "Build the GLFW documentation")
144-
145-
ADD_SUBDIRECTORY(${MY_DIR}/../../depends/glfw_src/ ${MY_DIR}/../../depends/glfw)
146-
INCLUDE_DIRECTORIES(${MY_DIR}/../../depends/glfw_src/include/)
147-
148-
LIST(APPEND LIBRARIES
149-
glfw
150-
)
151-
152-
else()
120+
FIND_PACKAGE(GLFW3)
121+
FIND_PACKAGE(OpenGL)
122+
IF(GLFW3_FOUND)
153123
INCLUDE_DIRECTORIES(${GLFW3_INCLUDE_DIRS})
154124

155125
LINK_DIRECTORIES(${GLFW3_LIBRARY_DIRS})
156126
LIST(APPEND LIBRARIES
157127
${GLFW3_LIBRARIES}
128+
${OPENGL_gl_LIBRARY}
158129
)
159-
endif()
160-
161130
SET(LIBFREENECT2_WITH_OPENGL_SUPPORT 1)
162131
LIST(APPEND SOURCES
163132
src/flextGL.c
@@ -172,6 +141,7 @@ IF(ENABLE_OPENGL)
172141
src/shader/stage1.fs
173142
src/shader/stage2.fs
174143
)
144+
ENDIF()
175145
ENDIF(ENABLE_OPENGL)
176146

177147
IF(ENABLE_OPENCL)
@@ -195,7 +165,7 @@ IF(ENABLE_OPENCL)
195165
ENDIF(OPENCL_FOUND)
196166
ENDIF(ENABLE_OPENCL)
197167

198-
SET(CMAKE_INSTALL_RPATH ${LibUSB-1.0_LIBDIR})
168+
SET(CMAKE_INSTALL_RPATH ${LibUSB_LIBDIR})
199169

200170
CONFIGURE_FILE("${MY_DIR}/include/libfreenect2/config.h.in" "${MY_DIR}/include/libfreenect2/config.h" @ONLY)
201171
GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES})
Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,52 @@
11
# - Try to find GLFW3
22
#
3+
# If no pkgconfig, define GLFW_ROOT to installation tree
34
# Will define the following:
45
# GLFW3_FOUND
56
# GLFW3_INCLUDE_DIRS
67
# GLFW3_LIBRARIES
78

8-
include(FindPackageHandleStandardArgs)
9+
IF(PKG_CONFIG_FOUND)
10+
IF(APPLE)
11+
# homebrew or macports pkgconfig locations
12+
SET(ENV{PKG_CONFIG_PATH} "/usr/local/opt/glfw3/lib/pkgconfig:/opt/local/lib/pkgconfig")
13+
ENDIF()
14+
SET(ENV{PKG_CONFIG_PATH} "${DEPENDS_DIR}/glfw/lib/pkgconfig:$ENV{PKG_CONFIG_PATH}")
15+
PKG_CHECK_MODULES(GLFW3 glfw3)
916

10-
IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
11-
find_path(GLFW3_INCLUDE_DIRS
12-
glfw/glfw3.h
13-
DOC "GLFW include directory "
14-
PATHS $ENV{ProgramW6432}/glfw/include $ENV{GLFW_ROOT}/include)
15-
16-
find_library(GLFW3_LIBRARIES
17-
NAMES glfw3.lib glfw3dll.lib
18-
PATHS $ENV{ProgramW6432}/glfw/lib/ $ENV{GLFW_ROOT}/lib/)
17+
RETURN()
1918
ENDIF()
2019

21-
find_package_handle_standard_args(GLFW3 "Could not find GLFW3 - try adding GLFW_ROOT in enviroment variables." GLFW3_INCLUDE_DIRS GLFW3_LIBRARIES)
20+
FIND_PATH(GLFW3_INCLUDE_DIRS
21+
GLFW/glfw3.h
22+
DOC "GLFW include directory "
23+
PATHS
24+
"${DEPENDS_DIR}/glfw"
25+
"$ENV{ProgramW6432}/glfw"
26+
ENV GLFW_ROOT
27+
PATH_SUFFIXES
28+
include
29+
)
30+
31+
# directories in the official binary package
32+
IF(MINGW)
33+
SET(_SUFFIX lib-mingw)
34+
ELSEIF(MSVC11)
35+
SET(_SUFFIX lib-vc2012)
36+
ELSEIF(MSVC)
37+
SET(_SUFFIX lib-vc2013)
38+
ENDIF()
39+
40+
FIND_LIBRARY(GLFW3_LIBRARIES
41+
NAMES glfw3dll glfw3
42+
PATHS
43+
"${DEPENDS_DIR}/glfw"
44+
"$ENV{ProgramW6432}/glfw"
45+
ENV GLFW_ROOT
46+
PATH_SUFFIXES
47+
lib
48+
${_SUFFIX}
49+
)
50+
51+
INCLUDE(FindPackageHandleStandardArgs)
52+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GLFW3 "Could NOT find GLFW3 - try adding GLFW_ROOT in enviroment variables." GLFW3_LIBRARIES GLFW3_INCLUDE_DIRS)
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# - Find libusb for portable USB support
2+
#
3+
# If the LibUSB_ROOT environment variable
4+
# is defined, it will be used as base path.
5+
# The following standard variables get defined:
6+
# LibUSB_FOUND: true if LibUSB was found
7+
# LibUSB_INCLUDE_DIR: the directory that contains the include file
8+
# LibUSB_LIBRARIES: the libraries
9+
10+
IF(PKG_CONFIG_FOUND)
11+
SET(ENV{PKG_CONFIG_PATH} "${DEPENDS_DIR}/libusb/lib/pkgconfig")
12+
PKG_CHECK_MODULES(LibUSB libusb-1.0)
13+
RETURN()
14+
ENDIF()
15+
16+
FIND_PATH(LibUSB_INCLUDE_DIRS
17+
NAMES libusb.h
18+
PATHS
19+
"${DEPENDS_DIR}/libusb/libusb" # libusb git tree
20+
"${DEPENDS_DIR}/libusbx"
21+
ENV LibUSB_ROOT
22+
PATH_SUFFIXES
23+
include
24+
)
25+
26+
FIND_LIBRARY(LibUSB_LIBRARIES
27+
NAMES libusb-1.0
28+
PATHS
29+
"${DEPENDS_DIR}/libusb"
30+
"${DEPENDS_DIR}/libusbx"
31+
ENV LibUSB_ROOT
32+
PATH_SUFFIXES
33+
x64/Release/dll
34+
x64/Debug/dll
35+
Win32/Release/dll
36+
Win32/Debug/dll
37+
MS64
38+
)
39+
40+
INCLUDE(FindPackageHandleStandardArgs)
41+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibUSB DEFAULT_MSG LibUSB_LIBRARIES LibUSB_INCLUDE_DIRS)

examples/protonect/cmake_modules/FindLibUsb-1.0.cmake

Lines changed: 0 additions & 89 deletions
This file was deleted.
Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,50 @@
1-
include(CheckCSourceCompiles)
1+
# FindTurboJPEG.cmake
2+
# Uses environment variable TurboJPEG_ROOT as backup
3+
# - TurboJPEG_FOUND
4+
# - TurboJPEG_INCLUDE_DIRS
5+
# - TurboJPEG_LIBRARIES
26

3-
find_path(TurboJPEG_INCLUDE_DIR turbojpeg.h DOC "Found TurboJPEG include directory)" PATHS "${CMAKE_SOURCE_DIR}/../../depends/libjpeg_turbo/include" "C:/libjpeg-turbo64/include" "/opt/libjpeg-turbo/include" "$ENV{TurboJPEG_ROOT}/include")
7+
FIND_PATH(TurboJPEG_INCLUDE_DIRS
8+
turbojpeg.h
9+
DOC "Found TurboJPEG include directory"
10+
PATHS
11+
"${DEPENDS_DIR}/libjpeg_turbo"
12+
"${DEPENDS_DIR}/libjpeg-turbo64"
13+
"/usr/local/opt/jpeg-turbo" # homebrew
14+
"/opt/local" # macports
15+
"C:/libjpeg-turbo64"
16+
"/opt/libjpeg-turbo"
17+
ENV TurboJPEG_ROOT
18+
PATH_SUFFIXES
19+
include
20+
)
421

5-
if(TurboJPEG_INCLUDE_DIR STREQUAL "TurboJPEG_INCLUDE_DIR-NOTFOUND")
6-
message(FATAL_ERROR "Could not find turbojpeg.h - Try define TurboJPEG_ROOT as a system variable.")
7-
else()
8-
message(STATUS "TurboJPEG_INCLUDE_DIR = ${TurboJPEG_INCLUDE_DIR}")
9-
endif()
10-
11-
find_library(TurboJPEG_LIBRARY NAMES turbojpeg.lib libturbojpeg.so libturbojpeg.so.0 libturbojpeg.a DOC "Found TurboJPEG library path" PATHS "${CMAKE_SOURCE_DIR}/../../depends/libjpeg_turbo/lib" "C:/libjpeg-turbo64/lib" "$ENV{TurboJPEG_ROOT}/lib" "/opt/libjpeg-turbo/lib64" "/opt/libjpeg-turbo/lib")
22+
FIND_LIBRARY(TurboJPEG_LIBRARIES
23+
NAMES libturbojpeg.so.0 turbojpeg
24+
DOC "Found TurboJPEG library path"
25+
PATHS
26+
"${DEPENDS_DIR}/libjpeg_turbo"
27+
"${DEPENDS_DIR}/libjpeg-turbo64"
28+
"/usr/local/opt/jpeg-turbo" # homebrew
29+
"/opt/local" # macports
30+
"C:/libjpeg-turbo64"
31+
"/opt/libjpeg-turbo"
32+
ENV TurboJPEG_ROOT
33+
PATH_SUFFIXES
34+
lib
35+
lib64
36+
)
1237

13-
if(WIN32)
38+
INCLUDE(CheckCSourceCompiles)
39+
if(MSVC)
1440
set(CMAKE_REQUIRED_DEFINITIONS -MT)
1541
endif()
16-
set(CMAKE_REQUIRED_INCLUDES ${TurboJPEG_INCLUDE_DIR})
17-
set(CMAKE_REQUIRED_LIBRARIES ${TurboJPEG_LIBRARY})
42+
set(CMAKE_REQUIRED_INCLUDES ${TurboJPEG_INCLUDE_DIRS})
43+
set(CMAKE_REQUIRED_LIBRARIES ${TurboJPEG_LIBRARIES})
1844
check_c_source_compiles("#include <turbojpeg.h>\nint main(void) { tjhandle h=tjInitCompress(); return 0; }" TURBOJPEG_WORKS)
1945
set(CMAKE_REQUIRED_DEFINITIONS)
2046
set(CMAKE_REQUIRED_INCLUDES)
2147
set(CMAKE_REQUIRED_LIBRARIES)
22-
if(NOT TURBOJPEG_WORKS)
23-
message(FATAL_ERROR "Could not link with TurboJPEG library ${TurboJPEG_LIBRARY}. If it is installed in a different place, then set TurboJPEG_LIBRARY accordingly.")
24-
endif()
2548

26-
message(STATUS "TurboJPEG_LIBRARY = ${TurboJPEG_LIBRARY}")
49+
INCLUDE(FindPackageHandleStandardArgs)
50+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TurboJPEG DEFAULT_MSG TurboJPEG_LIBRARIES TurboJPEG_INCLUDE_DIRS TURBOJPEG_WORKS)

0 commit comments

Comments
 (0)