opencv

Форк
0
/
OpenCVFindLibsPerf.cmake 
163 строки · 5.7 Кб
1
# ----------------------------------------------------------------------------
2
#  Detect other 3rd-party performance and math libraries
3
# ----------------------------------------------------------------------------
4

5
# --- TBB ---
6
if(WITH_TBB)
7
  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectTBB.cmake")
8
endif(WITH_TBB)
9

10
# --- IPP ---
11
if(WITH_IPP)
12
  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPP.cmake")
13
  if(HAVE_IPP)
14
    include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPPIW.cmake")
15
    if(HAVE_IPP_IW)
16
      ocv_include_directories(${IPP_IW_INCLUDES})
17
      list(APPEND OPENCV_LINKER_LIBS ${IPP_IW_LIBRARIES})
18
    endif()
19
    ocv_include_directories(${IPP_INCLUDE_DIRS})
20
    list(APPEND OPENCV_LINKER_LIBS ${IPP_LIBRARIES})
21

22
    # Details: #10229
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}")
27
    endif()
28

29
    if(OPENCV_FORCE_IPP_EXCLUDE_LIBS
30
        OR (HAVE_IPP_ICV
31
            AND UNIX AND NOT ANDROID AND NOT APPLE
32
            AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Intel"
33
        )
34
        AND NOT OPENCV_SKIP_IPP_EXCLUDE_LIBS
35
    )
36
      set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--exclude-libs,libippicv.a -Wl,--exclude-libs,libippiw.a ${CMAKE_SHARED_LINKER_FLAGS}")
37
    endif()
38
  endif()
39
endif()
40

41
# --- CUDA ---
42
if(WITH_CUDA)
43
  if(ENABLE_CUDA_FIRST_CLASS_LANGUAGE)
44
    include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCUDALanguage.cmake")
45
  else()
46
    include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCUDA.cmake")
47
  endif()
48
  if(NOT HAVE_CUDA)
49
    message(WARNING "OpenCV is not able to find/configure CUDA SDK (required by WITH_CUDA).
50
CUDA support will be disabled in OpenCV build.
51
To eliminate this warning remove WITH_CUDA=ON CMake configuration option.
52
")
53
  endif()
54
endif(WITH_CUDA)
55

56
# --- Eigen ---
57
if(WITH_EIGEN AND NOT HAVE_EIGEN)
58
  if((OPENCV_FORCE_EIGEN_FIND_PACKAGE_CONFIG
59
      OR NOT (CMAKE_VERSION VERSION_LESS "3.0.0")  # Eigen3Targets.cmake required CMake 3.0.0+
60
      ) AND NOT OPENCV_SKIP_EIGEN_FIND_PACKAGE_CONFIG
61
  )
62
    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)
63
  endif()
64
  if(NOT Eigen3_FOUND)
65
    find_package(Eigen3 QUIET)
66
  endif()
67

68
  if(Eigen3_FOUND)
69
    if(TARGET Eigen3::Eigen)
70
      # Use Eigen3 imported target if possible
71
      list(APPEND OPENCV_LINKER_LIBS Eigen3::Eigen)
72
      set(HAVE_EIGEN 1)
73
    else()
74
      if(DEFINED EIGEN3_INCLUDE_DIRS)
75
        set(EIGEN_INCLUDE_PATH ${EIGEN3_INCLUDE_DIRS})
76
        set(HAVE_EIGEN 1)
77
      elseif(DEFINED EIGEN3_INCLUDE_DIR)
78
        set(EIGEN_INCLUDE_PATH ${EIGEN3_INCLUDE_DIR})
79
        set(HAVE_EIGEN 1)
80
      endif()
81
    endif()
82
    if(HAVE_EIGEN)
83
      if(DEFINED EIGEN3_WORLD_VERSION)  # CMake module
84
        set(EIGEN_WORLD_VERSION ${EIGEN3_WORLD_VERSION})
85
        set(EIGEN_MAJOR_VERSION ${EIGEN3_MAJOR_VERSION})
