SenShaMart/demo/camera_client/dependencies/libvisiontransfer/CMakeLists.txt
2023-07-13 11:32:02 +10:00

195 lines
6.5 KiB
CMake

cmake_minimum_required(VERSION 3.0.0)
if(COMMAND cmake_policy)
cmake_policy(SET CMP0003 NEW)
endif(COMMAND cmake_policy)
MATH(EXPR BITS ${CMAKE_SIZEOF_VOID_P}*8)
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
# Search for PCL for example compilation
set(DISABLE_PCL 0 CACHE BOOL "Disables OpenCL example")
if(NOT DISABLE_PCL)
message(STATUS "looking for PCL")
find_package(PCL 1.3 COMPONENTS common io filters)
if(PCL_FOUND)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
else()
message(WARNING "Not building PCL example!")
endif()
endif()
# Search for Open3D for example compilation
set(DISABLE_OPEN3D 0 CACHE BOOL "Disables Open3D example")
if(NOT DISABLE_OPEN3D)
# Search for Open3D
message(STATUS "looking for Open3D")
find_package(Open3D)
if(Open3D_FOUND)
include_directories(${Open3D_INCLUDE_DIRS})
# Check Open3D C++ ABI
get_property(def TARGET Open3D::Open3D PROPERTY INTERFACE_COMPILE_DEFINITIONS)
if(def MATCHES "GLIBCXX_USE_CXX11_ABI=0")
set(OPEN3D_CXX11_ABI 0)
else()
set(OPEN3D_CXX11_ABI 1)
endif()
# Check system C++ ABI
include(CheckCXXSourceCompiles)
check_cxx_source_compiles("\
#include <string>\n\
#if _GLIBCXX_USE_CXX11_ABI == 0\n\
#error\n\
#endif\n\
int main(int, char**) {return 0;}"
SYSTEM_CXX11_ABI)
# Check if ABIs match
set(OPEN3D_LIB_SUFFIX "")
if(NOT MSVC)
if(${SYSTEM_CXX11_ABI} AND (NOT ${OPEN3D_CXX11_ABI}))
message(WARNING
"Open3D was built with old C++ ABI (_GLIBCXX_USE_CXX11_ABI=0). "
"A separate version of libvisiontransfer will be built for linking "
"against Open3D. Using Open3D in combination with other libraries "
"that are built with the more recent C++ ABI will not be possible.")
set(BUILD_WITHOUT_CXX11_ABI 1)
set(OPEN3D_LIB_SUFFIX "-without-cxx11-abi${LIB_SUFFIX}")
endif()
endif()
else()
message(WARNING "Not building Open3D example!")
endif()
endif()
# Search for OpenCV for example compilation
set(DISABLE_OPENCV 0 CACHE BOOL "Disables OpenCV example")
if(NOT DISABLE_OPENCV)
message(STATUS "looking for OpenCV")
find_package(OpenCV)
if(OpenCV_FOUND)
include_directories(${OpenCV_INCLUDE_DIRS})
else()
message(WARNING "Not building OpenCV example!")
endif()
endif()
set(DISABLE_NATIVE 0 CACHE BOOL "Disables native architecture compile flag")
if(NOT WIN32 OR MINGW)
include(CheckCXXCompilerFlag)
# Some useful flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3 -Wall")
CHECK_CXX_COMPILER_FLAG("-march=native" NATIVE_ARCH_SUPPORT)
if(NATIVE_ARCH_SUPPORT AND NOT DISABLE_NATIVE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native")
endif()
# Activate c++11 or newer support
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX14)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
elseif(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
elseif(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(WARNING "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
else()
set(CMAKE_DEBUG_POSTFIX "-debug")
endif()
# Search for python3
set(DISABLE_PYTHON 0 CACHE BOOL "Disables python library")
if(NOT DISABLE_PYTHON)
message(STATUS "looking for python3")
if(WIN32 AND NOT MINGW)
# Make sure we use the Windows python, not a matching one from msys!
set(USERPROFILE $ENV{USERPROFILE})
if(${BITS} EQUAL 32)
file(GLOB Python3_EXECUTABLE
"${USERPROFILE}/AppData/Local/Programs/Python/Python3?-32/python.exe"
"${USERPROFILE}/AppData/Local/Programs/Python/Python3??-32/python.exe")
else()
file(GLOB Python3_EXECUTABLE
"${USERPROFILE}/AppData/Local/Programs/Python/Python3?/python.exe"
"${USERPROFILE}/AppData/Local/Programs/Python/Python3??/python.exe")
endif()
message(WARNING "Windows build - assuming Python 3 is \"${Python3_EXECUTABLE}\".")
else()
set(Python3_EXECUTABLE "python3")
# This is for CMake 3.12 and up; making sure we get python3
find_package (Python3 COMPONENTS Interpreter)
if(NOT Python3_FOUND)
find_package (Python3 COMPONENTS Interpreter HINTS "/mingw64")
endif()
if(NOT Python3_FOUND)
# We don't give up just yet
message(WARNING "Failed finding python3 with FindPython3. Assuming python3 is \"${Python3_EXECUTABLE}\"")
endif()
endif()
# Search for cython
message(STATUS "looking for Cython")
execute_process(COMMAND "${Python3_EXECUTABLE}" "-c"
"\
from distutils.core import setup\n\
from distutils.extension import Extension\n\
from Cython.Build import cythonize\n\
print('OK')\
"
OUTPUT_VARIABLE cython_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
if("${cython_output}" STREQUAL "OK")
set(BUILD_CYTHON 1)
else()
message(WARNING "${cython_output}")
message(WARNING "Cython not found! Not building python library!")
endif()
# Search for python-wheel
message(STATUS "looking for Wheel")
execute_process(COMMAND "${Python3_EXECUTABLE}" "-c"
"\
import wheel\n\
print('OK')\
"
OUTPUT_VARIABLE wheel_output
OUTPUT_STRIP_TRAILING_WHITESPACE)
if("${wheel_output}" STREQUAL "OK")
set(BUILD_WHEEL 1)
else()
message(WARNING "${wheel_output}")
message(WARNING "Wheel not found! Not building python wheel packages!")
endif()
endif()
if(NOT CMAKE_SUBMODULE)
#set the default path for built libraries to the "lib" directory
if(NOT WIN32 OR MINGW)
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
else()
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib${BITS})
endif()
endif()
message(STATUS "CXX FLAGS: ${CMAKE_CXX_FLAGS}")
add_subdirectory(visiontransfer)
add_subdirectory(examples)
if(BUILD_CYTHON)
add_subdirectory(python)
endif()