Merge pull request #11882 from alalek:videoio_vfw_lower_priority
[platform/upstream/opencv.git] / cmake / OpenCVFindLibsPerf.cmake
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   endif()
29 endif()
30
31 # --- IPP Async ---
32
33 if(WITH_IPP_A)
34   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPPAsync.cmake")
35   if(IPP_A_INCLUDE_DIR AND IPP_A_LIBRARIES)
36     ocv_include_directories(${IPP_A_INCLUDE_DIR})
37     link_directories(${IPP_A_LIBRARIES})
38     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_A_LIBRARIES})
39    endif()
40 endif(WITH_IPP_A)
41
42 # --- CUDA ---
43 if(WITH_CUDA)
44   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCUDA.cmake")
45   if(NOT HAVE_CUDA)
46     message(WARNING "OpenCV is not able to find/configure CUDA SDK (required by WITH_CUDA).
47 CUDA support will be disabled in OpenCV build.
48 To eliminate this warning remove WITH_CUDA=ON CMake configuration option.
49 ")
50   endif()
51 endif(WITH_CUDA)
52
53 # --- Eigen ---
54 if(WITH_EIGEN)
55   find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
56             PATHS /usr/local /opt /usr $ENV{EIGEN_ROOT}/include ENV ProgramFiles ENV ProgramW6432
57             PATH_SUFFIXES include/eigen3 include/eigen2 Eigen/include/eigen3 Eigen/include/eigen2
58             DOC "The path to Eigen3/Eigen2 headers"
59             CMAKE_FIND_ROOT_PATH_BOTH)
60
61   if(EIGEN_INCLUDE_PATH)
62     ocv_include_directories(${EIGEN_INCLUDE_PATH})
63     ocv_parse_header("${EIGEN_INCLUDE_PATH}/Eigen/src/Core/util/Macros.h" EIGEN_VERSION_LINES EIGEN_WORLD_VERSION EIGEN_MAJOR_VERSION EIGEN_MINOR_VERSION)
64     set(HAVE_EIGEN 1)
65   endif()
66 endif(WITH_EIGEN)
67
68 # --- Clp ---
69 # Ubuntu: sudo apt-get install coinor-libclp-dev coinor-libcoinutils-dev
70 ocv_clear_vars(HAVE_CLP)
71 if(WITH_CLP)
72   if(UNIX)
73     PKG_CHECK_MODULES(CLP clp)
74     if(CLP_FOUND)
75       set(HAVE_CLP TRUE)
76       if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
77         ocv_include_directories(${CLP_INCLUDE_DIRS})
78       endif()
79       link_directories(${CLP_LIBRARY_DIRS})
80       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CLP_LIBRARIES})
81     endif()
82   endif()
83
84   if(NOT CLP_FOUND)
85     find_path(CLP_INCLUDE_PATH "coin"
86               PATHS "/usr/local/include" "/usr/include" "/opt/include"
87               DOC "The path to Clp headers")
88     if(CLP_INCLUDE_PATH)
89       ocv_include_directories(${CLP_INCLUDE_PATH} "${CLP_INCLUDE_PATH}/coin")
90       get_filename_component(_CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" ABSOLUTE)
91       set(CLP_LIBRARY_DIR "${_CLP_LIBRARY_DIR}" CACHE PATH "Full path of Clp library directory")
92       link_directories(${CLP_LIBRARY_DIR})
93       if(UNIX)
94         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils m)
95       else()
96         if(MINGW)
97             set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils)
98         else()
99             set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libClp libCoinUtils)
100         endif()
101       endif()
102       set(HAVE_CLP TRUE)
103     endif()
104   endif()
105 endif(WITH_CLP)
106
107 # --- C= ---
108 if(WITH_CSTRIPES AND NOT HAVE_TBB)
109   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCStripes.cmake")
110 else()
111   set(HAVE_CSTRIPES 0)
112 endif()
113
114 # --- GCD ---
115 if(APPLE AND NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
116   set(HAVE_GCD 1)
117 else()
118   set(HAVE_GCD 0)
119 endif()
120
121 # --- Concurrency ---
122 if(MSVC AND NOT HAVE_TBB AND NOT HAVE_CSTRIPES)
123   set(_fname "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/concurrencytest.cpp")
124   file(WRITE "${_fname}" "#if _MSC_VER < 1600\n#error\n#endif\nint main() { return 0; }\n")
125   try_compile(HAVE_CONCURRENCY "${CMAKE_BINARY_DIR}" "${_fname}")
126   file(REMOVE "${_fname}")
127 else()
128   set(HAVE_CONCURRENCY 0)
129 endif()
130
131 # --- OpenMP ---
132 if(WITH_OPENMP)
133   find_package(OpenMP)
134   if(OPENMP_FOUND)
135     set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
136     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
137   endif()
138   set(HAVE_OPENMP "${OPENMP_FOUND}")
139 endif()
140
141 ocv_clear_vars(HAVE_PTHREADS_PF)
142 if(WITH_PTHREADS_PF AND HAVE_PTHREAD)
143   set(HAVE_PTHREADS_PF 1)
144 else()
145   set(HAVE_PTHREADS_PF 0)
146 endif()