Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion depends/install_libusb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ git clone https://github.com/libusb/libusb.git $LIBUSB_SOURCE_DIR
cd $LIBUSB_SOURCE_DIR
git checkout 51b10191033ca3a3819dcf46e1da2465b99497c2
./bootstrap.sh
./configure --prefix=$LIBUSB_INSTALL_DIR
CFLAGS=-fPIC ./configure --prefix=$LIBUSB_INSTALL_DIR
make && make install

cd $DEPENDS_DIR
Expand Down
33 changes: 28 additions & 5 deletions examples/protonect/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,15 @@ IF(ENABLE_CXX11)
ENDIF()
ENDIF(ENABLE_CXX11)

INCLUDE(CheckCXXCompilerFlag)
SET(CMAKE_REQUIRED_FLAGS "-Wl,--exclude-libs,ALL")
CHECK_CXX_COMPILER_FLAG("" _EXCLUDE_LIBS)
SET(LINKER_EXCLUDE_LIBS ${_EXCLUDE_LIBS} CACHE BOOL "Linker supports --exclude-libs")
SET(CMAKE_REQUIRED_FLAGS "-Wl,-exported_symbols_list,/dev/null")
CHECK_CXX_COMPILER_FLAG("" _EXPORTED_SYMBOLS_LIST)
SET(LINKER_EXPORTED_SYMBOLS_LIST ${_EXPORTED_SYMBOLS_LIST} CACHE BOOL "Linker supports -exported_symbols_list")
SET(CMAKE_REQUIRED_FLAGS)

# additional cmake modules
LIST(APPEND CMAKE_MODULE_PATH ${MY_DIR}/cmake_modules)

Expand Down Expand Up @@ -52,8 +61,6 @@ INCLUDE_DIRECTORIES(
${TurboJPEG_INCLUDE_DIRS}
)

LINK_DIRECTORIES(${LibUSB_LIBRARY_DIRS})

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

SET(SOURCES
Expand Down Expand Up @@ -105,7 +112,8 @@ SET(SOURCES
SET(LIBRARIES
${OpenCV_LIBS}
${OpenCV_LIBRARIES}
${LibUSB_LIBRARIES}
${LibUSB_STATIC_LIBRARIES}
${LibUSB_STATIC_LDFLAGS_OTHER} # -Wl,-framework,XYZ on Mac OSX
${TurboJPEG_LIBRARIES}
${LIBFREENECT2_THREADING_LIBRARIES}
)
Expand Down Expand Up @@ -165,8 +173,6 @@ IF(ENABLE_OPENCL)
ENDIF(OPENCL_FOUND)
ENDIF(ENABLE_OPENCL)

SET(CMAKE_INSTALL_RPATH ${LibUSB_LIBDIR})

CONFIGURE_FILE("${MY_DIR}/include/libfreenect2/config.h.in" "${MY_DIR}/include/libfreenect2/config.h" @ONLY)
GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES})

Expand All @@ -176,6 +182,23 @@ set_target_properties(freenect2 PROPERTIES POSITION_INDEPENDENT_CODE 1)
ADD_LIBRARY(freenect2shared SHARED $<TARGET_OBJECTS:freenect2>)
ADD_LIBRARY(freenect2static STATIC $<TARGET_OBJECTS:freenect2>)
set_target_properties(freenect2shared PROPERTIES OUTPUT_NAME freenect2)

IF(LINKER_EXCLUDE_LIBS)
get_filename_component(LibUSB_STATIC_ARCHIVE_NAME ${LibUSB_STATIC_ARCHIVE} NAME)
SET_TARGET_PROPERTIES(freenect2shared PROPERTIES LINK_FLAGS "-Wl,--exclude-libs,${LibUSB_STATIC_ARCHIVE_NAME}")
ELSEIF(LINKER_EXPORTED_SYMBOLS_LIST)
ADD_LIBRARY(testsym SHARED $<TARGET_OBJECTS:freenect2>)
TARGET_LINK_LIBRARIES(testsym ${LIBRARIES})
ADD_CUSTOM_TARGET(gensym
COMMAND nm -gj $<TARGET_FILE:testsym> | grep -v ^_libusb >${CMAKE_BINARY_DIR}/nolibusb.sym
DEPENDS testsym
)
ADD_DEPENDENCIES(freenect2shared gensym)
SET_TARGET_PROPERTIES(freenect2shared PROPERTIES LINK_FLAGS "-Wl,-exported_symbols_list,${CMAKE_BINARY_DIR}/nolibusb.sym")
ELSE()
MESSAGE(FATAL_ERROR "Linker has no symbol hiding support")
ENDIF()

set_target_properties(freenect2static PROPERTIES OUTPUT_NAME freenect2)
IF(MSVC)
set_target_properties(freenect2static PROPERTIES OUTPUT_NAME freenect2static)
Expand Down
11 changes: 11 additions & 0 deletions examples/protonect/cmake_modules/FindLibUSB.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,17 @@
IF(PKG_CONFIG_FOUND)
SET(ENV{PKG_CONFIG_PATH} "${DEPENDS_DIR}/libusb/lib/pkgconfig")
PKG_CHECK_MODULES(LibUSB libusb-1.0)

# expand the full path of libusb-1.0.a in LibUSB_STATIC_LIBRARIES
LIST(REMOVE_ITEM LibUSB_STATIC_LIBRARIES ${LibUSB_LIBRARIES})
LIST(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 ".a")
FIND_LIBRARY(LibUSB_STATIC_ARCHIVE
NAMES ${LibUSB_LIBRARIES}
PATHS ${LibUSB_LIBRARY_DIRS} NO_DEFAULT_PATH
)
LIST(REMOVE_AT CMAKE_FIND_LIBRARY_SUFFIXES 0)
LIST(INSERT LibUSB_STATIC_LIBRARIES 0 ${LibUSB_STATIC_ARCHIVE})

RETURN()
ENDIF()

Expand Down