1 # ----------------------------------------------------------------------------
2 # Detect other 3rd-party performance and math libraries
3 # ----------------------------------------------------------------------------
7 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectTBB.cmake")
12 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPP.cmake")
14 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPPIW.cmake")
16 ocv_include_directories(${IPP_IW_INCLUDES})
17 list(APPEND OPENCV_LINKER_LIBS ${IPP_IW_LIBRARIES})
19 ocv_include_directories(${IPP_INCLUDE_DIRS})
20 list(APPEND OPENCV_LINKER_LIBS ${IPP_LIBRARIES})
23 if(ANDROID AND NOT OPENCV_SKIP_ANDROID_IPP_FIX_1)
24 set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a ${CMAKE_SHARED_LINKER_FLAGS}")
25 elseif(ANDROID AND NOT OPENCV_SKIP_ANDROID_IPP_FIX_2)
26 set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-Bsymbolic ${CMAKE_SHARED_LINKER_FLAGS}")
29 if(OPENCV_FORCE_IPP_EXCLUDE_LIBS
31 AND UNIX AND NOT ANDROID AND NOT APPLE
32 AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Intel"
34 AND NOT OPENCV_SKIP_IPP_EXCLUDE_LIBS
36 set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a ${CMAKE_SHARED_LINKER_FLAGS}")
43 include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCUDA.cmake")
45 message(WARNING "OpenCV is not able to find/configure CUDA SDK (required by WITH_CUDA).
46 CUDA support will be disabled in OpenCV build.
47 To eliminate this warning remove WITH_CUDA=ON CMake configuration option.
53 if(WITH_EIGEN AND NOT HAVE_EIGEN)
54 if((OPENCV_FORCE_EIGEN_FIND_PACKAGE_CONFIG
55 OR NOT (CMAKE_VERSION VERSION_LESS "3.0.0") # Eigen3Targets.cmake required CMake 3.0.0+
56 ) AND NOT OPENCV_SKIP_EIGEN_FIND_PACKAGE_CONFIG
58 find_package(Eigen3 CONFIG QUIET) # Ceres 2.0.0 CMake scripts doesn't work with CMake's FindEigen3.cmake module (due to missing EIGEN3_VERSION_STRING)
61 find_package(Eigen3 QUIET)
65 if(TARGET Eigen3::Eigen)
66 # Use Eigen3 imported target if possible
67 list(APPEND OPENCV_LINKER_LIBS Eigen3::Eigen)
70 if(DEFINED EIGEN3_INCLUDE_DIRS)
71 set(EIGEN_INCLUDE_PATH ${EIGEN3_INCLUDE_DIRS})
73 elseif(DEFINED EIGEN3_INCLUDE_DIR)
74 set(EIGEN_INCLUDE_PATH ${EIGEN3_INCLUDE_DIR})
79 if(DEFINED EIGEN3_WORLD_VERSION) # CMake module
80 set(EIGEN_WORLD_VERSION ${EIGEN3_WORLD_VERSION})
81 set(EIGEN_MAJOR_VERSION ${EIGEN3_MAJOR_VERSION})
82 set(EIGEN_MINOR_VERSION ${EIGEN3_MINOR_VERSION})
83 else() # Eigen config file
84 set(EIGEN_WORLD_VERSION ${EIGEN3_VERSION_MAJOR})
85 set(EIGEN_MAJOR_VERSION ${EIGEN3_VERSION_MINOR})
86 set(EIGEN_MINOR_VERSION ${EIGEN3_VERSION_PATCH})
92 if(NOT EIGEN_INCLUDE_PATH OR NOT EXISTS "${EIGEN_INCLUDE_PATH}")
94 set(__find_path_extra_options "")
95 if(NOT CMAKE_CROSSCOMPILING)
96 list(APPEND __find_paths /opt)
98 if(DEFINED ENV{EIGEN_ROOT})
99 set(__find_paths "$ENV{EIGEN_ROOT}/include")
100 list(APPEND __find_path_extra_options NO_DEFAULT_PATH)
102 set(__find_paths ENV ProgramFiles ENV ProgramW6432)
104 find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
105 PATHS ${__find_paths}
106 PATH_SUFFIXES include/eigen3 include/eigen2 Eigen/include/eigen3 Eigen/include/eigen2
107 DOC "The path to Eigen3/Eigen2 headers"
108 ${__find_path_extra_options}
111 if(EIGEN_INCLUDE_PATH AND EXISTS "${EIGEN_INCLUDE_PATH}")
112 ocv_parse_header("${EIGEN_INCLUDE_PATH}/Eigen/src/Core/util/Macros.h" EIGEN_VERSION_LINES EIGEN_WORLD_VERSION EIGEN_MAJOR_VERSION EIGEN_MINOR_VERSION)
118 if(EIGEN_INCLUDE_PATH AND EXISTS "${EIGEN_INCLUDE_PATH}")
119 ocv_include_directories(SYSTEM ${EIGEN_INCLUDE_PATH})
124 # Ubuntu: sudo apt-get install coinor-libclp-dev coinor-libcoinutils-dev
125 ocv_clear_vars(HAVE_CLP)
128 ocv_check_modules(CLP clp)
131 if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
132 ocv_include_directories(${CLP_INCLUDE_DIRS})
134 list(APPEND OPENCV_LINKER_LIBS ${CLP_LIBRARIES})
139 find_path(CLP_INCLUDE_PATH "coin"
140 PATHS "/usr/local/include" "/usr/include" "/opt/include"
141 DOC "The path to Clp headers")
143 ocv_include_directories(${CLP_INCLUDE_PATH} "${CLP_INCLUDE_PATH}/coin")
144 get_filename_component(_CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" ABSOLUTE)
145 set(CLP_LIBRARY_DIR "${_CLP_LIBRARY_DIR}" CACHE PATH "Full path of Clp library directory")
146 link_directories(${CLP_LIBRARY_DIR})
148 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils m)
151 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils)
153 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libClp libCoinUtils)