diff --git a/examples/protonect/CMakeLists.txt b/examples/protonect/CMakeLists.txt index b56c89c49..915f075f9 100644 --- a/examples/protonect/CMakeLists.txt +++ b/examples/protonect/CMakeLists.txt @@ -37,10 +37,18 @@ SET(EXECUTABLE_OUTPUT_PATH ${MY_DIR}/bin) #set the default path for built libraries to the "lib" directory SET(LIBRARY_OUTPUT_PATH ${MY_DIR}/lib) +IF(WIN32) + SET(USE_STATIC_LIBS TRUE CACHE BOOL "Prefer static libraries") + IF(BUILD_SHARED_LIBS) + SET(USE_STATIC_LIBS FALSE) + ENDIF() +ENDIF() + # dependencies -FIND_PACKAGE(PkgConfig) # try find PKGConfig as it will be used if found +FIND_PACKAGE(PkgConfig QUIET) # try find PKGConfig as it will be used if found FIND_PACKAGE(LibUSB REQUIRED) -FIND_PACKAGE(OpenCV REQUIRED) +SET(OpenCV_STATIC ${USE_STATIC_LIBS}) +FIND_PACKAGE(OpenCV REQUIRED core highgui) FIND_PACKAGE(TurboJPEG REQUIRED) #does not provide a package-config file # Add includes @@ -103,7 +111,6 @@ SET(SOURCES ) SET(LIBRARIES - ${OpenCV_LIBS} ${OpenCV_LIBRARIES} ${LibUSB_LIBRARIES} ${TurboJPEG_LIBRARIES} @@ -171,29 +178,45 @@ CONFIGURE_FILE("${MY_DIR}/include/libfreenect2/config.h.in" "${MY_DIR}/include/l GENERATE_RESOURCES(${RESOURCES_INC_FILE} ${MY_DIR} ${RESOURCES}) ADD_DEFINITIONS(-DRESOURCES_INC) +IF(USE_STATIC_LIBS) + ADD_LIBRARY(freenect2static STATIC ${SOURCES}) + set_target_properties(freenect2static PROPERTIES COMPILE_FLAGS "/MT") +ELSE(USE_STATIC_LIBS) ADD_LIBRARY(freenect2 OBJECT ${SOURCES}) set_target_properties(freenect2 PROPERTIES POSITION_INDEPENDENT_CODE 1) ADD_LIBRARY(freenect2shared SHARED $) ADD_LIBRARY(freenect2static STATIC $) +TARGET_LINK_LIBRARIES(freenect2shared ${LIBRARIES}) set_target_properties(freenect2shared PROPERTIES OUTPUT_NAME freenect2) +ENDIF(USE_STATIC_LIBS) set_target_properties(freenect2static PROPERTIES OUTPUT_NAME freenect2) IF(MSVC) set_target_properties(freenect2static PROPERTIES OUTPUT_NAME freenect2static) ENDIF() MESSAGE("Linking with these libraries: ${LIBRARIES}") -TARGET_LINK_LIBRARIES(freenect2shared ${LIBRARIES}) ADD_EXECUTABLE(Protonect Protonect.cpp ) - + +IF(USE_STATIC_LIBS) + set_target_properties(Protonect PROPERTIES COMPILE_FLAGS "/MT") + TARGET_LINK_LIBRARIES(Protonect + freenect2static + ${LIBRARIES} + ) +ELSE(USE_STATIC_LIBS) TARGET_LINK_LIBRARIES(Protonect freenect2shared ) +ENDIF(USE_STATIC_LIBS) CONFIGURE_FILE(freenect2.cmake.in "${PROJECT_BINARY_DIR}/freenect2Config.cmake" @ONLY) +INSTALL(TARGETS Protonect DESTINATION bin) +IF(NOT USE_STATIC_LIBS) INSTALL(TARGETS freenect2shared DESTINATION lib) +ENDIF() INSTALL(TARGETS freenect2static DESTINATION lib) INSTALL(DIRECTORY "${MY_DIR}/include/" DESTINATION include PATTERN "*.in" EXCLUDE) IF(LIBFREENECT2_THREADING_TINYTHREAD) diff --git a/examples/protonect/cmake_modules/FindGLFW3.cmake b/examples/protonect/cmake_modules/FindGLFW3.cmake index 41a42ea9e..2fc8b3327 100644 --- a/examples/protonect/cmake_modules/FindGLFW3.cmake +++ b/examples/protonect/cmake_modules/FindGLFW3.cmake @@ -37,8 +37,13 @@ ELSEIF(MSVC) SET(_SUFFIX lib-vc2013) ENDIF() +SET(LIB_NAME glfw3dll) +IF(USE_STATIC_LIBS) + SET(LIB_NAME glfw3) +ENDIF() + FIND_LIBRARY(GLFW3_LIBRARIES - NAMES glfw3dll glfw3 + NAMES ${LIB_NAME} PATHS "${DEPENDS_DIR}/glfw" "$ENV{ProgramW6432}/glfw" diff --git a/examples/protonect/cmake_modules/FindLibUSB.cmake b/examples/protonect/cmake_modules/FindLibUSB.cmake index f3e822b6b..45912df94 100644 --- a/examples/protonect/cmake_modules/FindLibUSB.cmake +++ b/examples/protonect/cmake_modules/FindLibUSB.cmake @@ -24,6 +24,22 @@ FIND_PATH(LibUSB_INCLUDE_DIRS libusb ) +SET(SUFFIXES + x64/Release/dll + x64/Debug/dll + Win32/Release/dll + Win32/Debug/dll + MS64 +) +IF(USE_STATIC_LIBS) + SET(SUFFIXES + x64/Release/lib + x64/Debug/lib + Win32/Release/lib + Win32/Debug/lib + ) +ENDIF() + FIND_LIBRARY(LibUSB_LIBRARIES NAMES libusb-1.0 PATHS @@ -31,11 +47,7 @@ FIND_LIBRARY(LibUSB_LIBRARIES "${DEPENDS_DIR}/libusbx" ENV LibUSB_ROOT PATH_SUFFIXES - x64/Release/dll - x64/Debug/dll - Win32/Release/dll - Win32/Debug/dll - MS64 + ${SUFFIXES} ) INCLUDE(FindPackageHandleStandardArgs) diff --git a/examples/protonect/cmake_modules/FindOpenCL.cmake b/examples/protonect/cmake_modules/FindOpenCL.cmake index a062c9e21..06a901952 100644 --- a/examples/protonect/cmake_modules/FindOpenCL.cmake +++ b/examples/protonect/cmake_modules/FindOpenCL.cmake @@ -31,14 +31,14 @@ ELSE (APPLE) # The AMD SDK currently installs both x86 and x86_64 libraries # This is only a hack to find out architecture IF( ${CMAKE_SIZEOF_VOID_P} EQUAL 8 ) - FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" PATH_SUFFIXES "/lib/x86_64" "/lib/x64") + FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" "$ENV{CUDA_PATH}" PATH_SUFFIXES "/lib/x86_64" "/lib/x64") ELSE (${CMAKE_SIZEOF_VOID_P} EQUAL 8) - FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" PATH_SUFFIXES "/lib/x86") + FIND_LIBRARY(OPENCL_LIBRARIES OpenCL.lib PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" "$ENV{CUDA_PATH}" PATH_SUFFIXES "/lib/x86") ENDIF( ${CMAKE_SIZEOF_VOID_P} EQUAL 8 ) # On Win32 search relative to the library - FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" PATH_SUFFIXES "/include") - FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" PATH_SUFFIXES "/include") + FIND_PATH(OPENCL_INCLUDE_DIRS CL/cl.h PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" "$ENV{CUDA_PATH}" PATH_SUFFIXES "/include") + FIND_PATH(_OPENCL_CPP_INCLUDE_DIRS CL/cl.hpp PATHS "$ENV{ATISTREAMSDKROOT}" "$ENV{AMDAPPSDKROOT}" "$ENV{INTELOCLSDKROOT}" "$ENV{CUDA_PATH}" PATH_SUFFIXES "/include") ELSE (WIN32) diff --git a/examples/protonect/cmake_modules/FindTurboJPEG.cmake b/examples/protonect/cmake_modules/FindTurboJPEG.cmake index a0fcc5748..c04562d80 100644 --- a/examples/protonect/cmake_modules/FindTurboJPEG.cmake +++ b/examples/protonect/cmake_modules/FindTurboJPEG.cmake @@ -19,8 +19,13 @@ FIND_PATH(TurboJPEG_INCLUDE_DIRS include ) +SET(LIB_NAME turbojpeg) +IF(USE_STATIC_LIBS) + SET(LIB_NAME turbojpeg-static) +ENDIF() + FIND_LIBRARY(TurboJPEG_LIBRARIES - NAMES libturbojpeg.so.0 turbojpeg + NAMES libturbojpeg.so.0 ${LIB_NAME} DOC "Found TurboJPEG library path" PATHS "${DEPENDS_DIR}/libjpeg_turbo" diff --git a/examples/protonect/src/opencl_depth_packet_processor.cpp b/examples/protonect/src/opencl_depth_packet_processor.cpp index cc13587ab..4c4cc1d5e 100644 --- a/examples/protonect/src/opencl_depth_packet_processor.cpp +++ b/examples/protonect/src/opencl_depth_packet_processor.cpp @@ -247,9 +247,11 @@ class OpenCLDepthPacketProcessorImpl case CL_DEVICE_TYPE_ACCELERATOR: devType = "ACCELERATOR"; break; +#ifdef CL_DEVICE_TYPE_CUSTOM case CL_DEVICE_TYPE_CUSTOM: devType = "CUSTOM"; break; +#endif default: devType = "UNKNOWN"; } @@ -329,9 +331,11 @@ class OpenCLDepthPacketProcessorImpl case CL_DEVICE_TYPE_ACCELERATOR: devType = "ACCELERATOR"; break; +#ifdef CL_DEVICE_TYPE_CUSTOM case CL_DEVICE_TYPE_CUSTOM: devType = "CUSTOM"; break; +#endif default: devType = "UNKNOWN"; }