From 4b07e7a2f9ee7eb11d6cc469a2bcd4fc2fc1f607 Mon Sep 17 00:00:00 2001 From: Raaj Date: Fri, 1 Jun 2018 18:30:50 -0400 Subject: [PATCH] Fix OpenCL bug + initial Mac CPU version + OpenCL min version from 200 to 120 (#624) --- .gitignore | 1 + 3rdparty/osx/install_deps.sh | 11 ++++ CMakeLists.txt | 59 ++++++++++++------- cmake/Cuda.cmake | 12 ++-- cmake/Modules/FindCuDNN.cmake | 4 +- cmake/Modules/FindGlog.cmake | 8 +-- doc/installation.md | 8 ++- examples/CMakeLists.txt | 4 +- examples/calibration/CMakeLists.txt | 2 +- examples/openpose/CMakeLists.txt | 2 +- examples/tests/CMakeLists.txt | 2 +- examples/tutorial_add_module/CMakeLists.txt | 2 +- examples/tutorial_pose/CMakeLists.txt | 2 +- examples/tutorial_thread/CMakeLists.txt | 2 +- examples/tutorial_wrapper/CMakeLists.txt | 2 +- include/openpose/gpu/opencl.hcl | 9 ++- src/openpose/3d/CMakeLists.txt | 8 +-- src/openpose/CMakeLists.txt | 12 ++-- src/openpose/calibration/CMakeLists.txt | 8 ++- .../calibration/cameraParameterEstimation.cpp | 4 +- src/openpose/core/CMakeLists.txt | 14 ++++- src/openpose/face/CMakeLists.txt | 8 ++- src/openpose/filestream/CMakeLists.txt | 6 +- src/openpose/gpu/CMakeLists.txt | 8 +-- src/openpose/gpu/opencl.cpp | 24 +++++++- src/openpose/gui/CMakeLists.txt | 4 +- src/openpose/hand/CMakeLists.txt | 8 ++- src/openpose/net/CMakeLists.txt | 8 +-- src/openpose/net/nmsBaseCL.cpp | 18 +++--- src/openpose/net/resizeAndMergeBaseCL.cpp | 2 +- src/openpose/pose/CMakeLists.txt | 8 ++- src/openpose/pose/poseRenderer.cpp | 2 +- src/openpose/producer/CMakeLists.txt | 4 +- src/openpose/thread/CMakeLists.txt | 6 +- src/openpose/tracking/CMakeLists.txt | 6 +- src/openpose/utilities/CMakeLists.txt | 6 +- src/openpose/utilities/fileSystem.cpp | 8 +-- src/openpose/wrapper/CMakeLists.txt | 4 +- 38 files changed, 192 insertions(+), 114 deletions(-) create mode 100755 3rdparty/osx/install_deps.sh diff --git a/.gitignore b/.gitignore index 35ccdd41..9112d571 100644 --- a/.gitignore +++ b/.gitignore @@ -57,6 +57,7 @@ MANIFEST-* # OSX dir files .DS_Store +._.DS_Store # Vim files cscope.* diff --git a/3rdparty/osx/install_deps.sh b/3rdparty/osx/install_deps.sh new file mode 100755 index 00000000..713dc669 --- /dev/null +++ b/3rdparty/osx/install_deps.sh @@ -0,0 +1,11 @@ +echo "This requires brew" +brew install openblas +brew install -vd snappy leveldb gflags glog szip lmdb +# need the homebrew science source for OpenCV and hdf5 +brew tap homebrew/science +brew install hdf5 opencv +# with Python pycaffe needs dependencies built from source +brew install --build-from-source --with-python -vd protobuf +brew install --build-from-source -vd boost boost-python +# without Python the usual installation suffices +brew install protobuf boost diff --git a/CMakeLists.txt b/CMakeLists.txt index 9a3266be..2b703b8d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,10 @@ set(OpenPose_VERSION_PATCH 0) set(OpenPose_VERSION ${OpenPose_VERSION_MAJOR}.${OpenPose_VERSION_MINOR}.${OpenPose_VERSION_PATCH}) +### OS-DEPENDENT FLAGS +set(CMAKE_MACOSX_RPATH 1) + + ### CMAKE HEADERS if (${CMAKE_VERSION} VERSION_GREATER 3.0.0) cmake_policy(SET CMP0048 NEW) @@ -15,12 +19,6 @@ endif (${CMAKE_VERSION} VERSION_GREATER 3.0.0) cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR) # min. cmake version recommended by Caffe -### FIND THE OS -if (APPLE) # OS is Apple - message(FATAL_ERROR "Apple OS is not currently supported.") -endif (APPLE) - - ### Extra functionality include(cmake/Utils.cmake) @@ -52,10 +50,14 @@ if (WIN32) string(REPLACE "/MDd" "/MD" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") -elseif (UNIX AND NOT APPLE) +elseif (UNIX) # Turn on C++11 add_definitions(-std=c++11) set(CMAKE_CXX_FLAGS_RELEASE "-O3") +elseif (APPLE) + # Turn on C++11 + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") endif (WIN32) # C++ additional flags @@ -232,10 +234,20 @@ option(BUILD_SHARED_LIBS "Build as shared lib" ON) option(PROFILER_ENABLED "If enabled, OpenPose will be able to print out speed information at runtime." OFF) # Threads - Pthread -if (${GPU_MODE} MATCHES "OPENCL" OR (UNIX AND NOT APPLE)) +if (${GPU_MODE} MATCHES "OPENCL" OR (UNIX OR APPLE)) unset(CMAKE_THREAD_LIBS_INIT CACHE) find_package(Threads) -endif (${GPU_MODE} MATCHES "OPENCL" OR (UNIX AND NOT APPLE)) +endif (${GPU_MODE} MATCHES "OPENCL" OR (UNIX OR APPLE)) + +# Caffe OpenCL Boost Issue +if (APPLE) + if (${GPU_MODE} MATCHES "OPENCL") + unset(Boost_SYSTEM_LIBRARY CACHE) + find_package(Boost COMPONENTS system REQUIRED) + else () + set(Boost_SYSTEM_LIBRARY "") + endif () +endif () ### FIND REQUIRED PACKAGES list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") @@ -289,7 +301,7 @@ else (${WITH_EIGEN} MATCHES "NONE") endif (${WITH_EIGEN} MATCHES "BUILD") endif (${WITH_EIGEN} MATCHES "NONE") -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") include(cmake/Cuda.cmake) find_package(CuDNN) @@ -365,7 +377,7 @@ if (UNIX AND NOT APPLE) sudo apt-get install libopencv-dev") endif (NOT OpenCV_FOUND) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) if (WIN32) @@ -472,7 +484,7 @@ endif (WIN32) ### CAFFE -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${DL_FRAMEWORK} MATCHES "CAFFE") @@ -609,7 +621,7 @@ if (UNIX AND NOT APPLE) endif (${DL_FRAMEWORK} MATCHES "CAFFE") -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) ### PROJECT INCLUDES # Specify the include directories @@ -625,6 +637,11 @@ if (NOT ${WITH_EIGEN} MATCHES "NONE") ${EIGEN3_INCLUDE_DIRS}) endif (NOT ${WITH_EIGEN} MATCHES "NONE") +if (APPLE) + include_directories( + "/usr/local/opt/openblas/include") +endif (APPLE) + if (USE_MKL) include_directories( "${MKL_PATH}/include/") @@ -662,13 +679,13 @@ endif (WIN32) ### COLLECT ALL 3RD-PARTY LIBRARIES TO BE LINKED AGAINST set(OpenPose_3rdparty_libraries ${OpenCV_LIBS} ${GLOG_LIBRARY}) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${GLOG_LIBRARY}) elseif (WIN32) set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} debug ${GFLAGS_LIBRARY_DEBUG} optimized ${GFLAGS_LIBRARY_RELEASE} debug ${GLOG_LIBRARY_DEBUG} optimized ${GLOG_LIBRARY_RELEASE}) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) # Deep net Framework if (${DL_FRAMEWORK} MATCHES "CAFFE") set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${Caffe_LIBS} ${GFLAGS_LIBRARY}) @@ -695,9 +712,9 @@ if (WITH_FLIR_CAMERA) set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${SPINNAKER_LIB}) endif (WITH_FLIR_CAMERA) # Pthread -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) set(OpenPose_3rdparty_libraries ${OpenPose_3rdparty_libraries} pthread) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) set(examples_3rdparty_libraries ${OpenPose_3rdparty_libraries} ${GFLAGS_LIBRARY}) @@ -731,7 +748,7 @@ message(STATUS "Models Downloaded.") ### GENERATE DOCUMENTATION -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (BUILD_DOCS) find_package(Doxygen) @@ -750,11 +767,11 @@ if (UNIX AND NOT APPLE) endif (DOXYGEN_FOUND) endif (BUILD_DOCS) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) ### INSTALL -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (Caffe_FOUND) # Install the headers install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/openpose DESTINATION include) @@ -781,4 +798,4 @@ if (UNIX AND NOT APPLE) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) endif (Caffe_FOUND) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/cmake/Cuda.cmake b/cmake/Cuda.cmake index a922038f..a6ca958b 100644 --- a/cmake/Cuda.cmake +++ b/cmake/Cuda.cmake @@ -64,7 +64,7 @@ function(op_detect_installed_gpus out_variable) if (NOT CUDA_gpu_detect_output) message(STATUS "Automatic GPU detection failed. Building for all known architectures.") set(${out_variable} ${Caffe_known_gpu_archs} PARENT_SCOPE) - else() + else () set(${out_variable} ${CUDA_gpu_detect_output} PARENT_SCOPE) endif () endfunction() @@ -98,7 +98,7 @@ function(op_select_nvcc_arch_flags out_variable) set(CUDA_ARCH_BIN ${Caffe_known_gpu_archs} CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") set(CUDA_ARCH_PTX "50" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") # mark_as_advanced(CUDA_ARCH_BIN CUDA_ARCH_PTX) - else() + else () unset(CUDA_ARCH_BIN CACHE) unset(CUDA_ARCH_PTX CACHE) endif () @@ -115,7 +115,7 @@ function(op_select_nvcc_arch_flags out_variable) set(__cuda_arch_bin ${Caffe_known_gpu_archs}) elseif (${CUDA_ARCH} STREQUAL "Auto") op_detect_installed_gpus(__cuda_arch_bin) - else() # (${CUDA_ARCH} STREQUAL "Manual") + else () # (${CUDA_ARCH} STREQUAL "Manual") set(__cuda_arch_bin ${CUDA_ARCH_BIN}) endif () @@ -135,7 +135,7 @@ function(op_select_nvcc_arch_flags out_variable) # User explicitly specified PTX for the concrete BIN list(APPEND __nvcc_flags -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1}) list(APPEND __nvcc_archs_readable sm_${CMAKE_MATCH_1}) - else() + else () # User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN list(APPEND __nvcc_flags -gencode arch=compute_${__arch},code=sm_${__arch}) list(APPEND __nvcc_archs_readable sm_${__arch}) @@ -199,7 +199,7 @@ function(detect_cuDNN) # dynamic libs have different suffix in mac and linux if (APPLE) set(CUDNN_LIB_NAME "libcudnn.dylib") - else() + else () set(CUDNN_LIB_NAME "libcudnn.so") endif () @@ -230,7 +230,7 @@ function(detect_cuDNN) if (NOT CUDNN_VERSION_MAJOR) set(CUDNN_VERSION "???") - else() + else () set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}") endif () diff --git a/cmake/Modules/FindCuDNN.cmake b/cmake/Modules/FindCuDNN.cmake index 104eafa8..82ee365a 100644 --- a/cmake/Modules/FindCuDNN.cmake +++ b/cmake/Modules/FindCuDNN.cmake @@ -30,9 +30,9 @@ if(CUDNN_INCLUDE AND CUDNN_LIBRARY) string(REGEX REPLACE "define CUDNN_PATCHLEVEL * +([0-9]+)" "\\1" CUDNN_VERSION_PATCH "${CUDNN_VERSION_PATCH}") - if(NOT CUDNN_VERSION_MAJOR) + if (NOT CUDNN_VERSION_MAJOR) set(CUDNN_VERSION "???") - else() + else () set(CUDNN_VERSION "${CUDNN_VERSION_MAJOR}.${CUDNN_VERSION_MINOR}.${CUDNN_VERSION_PATCH}") endif() diff --git a/cmake/Modules/FindGlog.cmake b/cmake/Modules/FindGlog.cmake index 99abbe47..79b8e232 100644 --- a/cmake/Modules/FindGlog.cmake +++ b/cmake/Modules/FindGlog.cmake @@ -13,15 +13,15 @@ include(FindPackageHandleStandardArgs) set(GLOG_ROOT_DIR "" CACHE PATH "Folder contains Google glog") -if(WIN32) +if (WIN32) find_path(GLOG_INCLUDE_DIR glog/logging.h PATHS ${GLOG_ROOT_DIR}/src/windows) -else() +else () find_path(GLOG_INCLUDE_DIR glog/logging.h PATHS ${GLOG_ROOT_DIR}) endif() -if(MSVC) +if (MSVC) find_library(GLOG_LIBRARY_RELEASE libglog_static PATHS ${GLOG_ROOT_DIR} PATH_SUFFIXES Release) @@ -31,7 +31,7 @@ if(MSVC) PATH_SUFFIXES Debug) set(GLOG_LIBRARY optimized ${GLOG_LIBRARY_RELEASE} debug ${GLOG_LIBRARY_DEBUG}) -else() +else () find_library(GLOG_LIBRARY glog PATHS ${GLOG_ROOT_DIR} PATH_SUFFIXES lib lib64) diff --git a/doc/installation.md b/doc/installation.md index fdd1da63..6dbd1c89 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -32,8 +32,9 @@ This installation section is only intended if you plan to modify the OpenPose co ## Operating Systems - **Ubuntu** 14 and 16. - **Windows** 8 and 10. +- **Mac / OSX** Mavericks and above (only CPU version tested). If you want to test our Mac GPU version, email gines@cmu.edu. - **Nvidia Jetson TX2**, installation instructions in [doc/installation_jetson_tx2.md](./installation_jetson_tx2.md). -- OpenPose has also been used on **Windows 7**, **Mac**, **CentOS**, and **Nvidia Jetson (TK1 and TX1)** embedded systems. However, we do not officially support them at the moment. +- OpenPose has also been used on **Windows 7**, **CentOS**, and **Nvidia Jetson (TK1 and TX1)** embedded systems. However, we do not officially support them at the moment. @@ -120,7 +121,10 @@ The instructions in this section describe the steps to build OpenPose using CMak - [Caffe](http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe_2018_01_18.zip): Unzip as `3rdparty/windows/caffe/`. - [Caffe dependencies](http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/caffe3rdparty_2017_07_14.zip): Unzip as `3rdparty/windows/caffe3rdparty/`. - [OpenCV 3.1](http://posefs1.perception.cs.cmu.edu/OpenPose/3rdparty/windows/opencv_310.zip): Unzip as `3rdparty/windows/opencv/`. -5. **Eigen prerequisite**: +6. OSX - **Caffe, OpenCV, and Caffe prerequisites**: + - Install deps by running `sudo bash 3rdparty/osx/install_deps.sh` on your terminal. + - Current OSX has only been tested with the CPU Version, and hence must be compiled with the `-DGPU_MODE=CPU_ONLY` flag. +7. **Eigen prerequisite**: - Note: This step is optional, only required for some specific extra functionality, such as extrinsic camera calibration. - If you enable the `WITH_EIGEN` flag when running CMake. You can either: 1. Do not do anything if you set the `WITH_EIGEN` flag to `BUILD`, CMake will automatically download Eigen. Alternatively, you might prefer to download it manually: diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 038f862e..083738a7 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -4,6 +4,6 @@ add_subdirectory(tutorial_add_module) add_subdirectory(tutorial_pose) add_subdirectory(tutorial_thread) add_subdirectory(tutorial_wrapper) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_subdirectory(tests) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/examples/calibration/CMakeLists.txt b/examples/calibration/CMakeLists.txt index 7873cef4..963f4bce 100644 --- a/examples/calibration/CMakeLists.txt +++ b/examples/calibration/CMakeLists.txt @@ -5,7 +5,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES}) get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE) - if (UNIX AND NOT APPLE) + if (UNIX OR APPLE) set(EXE_NAME "${SOURCE_NAME}.bin") elseif (WIN32) set(EXE_NAME "Calibration") diff --git a/examples/openpose/CMakeLists.txt b/examples/openpose/CMakeLists.txt index 7c35b8f1..5fa7691d 100644 --- a/examples/openpose/CMakeLists.txt +++ b/examples/openpose/CMakeLists.txt @@ -5,7 +5,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES}) get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE) - if (UNIX AND NOT APPLE) + if (UNIX OR APPLE) set(EXE_NAME "${SOURCE_NAME}.bin") elseif (WIN32) set(EXE_NAME "OpenPoseDemo") diff --git a/examples/tests/CMakeLists.txt b/examples/tests/CMakeLists.txt index 793ed267..748b36d3 100644 --- a/examples/tests/CMakeLists.txt +++ b/examples/tests/CMakeLists.txt @@ -6,7 +6,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES}) get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE) - if (UNIX AND NOT APPLE) + if (UNIX OR APPLE) set(EXE_NAME "${SOURCE_NAME}.bin") elseif (WIN32) set(EXE_NAME "${SOURCE_NAME}") diff --git a/examples/tutorial_add_module/CMakeLists.txt b/examples/tutorial_add_module/CMakeLists.txt index 29bf3223..9388ab02 100644 --- a/examples/tutorial_add_module/CMakeLists.txt +++ b/examples/tutorial_add_module/CMakeLists.txt @@ -7,7 +7,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES}) get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE) - if (UNIX AND NOT APPLE) + if (UNIX OR APPLE) set(EXE_NAME "${SOURCE_NAME}.bin") elseif (WIN32) set(EXE_NAME "${SOURCE_NAME}") diff --git a/examples/tutorial_pose/CMakeLists.txt b/examples/tutorial_pose/CMakeLists.txt index 1398ec3a..b78e83b3 100644 --- a/examples/tutorial_pose/CMakeLists.txt +++ b/examples/tutorial_pose/CMakeLists.txt @@ -6,7 +6,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES}) get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE) - if (UNIX AND NOT APPLE) + if (UNIX OR APPLE) set(EXE_NAME "${SOURCE_NAME}.bin") elseif (WIN32) set(EXE_NAME "${SOURCE_NAME}") diff --git a/examples/tutorial_thread/CMakeLists.txt b/examples/tutorial_thread/CMakeLists.txt index 717fc663..f905383f 100644 --- a/examples/tutorial_thread/CMakeLists.txt +++ b/examples/tutorial_thread/CMakeLists.txt @@ -8,7 +8,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES}) get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE) - if (UNIX AND NOT APPLE) + if (UNIX OR APPLE) set(EXE_NAME "${SOURCE_NAME}.bin") elseif (WIN32) set(EXE_NAME "${SOURCE_NAME}") diff --git a/examples/tutorial_wrapper/CMakeLists.txt b/examples/tutorial_wrapper/CMakeLists.txt index a2e09353..db1095b1 100644 --- a/examples/tutorial_wrapper/CMakeLists.txt +++ b/examples/tutorial_wrapper/CMakeLists.txt @@ -12,7 +12,7 @@ foreach(EXAMPLE_FILE ${EXAMPLE_FILES}) get_filename_component(SOURCE_NAME ${EXAMPLE_FILE} NAME_WE) - if (UNIX AND NOT APPLE) + if (UNIX OR APPLE) set(EXE_NAME "${SOURCE_NAME}.bin") elseif (WIN32) set(EXE_NAME "${SOURCE_NAME}") diff --git a/include/openpose/gpu/opencl.hcl b/include/openpose/gpu/opencl.hcl index d4e548d8..47b31577 100644 --- a/include/openpose/gpu/opencl.hcl +++ b/include/openpose/gpu/opencl.hcl @@ -5,13 +5,16 @@ #define MULTI_LINE_STRING(ARG) #ARG -#define CL_HPP_ENABLE_EXCEPTIONS +#ifndef __APPLE__ + #define CL_HPP_ENABLE_EXCEPTIONS +#endif + #ifdef LOWER_CL_VERSION #define CL_HPP_MINIMUM_OPENCL_VERSION 120 #define CL_HPP_TARGET_OPENCL_VERSION 120 #else - #define CL_HPP_MINIMUM_OPENCL_VERSION 200 - #define CL_HPP_TARGET_OPENCL_VERSION 200 + #define CL_HPP_MINIMUM_OPENCL_VERSION 120 + #define CL_HPP_TARGET_OPENCL_VERSION 120 #endif typedef struct _cl_buffer_region cl_buffer_region; diff --git a/src/openpose/3d/CMakeLists.txt b/src/openpose/3d/CMakeLists.txt index a6aca2da..55e555f0 100644 --- a/src/openpose/3d/CMakeLists.txt +++ b/src/openpose/3d/CMakeLists.txt @@ -8,16 +8,16 @@ prepend(SOURCES_OP_3D_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_3D}) set(SOURCES_OP_3D_WITH_CP ${SOURCES_OP_3D_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_3D_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_3d ${SOURCES_OP_3D}) - else() + else () add_library(openpose_3d ${SOURCES_OP_3D}) endif () add_library(caffe SHARED IMPORTED) set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS}) - target_link_libraries(openpose_3d caffe ${MKL_LIBS}) + target_link_libraries(openpose_3d caffe openpose_core ${MKL_LIBS}) if (BUILD_CAFFE) add_dependencies(openpose_3d openpose_caffe) @@ -28,4 +28,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/CMakeLists.txt b/src/openpose/CMakeLists.txt index 93d20bb1..bf6bf88e 100644 --- a/src/openpose/CMakeLists.txt +++ b/src/openpose/CMakeLists.txt @@ -19,12 +19,12 @@ set(OP_HEADERS "") if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose ${SOURCES_OPENPOSE} ${OP_HEADERS}) -else() +else () add_library(openpose ${SOURCES_OPENPOSE} ${OP_HEADERS}) endif () # Ubuntu -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) target_link_libraries(openpose ${OpenPose_3rdparty_libraries}) if (CMAKE_COMPILER_IS_GNUCXX) foreach (SUB_DIR ${SUB_DIRS}) @@ -54,12 +54,12 @@ elseif (WIN32) set_property(TARGET openpose PROPERTY RUNTIME_OUTPUT_DIRECTORY_RELEASE ${PROJECT_BINARY_DIR}/$(Platform)/$(Configuration)) set_property(TARGET openpose PROPERTY RUNTIME_OUTPUT_DIRECTORY_DEBUG ${PROJECT_BINARY_DIR}/$(Platform)/$(Configuration)) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_library(caffe SHARED IMPORTED) set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS}) - target_link_libraries(openpose caffe) + target_link_libraries(openpose caffe ${Boost_SYSTEM_LIBRARY} ${OpenCL_LIBRARIES}) if (BUILD_CAFFE) add_dependencies(openpose openpose_caffe) @@ -72,4 +72,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/calibration/CMakeLists.txt b/src/openpose/calibration/CMakeLists.txt index d88f29f7..60322632 100644 --- a/src/openpose/calibration/CMakeLists.txt +++ b/src/openpose/calibration/CMakeLists.txt @@ -8,13 +8,15 @@ prepend(SOURCES_OP_CALIBRATION_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_ set(SOURCES_OP_CALIBRATION_WITH_CP ${SOURCES_OP_CALIBRATION_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_CALIBRATION_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_calibration ${SOURCES_OP_CALIBRATION}) - else() + else () add_library(openpose_calibration ${SOURCES_OP_CALIBRATION}) endif () + target_link_libraries(openpose_calibration openpose_core) + if (BUILD_CAFFE) add_dependencies(openpose_calibration openpose_caffe) endif (BUILD_CAFFE) @@ -24,4 +26,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/calibration/cameraParameterEstimation.cpp b/src/openpose/calibration/cameraParameterEstimation.cpp index b56c555e..a2da30b5 100644 --- a/src/openpose/calibration/cameraParameterEstimation.cpp +++ b/src/openpose/calibration/cameraParameterEstimation.cpp @@ -15,8 +15,8 @@ namespace op cv::Mat distortionCoefficients; Intrinsics() : - cameraMatrix{cv::Mat::eye(3, 3, CV_64F)}, - distortionCoefficients{cv::Mat::zeros(14, 1, CV_64F)} + cameraMatrix(cv::Mat::eye(3, 3, CV_64F)), + distortionCoefficients(cv::Mat::zeros(14, 1, CV_64F)) { } diff --git a/src/openpose/core/CMakeLists.txt b/src/openpose/core/CMakeLists.txt index d932f091..2fb020ad 100644 --- a/src/openpose/core/CMakeLists.txt +++ b/src/openpose/core/CMakeLists.txt @@ -19,13 +19,21 @@ prepend(SOURCES_OP_CORE_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_CORE}) set(SOURCES_OP_CORE_WITH_CP ${SOURCES_OP_CORE_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_CORE_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_core ${SOURCES_OP_CORE}) - else() + else () add_library(openpose_core ${SOURCES_OP_CORE}) endif () + target_link_libraries(openpose_core openpose caffe ${OpenCV_LIBS} ${Caffe_LIBS} ${GLUT_LIBRARY} ${SPINNAKER_LIB} ${OpenCL_LIBRARIES} + ${GLOG_LIBRARY} ${OpenCV_LIBS} ${Caffe_LIBS} ${GFLAGS_LIBRARY} ${GLOG_LIBRARY} ${MKL_LIBS} ${GLUT_LIBRARY} ${SPINNAKER_LIB}) + + if (APPLE) + add_library(caffe SHARED IMPORTED) + set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS}) + endif (APPLE) + if (BUILD_CAFFE) add_dependencies(openpose_core openpose_caffe) endif (BUILD_CAFFE) @@ -35,4 +43,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/face/CMakeLists.txt b/src/openpose/face/CMakeLists.txt index 6c20bf94..86e2c980 100644 --- a/src/openpose/face/CMakeLists.txt +++ b/src/openpose/face/CMakeLists.txt @@ -15,12 +15,14 @@ prepend(SOURCES_OP_FACE_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_FACE}) set(SOURCES_OP_FACE_WITH_CP ${SOURCES_OP_FACE_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_FACE_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_face ${SOURCES_OP_FACE}) - else() + else () add_library(openpose_face ${SOURCES_OP_FACE}) endif () + + target_link_libraries(openpose_face openpose_core) if (BUILD_CAFFE) add_dependencies(openpose_face openpose_caffe) @@ -31,4 +33,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/filestream/CMakeLists.txt b/src/openpose/filestream/CMakeLists.txt index d95c32d9..35e93128 100644 --- a/src/openpose/filestream/CMakeLists.txt +++ b/src/openpose/filestream/CMakeLists.txt @@ -14,12 +14,14 @@ prepend(SOURCES_OP_FILESTREAM_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_F set(SOURCES_OP_FILESTREAM_WITH_CP ${SOURCES_OP_FILESTREAM_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_FILESTREAM_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_library(openpose_filestream ${SOURCES_OP_FILESTREAM}) + target_link_libraries(openpose_filestream openpose_core) + install(TARGETS openpose_filestream EXPORT OpenPose RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/gpu/CMakeLists.txt b/src/openpose/gpu/CMakeLists.txt index 610c27b4..10cf7165 100644 --- a/src/openpose/gpu/CMakeLists.txt +++ b/src/openpose/gpu/CMakeLists.txt @@ -8,18 +8,18 @@ prepend(SOURCES_OP_GPU_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_GPU}) set(SOURCES_OP_GPU_WITH_CP ${SOURCES_OP_GPU_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_GPU_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_gpu ${SOURCES_OP_GPU}) - else() + else () add_library(openpose_gpu ${SOURCES_OP_GPU}) endif () - # target_link_libraries(openpose_gpu openpose_core) + target_link_libraries(openpose_gpu openpose_core) install(TARGETS openpose_gpu EXPORT OpenPose RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/gpu/opencl.cpp b/src/openpose/gpu/opencl.cpp index ba801431..26bfe477 100644 --- a/src/openpose/gpu/opencl.cpp +++ b/src/openpose/gpu/opencl.cpp @@ -53,6 +53,7 @@ namespace op replaceAll(src, "Type", type); program = cl::Program(context, src, true); } + #if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS) catch (cl::BuildError e) { auto buildInfo = e.getBuildLog(); @@ -62,6 +63,11 @@ namespace op error("OpenCL error: OpenPose crashed due to the previously printed errors.", __LINE__, __FUNCTION__, __FILE__); } + #endif + catch (const std::exception& e) + { + error(e.what(), __LINE__, __FUNCTION__, __FILE__); + } return true; #else UNUSED(program); @@ -231,10 +237,16 @@ namespace op } } } + #if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS) catch (cl::Error e) { op::log("Error: " + std::string(e.what())); } + #endif + catch (const std::exception& e) + { + error(e.what(), __LINE__, __FUNCTION__, __FILE__); + } } #else UNUSED(deviceId); @@ -417,7 +429,8 @@ namespace op std::vector platforms; std::vector devices; cl_uint type; - try { + try + { cl::Platform::get(&platforms); if (!platforms.size()) return -1; @@ -425,12 +438,21 @@ namespace op if (type == CL_SUCCESS) return devices.size(); else + { + error("No GPU Devices were found. OpenPose only supports GPU OpenCL", __LINE__, __FUNCTION__, __FILE__); return -1; + } } + #if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS) catch (cl::Error& e) { op::log("Error: " + std::string(e.what())); } + #endif + catch (const std::exception& e) + { + error(e.what(), __LINE__, __FUNCTION__, __FILE__); + } #else error("OpenPose must be compiled with the `USE_OPENCL` macro definition in order to use this" " functionality.", __LINE__, __FUNCTION__, __FILE__); diff --git a/src/openpose/gui/CMakeLists.txt b/src/openpose/gui/CMakeLists.txt index 10f4c473..c5648ccf 100644 --- a/src/openpose/gui/CMakeLists.txt +++ b/src/openpose/gui/CMakeLists.txt @@ -13,7 +13,7 @@ set(SOURCES_OP_GUI_WITH_CP ${SOURCES_OP_GUI_WITH_CP} PARENT_SCOPE) set(SOURCES_OP_FILESTREAM_WITH_CP ${SOURCES_OP_FILESTREAM_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_GUI_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_library(openpose_gui ${SOURCES_OP_GUI}) target_link_libraries(openpose_gui openpose_pose ${OpenCV_LIBS}) @@ -22,5 +22,5 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/hand/CMakeLists.txt b/src/openpose/hand/CMakeLists.txt index fb592b57..be779291 100644 --- a/src/openpose/hand/CMakeLists.txt +++ b/src/openpose/hand/CMakeLists.txt @@ -15,12 +15,14 @@ prepend(SOURCES_OP_HAND_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_HAND}) set(SOURCES_OP_HAND_WITH_CP ${SOURCES_OP_HAND_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_HAND_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_hand ${SOURCES_OP_HAND}) - else() + else () add_library(openpose_hand ${SOURCES_OP_HAND}) endif () + + target_link_libraries(openpose_hand openpose_core) if (BUILD_CAFFE) add_dependencies(openpose_hand openpose_caffe) @@ -31,4 +33,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/net/CMakeLists.txt b/src/openpose/net/CMakeLists.txt index 69fd9850..6686d03b 100644 --- a/src/openpose/net/CMakeLists.txt +++ b/src/openpose/net/CMakeLists.txt @@ -18,16 +18,16 @@ prepend(SOURCES_OP_NET_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_NET}) set(SOURCES_OP_NET_WITH_CP ${SOURCES_OP_NET_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_NET_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_net ${SOURCES_OP_NET}) - else() + else () add_library(openpose_net ${SOURCES_OP_NET}) endif () add_library(caffe SHARED IMPORTED) set_property(TARGET caffe PROPERTY IMPORTED_LOCATION ${Caffe_LIBS}) - target_link_libraries(openpose_net caffe ${MKL_LIBS}) + target_link_libraries(openpose_net caffe ${MKL_LIBS} openpose_core) if (BUILD_CAFFE) add_dependencies(openpose_net openpose_caffe) @@ -38,4 +38,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/net/nmsBaseCL.cpp b/src/openpose/net/nmsBaseCL.cpp index a3c78e72..c496aa60 100644 --- a/src/openpose/net/nmsBaseCL.cpp +++ b/src/openpose/net/nmsBaseCL.cpp @@ -15,7 +15,7 @@ namespace op const std::string nmsOclCommonFunctions = MULTI_LINE_STRING( void nmsAccuratePeakPosition(__global const Type* sourcePtr, Type* fx, Type* fy, Type* fscore, const int peakLocX, const int peakLocY, const int width, const int height, - const T offsetX, const T offsetY) + const Type offsetX, const Type offsetY) { Type xAcc = 0.f; Type yAcc = 0.f; @@ -102,11 +102,11 @@ namespace op } ); - typedef cl::KernelFunctor NMSWriteKernelFunctor; + typedef cl::KernelFunctor NMSWriteKernelFunctor; const std::string nmsWriteKernel = MULTI_LINE_STRING( __kernel void nmsWriteKernel(__global Type* targetPtr, __global int* kernelPtr, __global const Type* sourcePtr, const int w, const int h, const int maxPeaks, const int debug, - const T offsetX, const T offsetY) + const Type offsetX, const Type offsetY) { int x = get_global_id(0); int y = get_global_id(1); @@ -249,12 +249,12 @@ namespace op " functionality.", __LINE__, __FUNCTION__, __FILE__); #endif } - #ifdef USE_OPENCL - catch (const cl::Error& e) - { - error(std::string(e.what()) + " : " + op::OpenCL::clErrorToString(e.err()) + " ID: " + - std::to_string(gpuID), __LINE__, __FUNCTION__, __FILE__); - } + #if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS) + catch (const cl::Error& e) + { + error(std::string(e.what()) + " : " + op::OpenCL::clErrorToString(e.err()) + " ID: " + + std::to_string(gpuID), __LINE__, __FUNCTION__, __FILE__); + } #endif catch (const std::exception& e) { diff --git a/src/openpose/net/resizeAndMergeBaseCL.cpp b/src/openpose/net/resizeAndMergeBaseCL.cpp index df3a63d0..5653198b 100644 --- a/src/openpose/net/resizeAndMergeBaseCL.cpp +++ b/src/openpose/net/resizeAndMergeBaseCL.cpp @@ -326,7 +326,7 @@ namespace op " functionality.", __LINE__, __FUNCTION__, __FILE__); #endif } - #ifdef USE_OPENCL + #if defined(USE_OPENCL) && defined(CL_HPP_ENABLE_EXCEPTIONS) catch (const cl::Error& e) { error(std::string(e.what()) + " : " + op::OpenCL::clErrorToString(e.err()) + " ID: " + diff --git a/src/openpose/pose/CMakeLists.txt b/src/openpose/pose/CMakeLists.txt index 74b0267c..a75a89ff 100644 --- a/src/openpose/pose/CMakeLists.txt +++ b/src/openpose/pose/CMakeLists.txt @@ -19,12 +19,14 @@ prepend(SOURCES_OP_POSE_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_POSE}) set(SOURCES_OP_POSE_WITH_CP ${SOURCES_OP_POSE_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_POSE_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_pose ${SOURCES_OP_POSE}) - else() + else () add_library(openpose_pose ${SOURCES_OP_POSE}) endif () + + target_link_libraries(openpose_pose openpose_core) if (BUILD_CAFFE) add_dependencies(openpose_pose openpose_caffe) @@ -35,4 +37,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/pose/poseRenderer.cpp b/src/openpose/pose/poseRenderer.cpp index 55b05090..0ef273ba 100644 --- a/src/openpose/pose/poseRenderer.cpp +++ b/src/openpose/pose/poseRenderer.cpp @@ -29,7 +29,7 @@ namespace op catch (const std::exception& e) { error(e.what(), __LINE__, __FUNCTION__, __FILE__); - return {}; + return std::map(); } } diff --git a/src/openpose/producer/CMakeLists.txt b/src/openpose/producer/CMakeLists.txt index 6130f7b7..de1ff329 100644 --- a/src/openpose/producer/CMakeLists.txt +++ b/src/openpose/producer/CMakeLists.txt @@ -14,7 +14,7 @@ prepend(SOURCES_OP_PRODUCER_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_PRO set(SOURCES_OP_PRODUCER_WITH_CP ${SOURCES_OP_PRODUCER_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_PRODUCER_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_library(openpose_producer ${SOURCES_OP_PRODUCER}) target_link_libraries(openpose_producer ${OpenCV_LIBS} openpose_core openpose_thread openpose_filestream) @@ -24,4 +24,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/thread/CMakeLists.txt b/src/openpose/thread/CMakeLists.txt index 14b6814b..50151397 100644 --- a/src/openpose/thread/CMakeLists.txt +++ b/src/openpose/thread/CMakeLists.txt @@ -6,12 +6,14 @@ prepend(SOURCES_OP_THREAD_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_THREA set(SOURCES_OP_THREAD_WITH_CP ${SOURCES_OP_THREAD_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_THREAD_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_library(openpose_thread ${SOURCES_OP_THREAD}) + + target_link_libraries(openpose_thread openpose_core) install(TARGETS openpose_thread EXPORT OpenPose RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/tracking/CMakeLists.txt b/src/openpose/tracking/CMakeLists.txt index 1fe2e892..7cff327b 100644 --- a/src/openpose/tracking/CMakeLists.txt +++ b/src/openpose/tracking/CMakeLists.txt @@ -10,14 +10,14 @@ prepend(SOURCES_OP_TRACKING_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_TRA set(SOURCES_OP_TRACKING_WITH_CP ${SOURCES_OP_TRACKING_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_TRACKING_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_library(openpose_tracking ${SOURCES_OP_TRACKING}) - set_target_properties(openpose_tracking PROPERTIES COMPILE_FLAGS ${OP_CXX_FLAGS}) + target_link_libraries(openpose_tracking openpose_core) install(TARGETS openpose_tracking EXPORT OpenPose RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/utilities/CMakeLists.txt b/src/openpose/utilities/CMakeLists.txt index d18cc8d5..46ccede0 100644 --- a/src/openpose/utilities/CMakeLists.txt +++ b/src/openpose/utilities/CMakeLists.txt @@ -12,10 +12,10 @@ prepend(SOURCES_OP_UTILITIES_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_UT set(SOURCES_OP_UTILITIES_WITH_CP ${SOURCES_OP_UTILITIES_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_UTILITIES_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) if (${GPU_MODE} MATCHES "CUDA") cuda_add_library(openpose_utilities ${SOURCES_OP_UTILITIES}) - else() + else () add_library(openpose_utilities ${SOURCES_OP_UTILITIES}) endif () @@ -26,4 +26,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) diff --git a/src/openpose/utilities/fileSystem.cpp b/src/openpose/utilities/fileSystem.cpp index a5e6e9ff..aca7b0cf 100644 --- a/src/openpose/utilities/fileSystem.cpp +++ b/src/openpose/utilities/fileSystem.cpp @@ -2,7 +2,7 @@ #ifdef _WIN32 #include // _mkdir #include // DWORD, GetFileAttributesA -#elif defined __unix__ +#elif defined __unix__ || defined __APPLE__ #include // opendir #include // mkdir #else @@ -26,7 +26,7 @@ namespace op { #ifdef _WIN32 const auto status = _mkdir(formatedPath.c_str()); - #elif defined __unix__ + #elif defined __unix__ || defined __APPLE__ // Create folder // Access permission - 775 (7, 7, 4+1) // https://www.gnu.org/software/libc/manual/html_node/Permission-Bits.html @@ -62,7 +62,7 @@ namespace op return true; // It is not a directory return false; // this is not a directory! - #elif defined __unix__ + #elif defined __unix__ || defined __APPLE__ // It is a directory if (auto* directory = opendir(formatedPath.c_str())) { @@ -291,7 +291,7 @@ namespace op while (FindNextFile(hFind, &data) != 0); FindClose(hFind); } - #elif defined __unix__ + #elif defined __unix__ || defined __APPLE__ std::shared_ptr directoryPtr( opendir(formatedPath.c_str()), [](DIR* formatedPath){ formatedPath && closedir(formatedPath); } diff --git a/src/openpose/wrapper/CMakeLists.txt b/src/openpose/wrapper/CMakeLists.txt index 89b709e1..2007dbad 100644 --- a/src/openpose/wrapper/CMakeLists.txt +++ b/src/openpose/wrapper/CMakeLists.txt @@ -12,7 +12,7 @@ prepend(SOURCES_OP_WRAPPER_WITH_CP ${CMAKE_CURRENT_SOURCE_DIR} ${SOURCES_OP_WRAP set(SOURCES_OP_WRAPPER_WITH_CP ${SOURCES_OP_WRAPPER_WITH_CP} PARENT_SCOPE) set(SOURCES_OPENPOSE ${SOURCES_OPENPOSE} ${SOURCES_OP_WRAPPER_WITH_CP} PARENT_SCOPE) -if (UNIX AND NOT APPLE) +if (UNIX OR APPLE) add_library(openpose_wrapper ${SOURCES_OP_WRAPPER}) target_link_libraries(openpose_wrapper openpose_thread openpose_pose openpose_hand openpose_core openpose_face openpose_filestream openpose_gui openpose_producer @@ -23,4 +23,4 @@ if (UNIX AND NOT APPLE) RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib/openpose) -endif (UNIX AND NOT APPLE) +endif (UNIX OR APPLE) -- GitLab