86
        set(EIGEN_MINOR_VERSION ${EIGEN3_MINOR_VERSION})
87
      else()  # Eigen config file
88
        set(EIGEN_WORLD_VERSION ${EIGEN3_VERSION_MAJOR})
89
        set(EIGEN_MAJOR_VERSION ${EIGEN3_VERSION_MINOR})
90
        set(EIGEN_MINOR_VERSION ${EIGEN3_VERSION_PATCH})
91
      endif()
92
    endif()
93
  endif()
94

95
  if(NOT HAVE_EIGEN)
96
    if(NOT EIGEN_INCLUDE_PATH OR NOT EXISTS "${EIGEN_INCLUDE_PATH}")
97
      set(__find_paths "")
98
      set(__find_path_extra_options "")
99
      if(NOT CMAKE_CROSSCOMPILING)
100
        list(APPEND __find_paths /opt)
101
      endif()
102
      if(DEFINED ENV{EIGEN_ROOT})
103
        set(__find_paths "$ENV{EIGEN_ROOT}/include")
104
        list(APPEND __find_path_extra_options NO_DEFAULT_PATH)
105
      else()
106
        set(__find_paths ENV ProgramFiles ENV ProgramW6432)
107
      endif()
108
      find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
109
                PATHS ${__find_paths}
110
                PATH_SUFFIXES include/eigen3 include/eigen2 Eigen/include/eigen3 Eigen/include/eigen2
111
                DOC "The path to Eigen3/Eigen2 headers"
112
                ${__find_path_extra_options}
113
      )
114
    endif()
115
    if(EIGEN_INCLUDE_PATH AND EXISTS "${EIGEN_INCLUDE_PATH}")
116
      ocv_parse_header("${EIGEN_INCLUDE_PATH}/Eigen/src/Core/util/Macros.h" EIGEN_VERSION_LINES EIGEN_WORLD_VERSION EIGEN_MAJOR_VERSION EIGEN_MINOR_VERSION)
117
      set(HAVE_EIGEN 1)
118
    endif()
119
  endif()
120
endif()
121
if(HAVE_EIGEN)
122
  if(EIGEN_INCLUDE_PATH AND EXISTS "${EIGEN_INCLUDE_PATH}")
123
    ocv_include_directories(SYSTEM ${EIGEN_INCLUDE_PATH})
124
  endif()
125
endif()
126

127
# --- Clp ---
128
# Ubuntu: sudo apt-get install coinor-libclp-dev coinor-libcoinutils-dev
129
ocv_clear_vars(HAVE_CLP)
130
if(WITH_CLP)
131
  if(UNIX)
132
    ocv_check_modules(CLP clp)
133
    if(CLP_FOUND)
134
      set(HAVE_CLP TRUE)
135
      if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
136
        ocv_include_directories(${CLP_INCLUDE_DIRS})
137
      endif()
138
      list(APPEND OPENCV_LINKER_LIBS ${CLP_LIBRARIES})
139
    endif()
140
  endif()
141

142
  if(NOT CLP_FOUND)
143
    find_path(CLP_INCLUDE_PATH "coin"
144
              PATHS "/usr/local/include" "/usr/include" "/opt/include"
145
              DOC "The path to Clp headers")
146
    if(CLP_INCLUDE_PATH)
147
      ocv_include_directories(${CLP_INCLUDE_PATH} "${CLP_INCLUDE_PATH}/coin")
148
      get_filename_component(_CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" ABSOLUTE)
149
      set(CLP_LIBRARY_DIR "${_CLP_LIBRARY_DIR}" CACHE PATH "Full path of Clp library directory")
150
      link_directories(${CLP_LIBRARY_DIR})
151
      if(UNIX)
152
        set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils m)
153
      else()
154
        if(MINGW)
155
            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils)
156
        else()
157
            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libClp libCoinUtils)
158
        endif()
159
      endif()
160
      set(HAVE_CLP TRUE)
161
    endif()
162
  endif()
163
endif(WITH_CLP)
164

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.