OpenCVFindLibsPerf.cmake 5.0 KB
Newer Older
1 2 3 4
# ----------------------------------------------------------------------------
#  Detect other 3rd-party performance and math libraries
# ----------------------------------------------------------------------------

5 6 7 8
# --- Lapack ---
if(WITH_LAPACK)
  find_package(LAPACK)
  if(LAPACK_FOUND)
9
    find_path(LAPACKE_INCLUDE_DIR "lapacke.h")
V
Vladislav Sovrasov 已提交
10 11
    find_path(MKL_LAPACKE_INCLUDE_DIR "mkl_lapack.h")
    if(LAPACKE_INCLUDE_DIR OR MKL_LAPACKE_INCLUDE_DIR)
12
      find_path(CBLAS_INCLUDE_DIR "cblas.h")
V
Vladislav Sovrasov 已提交
13 14 15
      find_path(MKL_CBLAS_INCLUDE_DIR "mkl_cblas.h")

      if(CBLAS_INCLUDE_DIR OR MKL_CBLAS_INCLUDE_DIR)
16
        set(HAVE_LAPACK 1)
V
Vladislav Sovrasov 已提交
17 18

      if(CBLAS_INCLUDE_DIR)
19
        ocv_include_directories(${LAPACKE_INCLUDE_DIR} ${CBLAS_INCLUDE_DIR})
V
Vladislav Sovrasov 已提交
20 21 22 23 24
        set(HAVE_LAPACK_GENERIC 1)
      elseif(MKL_CBLAS_INCLUDE_DIR)
        ocv_include_directories(${MKL_LAPACKE_INCLUDE_DIR} ${MKL_CBLAS_INCLUDE_DIR})
        set(HAVE_LAPACK_MKL 1)
      endif()
25 26
        list(APPEND OPENCV_LINKER_LIBS ${LAPACK_LIBRARIES})
      endif()
27 28 29
    endif()
  endif()
endif()
30

31 32
# --- TBB ---
if(WITH_TBB)
33
  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectTBB.cmake")
34 35 36
endif(WITH_TBB)

# --- IPP ---
37
if(WITH_IPP)
38
  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPP.cmake")
A
Alexander Alekhin 已提交
39
  if(HAVE_IPP)
40
    ocv_include_directories(${IPP_INCLUDE_DIRS})
A
Alexander Alekhin 已提交
41
    list(APPEND OPENCV_LINKER_LIBS ${IPP_LIBRARIES})
42
  endif()
A
Alexander Alekhin 已提交
43
endif()
44

45 46 47 48 49 50 51 52 53 54 55
# --- IPP Async ---

if(WITH_IPP_A)
  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPPAsync.cmake")
  if(IPP_A_INCLUDE_DIR AND IPP_A_LIBRARIES)
    ocv_include_directories(${IPP_A_INCLUDE_DIR})
    link_directories(${IPP_A_LIBRARIES})
    set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_A_LIBRARIES})
   endif()
endif(WITH_IPP_A)

56 57
# --- CUDA ---
if(WITH_CUDA)
58
  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCUDA.cmake")
59 60 61 62 63
endif(WITH_CUDA)

# --- Eigen ---
if(WITH_EIGEN)
  find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
64
            PATHS /usr/local /opt /usr $ENV{EIGEN_ROOT}/include ENV ProgramFiles ENV ProgramW6432
65
            PATH_SUFFIXES include/eigen3 include/eigen2 Eigen/include/eigen3 Eigen/include/eigen2
A
Andrey Kamaev 已提交
66 67
            DOC "The path to Eigen3/Eigen2 headers"
            CMAKE_FIND_ROOT_PATH_BOTH)
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

  if(EIGEN_INCLUDE_PATH)
    ocv_include_directories(${EIGEN_INCLUDE_PATH})
    ocv_parse_header("${EIGEN_INCLUDE_PATH}/Eigen/src/Core/util/Macros.h" EIGEN_VERSION_LINES EIGEN_WORLD_VERSION EIGEN_MAJOR_VERSION EIGEN_MINOR_VERSION)
    set(HAVE_EIGEN 1)
  endif()
endif(WITH_EIGEN)

# --- Clp ---
# Ubuntu: sudo apt-get install coinor-libclp-dev coinor-libcoinutils-dev
ocv_clear_vars(HAVE_CLP)
if(WITH_CLP)
  if(UNIX)
    PKG_CHECK_MODULES(CLP clp)
    if(CLP_FOUND)
      set(HAVE_CLP TRUE)
      if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
        ocv_include_directories(${CLP_INCLUDE_DIRS})
      endif()
      link_directories(${CLP_LIBRARY_DIRS})
      set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CLP_LIBRARIES})
    endif()
  endif()

  if(NOT CLP_FOUND)
    find_path(CLP_INCLUDE_PATH "coin"
              PATHS "/usr/local/include" "/usr/include" "/opt/include"
              DOC "The path to Clp headers")
    if(CLP_INCLUDE_PATH)
      ocv_include_directories(${CLP_INCLUDE_PATH} "${CLP_INCLUDE_PATH}/coin")
      get_filename_component(_CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" ABSOLUTE)
      set(CLP_LIBRARY_DIR "${_CLP_LIBRARY_DIR}" CACHE PATH "Full path of Clp library directory")
      link_directories(${CLP_LIBRARY_DIR})
      if(UNIX)
        set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils m)
      else()
104 105 106 107 108
        if(MINGW)
            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils)
        else()
            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libClp libCoinUtils)
        endif()
109 110 111 112
      endif()
      set(HAVE_CLP TRUE)
    endif()
  endif()
A
Andrey Kamaev 已提交
113 114
endif(WITH_CLP)

115 116 117 118 119 120 121 122
# --- C= ---
if(WITH_CSTRIPES AND NOT HAVE_TBB)
  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCStripes.cmake")
else()
  set(HAVE_CSTRIPES 0)
endif()

# --- GCD ---
123
if(APPLE AND NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
124 125 126 127 128 129
  set(HAVE_GCD 1)
else()
  set(HAVE_GCD 0)
endif()

# --- Concurrency ---
130
if(MSVC AND NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
131
  set(_fname "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/concurrencytest.cpp")
132 133 134
  file(WRITE "${_fname}" "#if _MSC_VER < 1600\n#error\n#endif\nint main() { return 0; }\n")
  try_compile(HAVE_CONCURRENCY "${CMAKE_BINARY_DIR}" "${_fname}")
  file(REMOVE "${_fname}")
135 136 137
else()
  set(HAVE_CONCURRENCY 0)
endif()
138 139 140 141 142 143 144 145 146 147

# --- OpenMP ---
if(WITH_OPENMP)
  find_package(OpenMP)
  if(OPENMP_FOUND)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
  endif()
  set(HAVE_OPENMP "${OPENMP_FOUND}")
endif()
148

149 150 151 152 153
if(NOT MSVC AND NOT DEFINED HAVE_PTHREADS)
  set(_fname "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/pthread_test.cpp")
  file(WRITE "${_fname}" "#include <pthread.h>\nint main() { (void)pthread_self(); return 0; }\n")
  try_compile(HAVE_PTHREADS "${CMAKE_BINARY_DIR}" "${_fname}")
  file(REMOVE "${_fname}")
154
endif()
155 156 157 158

ocv_clear_vars(HAVE_PTHREADS_PF)
if(WITH_PTHREADS_PF)
  set(HAVE_PTHREADS_PF ${HAVE_PTHREADS})
159 160 161
else()
  set(HAVE_PTHREADS_PF 0)
endif()