Merge pull request #6771 from sovrasov:log_doc_fix
[platform/upstream/opencv.git] / CMakeLists.txt
1 # ----------------------------------------------------------------------------
2 #  Root CMake file for OpenCV
3 #
4 #    From the off-tree build directory, invoke:
5 #      $ cmake <PATH_TO_OPENCV_ROOT>
6 #
7 # ----------------------------------------------------------------------------
8
9
10
11 include(cmake/OpenCVMinDepVersions.cmake)
12
13 if(CMAKE_GENERATOR MATCHES Xcode AND XCODE_VERSION VERSION_GREATER 4.3)
14   cmake_minimum_required(VERSION 2.8.8 FATAL_ERROR)
15 elseif(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
16   cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
17   #Required to resolve linker error issues due to incompatibility with CMake v3.0+ policies.
18   #CMake fails to find _fseeko() which leads to subsequent linker error.
19   #See details here: http://www.cmake.org/Wiki/CMake/Policies
20   cmake_policy(VERSION 2.8)
21 else()
22   cmake_minimum_required(VERSION "${MIN_VER_CMAKE}" FATAL_ERROR)
23 endif()
24
25 # Following block can broke build in case of cross-compilng
26 # but CMAKE_CROSSCOMPILING variable will be set only on project(OpenCV) command
27 # so we will try to detect crosscompiling by presense of CMAKE_TOOLCHAIN_FILE
28 if(NOT CMAKE_TOOLCHAIN_FILE)
29   # it _must_ go before project(OpenCV) in order to work
30   if(WIN32)
31     set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
32   else()
33     set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
34   endif()
35 else(NOT CMAKE_TOOLCHAIN_FILE)
36   #Android: set output folder to ${CMAKE_BINARY_DIR}
37   set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_BINARY_DIR} CACHE PATH "root for library output, set this to change where android libs are compiled to" )
38   # any crosscompiling
39   set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
40 endif(NOT CMAKE_TOOLCHAIN_FILE)
41
42 if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
43   set(WINRT TRUE)
44 endif(CMAKE_SYSTEM_NAME MATCHES WindowsPhone OR CMAKE_SYSTEM_NAME MATCHES WindowsStore)
45
46 if(WINRT)
47   add_definitions(-DWINRT -DNO_GETENV)
48
49   # Making definitions available to other configurations and
50   # to filter dependency restrictions at compile time.
51   if(CMAKE_SYSTEM_NAME MATCHES WindowsPhone)
52     set(WINRT_PHONE TRUE)
53     add_definitions(-DWINRT_PHONE)
54   elseif(CMAKE_SYSTEM_NAME MATCHES WindowsStore)
55     set(WINRT_STORE TRUE)
56     add_definitions(-DWINRT_STORE)
57   endif()
58
59   if(CMAKE_SYSTEM_VERSION MATCHES 10)
60     set(WINRT_10 TRUE)
61     add_definitions(-DWINRT_10)
62   elseif(CMAKE_SYSTEM_VERSION MATCHES 8.1)
63     set(WINRT_8_1 TRUE)
64     add_definitions(-DWINRT_8_1)
65   elseif(CMAKE_SYSTEM_VERSION MATCHES 8.0)
66     set(WINRT_8_0 TRUE)
67     add_definitions(-DWINRT_8_0)
68   endif()
69 endif()
70
71 if(POLICY CMP0020)
72   cmake_policy(SET CMP0020 OLD)
73 endif()
74
75 if(POLICY CMP0022)
76   cmake_policy(SET CMP0022 OLD)
77 endif()
78
79 if(POLICY CMP0026)
80   # silence cmake 3.0+ warnings about reading LOCATION attribute
81   cmake_policy(SET CMP0026 OLD)
82 endif()
83
84 if(POLICY CMP0042)
85   cmake_policy(SET CMP0042 NEW)
86 endif()
87
88 include(cmake/OpenCVUtils.cmake)
89
90 # must go before the project command
91 ocv_update(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
92 if(DEFINED CMAKE_BUILD_TYPE)
93   set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
94 endif()
95
96 enable_testing()
97
98 project(OpenCV CXX C)
99
100 if(MSVC)
101   set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)
102 endif()
103
104 ocv_cmake_eval(DEBUG_PRE ONCE)
105
106 ocv_clear_vars(OpenCVModules_TARGETS)
107
108 # ----------------------------------------------------------------------------
109 # Break in case of popular CMake configuration mistakes
110 # ----------------------------------------------------------------------------
111 if(NOT CMAKE_SIZEOF_VOID_P GREATER 0)
112   message(FATAL_ERROR "CMake fails to deterimine the bitness of target platform.
113   Please check your CMake and compiler installation. If you are crosscompiling then ensure that your CMake toolchain file correctly sets the compiler details.")
114 endif()
115
116 # ----------------------------------------------------------------------------
117 # Detect compiler and target platform architecture
118 # ----------------------------------------------------------------------------
119 include(cmake/OpenCVDetectCXXCompiler.cmake)
120
121 # Add these standard paths to the search paths for FIND_LIBRARY
122 # to find libraries from these locations first
123 if(UNIX AND NOT ANDROID)
124   if(X86_64 OR CMAKE_SIZEOF_VOID_P EQUAL 8)
125     if(EXISTS /lib64)
126       list(APPEND CMAKE_LIBRARY_PATH /lib64)
127     else()
128       list(APPEND CMAKE_LIBRARY_PATH /lib)
129     endif()
130     if(EXISTS /usr/lib64)
131       list(APPEND CMAKE_LIBRARY_PATH /usr/lib64)
132     else()
133       list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
134     endif()
135   elseif(X86 OR CMAKE_SIZEOF_VOID_P EQUAL 4)
136     if(EXISTS /lib32)
137       list(APPEND CMAKE_LIBRARY_PATH /lib32)
138     else()
139       list(APPEND CMAKE_LIBRARY_PATH /lib)
140     endif()
141     if(EXISTS /usr/lib32)
142       list(APPEND CMAKE_LIBRARY_PATH /usr/lib32)
143     else()
144       list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
145     endif()
146   endif()
147 endif()
148
149 # Add these standard paths to the search paths for FIND_PATH
150 # to find include files from these locations first
151 if(MINGW)
152   if(EXISTS /mingw)
153       list(APPEND CMAKE_INCLUDE_PATH /mingw)
154   endif()
155   if(EXISTS /mingw32)
156       list(APPEND CMAKE_INCLUDE_PATH /mingw32)
157   endif()
158   if(EXISTS /mingw64)
159       list(APPEND CMAKE_INCLUDE_PATH /mingw64)
160   endif()
161 endif()
162
163 # ----------------------------------------------------------------------------
164 # OpenCV cmake options
165 # ----------------------------------------------------------------------------
166
167 # Optional 3rd party components
168 # ===================================================
169 OCV_OPTION(WITH_1394           "Include IEEE1394 support"                    ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
170 OCV_OPTION(WITH_AVFOUNDATION   "Use AVFoundation for Video I/O"              ON   IF IOS)
171 OCV_OPTION(WITH_CARBON         "Use Carbon for UI instead of Cocoa"          OFF  IF APPLE )
172 OCV_OPTION(WITH_CAROTENE       "Use NVidia carotene acceleration library for ARM platform"                   ON  IF (ARM OR AARCH64) AND NOT IOS AND NOT (CMAKE_VERSION VERSION_LESS "2.8.11"))
173 OCV_OPTION(WITH_VTK            "Include VTK library support (and build opencv_viz module eiher)"             ON  IF (NOT ANDROID AND NOT IOS AND NOT WINRT AND NOT CMAKE_CROSSCOMPILING) )
174 OCV_OPTION(WITH_CUDA           "Include NVidia Cuda Runtime support"                                         ON  IF (NOT IOS AND NOT WINRT) )
175 OCV_OPTION(WITH_CUFFT          "Include NVidia Cuda Fast Fourier Transform (FFT) library support"            ON  IF (NOT IOS AND NOT WINRT) )
176 OCV_OPTION(WITH_CUBLAS         "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (NOT IOS AND NOT WINRT) )
177 OCV_OPTION(WITH_NVCUVID        "Include NVidia Video Decoding library support"                               OFF IF (NOT IOS AND NOT APPLE) )
178 OCV_OPTION(WITH_EIGEN          "Include Eigen2/Eigen3 support"               ON   IF (NOT WINRT) )
179 OCV_OPTION(WITH_VFW            "Include Video for Windows support"           ON   IF WIN32 )
180 OCV_OPTION(WITH_FFMPEG         "Include FFMPEG support"                      ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
181 OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (NOT ANDROID) )
182 OCV_OPTION(WITH_GSTREAMER_0_10 "Enable Gstreamer 0.10 support (instead of 1.x)"                              OFF )
183 OCV_OPTION(WITH_GTK            "Include GTK support"                         ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )
184 OCV_OPTION(WITH_GTK_2_X        "Use GTK version 2"                           OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID) )
185 OCV_OPTION(WITH_IPP            "Include Intel IPP support"                   NOT MINGW IF (X86_64 OR X86) AND NOT WINRT )
186 OCV_OPTION(WITH_JASPER         "Include JPEG2K support"                      ON   IF (NOT IOS) )
187 OCV_OPTION(WITH_JPEG           "Include JPEG support"                        ON)
188 OCV_OPTION(WITH_WEBP           "Include WebP support"                        ON   IF (NOT IOS AND NOT WINRT) )
189 OCV_OPTION(WITH_OPENEXR        "Include ILM support via OpenEXR"             ON   IF (NOT IOS AND NOT WINRT) )
190 OCV_OPTION(WITH_OPENGL         "Include OpenGL support"                      OFF  IF (NOT ANDROID AND NOT WINRT) )
191 OCV_OPTION(WITH_OPENNI         "Include OpenNI support"                      OFF  IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
192 OCV_OPTION(WITH_OPENNI2        "Include OpenNI2 support"                     OFF  IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
193 OCV_OPTION(WITH_PNG            "Include PNG support"                         ON)
194 OCV_OPTION(WITH_PVAPI          "Include Prosilica GigE support"              OFF   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
195 OCV_OPTION(WITH_GIGEAPI        "Include Smartek GigE support"                OFF   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
196 OCV_OPTION(WITH_QT             "Build with Qt Backend support"               OFF  IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
197 OCV_OPTION(WITH_WIN32UI        "Build with Win32 UI Backend support"         ON   IF WIN32 AND NOT WINRT)
198 OCV_OPTION(WITH_QUICKTIME      "Use QuickTime for Video I/O insted of QTKit" OFF  IF APPLE )
199 OCV_OPTION(WITH_TBB            "Include Intel TBB support"                   OFF  IF (NOT IOS AND NOT WINRT) )
200 OCV_OPTION(WITH_OPENMP         "Include OpenMP support"                      OFF)
201 OCV_OPTION(WITH_CSTRIPES       "Include C= support"                          OFF  IF (WIN32 AND NOT WINRT)  )
202 OCV_OPTION(WITH_PTHREADS_PF    "Use pthreads-based parallel_for"             ON   IF (NOT WIN32 OR MINGW) )
203 OCV_OPTION(WITH_TIFF           "Include TIFF support"                        ON   IF (NOT IOS) )
204 OCV_OPTION(WITH_UNICAP         "Include Unicap support (GPL)"                OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID) )
205 OCV_OPTION(WITH_V4L            "Include Video 4 Linux support"               ON   IF (UNIX AND NOT ANDROID) )
206 OCV_OPTION(WITH_LIBV4L         "Use libv4l for Video 4 Linux support"        OFF  IF (UNIX AND NOT ANDROID) )
207 OCV_OPTION(WITH_DSHOW          "Build VideoIO with DirectShow support"       ON   IF (WIN32 AND NOT ARM AND NOT WINRT) )
208 OCV_OPTION(WITH_MSMF           "Build VideoIO with Media Foundation support" OFF  IF WIN32 )
209 OCV_OPTION(WITH_XIMEA          "Include XIMEA cameras support"               OFF  IF (NOT ANDROID AND NOT WINRT) )
210 OCV_OPTION(WITH_XINE           "Include Xine support (GPL)"                  OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID) )
211 OCV_OPTION(WITH_CLP            "Include Clp support (EPL)"                   OFF)
212 OCV_OPTION(WITH_OPENCL         "Include OpenCL Runtime support"              NOT ANDROID IF (NOT IOS AND NOT WINRT) )
213 OCV_OPTION(WITH_OPENCL_SVM     "Include OpenCL Shared Virtual Memory support" OFF ) # experimental
214 OCV_OPTION(WITH_OPENCLAMDFFT   "Include AMD OpenCL FFT library support"      ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
215 OCV_OPTION(WITH_OPENCLAMDBLAS  "Include AMD OpenCL BLAS library support"     ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
216 OCV_OPTION(WITH_DIRECTX        "Include DirectX support"                     ON   IF (WIN32 AND NOT WINRT) )
217 OCV_OPTION(WITH_INTELPERC      "Include Intel Perceptual Computing support"  OFF  IF (WIN32 AND NOT WINRT) )
218 OCV_OPTION(WITH_IPP_A          "Include Intel IPP_A support"                 OFF  IF (MSVC OR X86 OR X86_64) )
219 OCV_OPTION(WITH_MATLAB         "Include Matlab support"                      ON   IF (NOT ANDROID AND NOT IOS AND NOT WINRT))
220 OCV_OPTION(WITH_VA             "Include VA support"                          OFF  IF (UNIX AND NOT ANDROID) )
221 OCV_OPTION(WITH_VA_INTEL       "Include Intel VA-API/OpenCL support"         OFF  IF (UNIX AND NOT ANDROID) )
222 OCV_OPTION(WITH_GDAL           "Include GDAL Support"                        OFF  IF (NOT ANDROID AND NOT IOS AND NOT WINRT) )
223 OCV_OPTION(WITH_GPHOTO2        "Include gPhoto2 library support"             ON   IF (UNIX AND NOT ANDROID) )
224 OCV_OPTION(WITH_LAPACK         "Include Lapack library support"              ON   IF (UNIX AND NOT ANDROID) )
225
226 # OpenCV build components
227 # ===================================================
228 OCV_OPTION(BUILD_SHARED_LIBS        "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" NOT (ANDROID OR APPLE_FRAMEWORK) )
229 OCV_OPTION(BUILD_opencv_apps        "Build utility applications (used for example to train classifiers)" (NOT ANDROID AND NOT WINRT) IF (NOT APPLE_FRAMEWORK) )
230 OCV_OPTION(BUILD_ANDROID_EXAMPLES   "Build examples for Android platform"         ON  IF ANDROID )
231 OCV_OPTION(BUILD_DOCS               "Create build rules for OpenCV Documentation" ON  IF (NOT WINRT OR APPLE_FRAMEWORK))
232 OCV_OPTION(BUILD_EXAMPLES           "Build all examples"                          OFF )
233 OCV_OPTION(BUILD_PACKAGE            "Enables 'make package_source' command"       ON  IF NOT WINRT)
234 OCV_OPTION(BUILD_PERF_TESTS         "Build performance tests"                     ON  IF (NOT APPLE_FRAMEWORK) )
235 OCV_OPTION(BUILD_TESTS              "Build accuracy & regression tests"           ON  IF (NOT APPLE_FRAMEWORK) )
236 OCV_OPTION(BUILD_WITH_DEBUG_INFO    "Include debug info into debug libs (not MSCV only)" ON )
237 OCV_OPTION(BUILD_WITH_STATIC_CRT    "Enables use of staticaly linked CRT for staticaly linked OpenCV" ON IF MSVC )
238 OCV_OPTION(BUILD_WITH_DYNAMIC_IPP   "Enables dynamic linking of IPP (only for standalone IPP)" OFF )
239 OCV_OPTION(BUILD_FAT_JAVA_LIB       "Create fat java wrapper containing the whole OpenCV library" ON IF NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX )
240 OCV_OPTION(BUILD_ANDROID_SERVICE    "Build OpenCV Manager for Google Play" OFF IF ANDROID )
241 OCV_OPTION(BUILD_CUDA_STUBS         "Build CUDA modules stubs when no CUDA SDK" OFF  IF (NOT APPLE_FRAMEWORK) )
242
243 # 3rd party libs
244 OCV_OPTION(BUILD_ZLIB               "Build zlib from source"             WIN32 OR APPLE )
245 OCV_OPTION(BUILD_TIFF               "Build libtiff from source"          WIN32 OR ANDROID OR APPLE )
246 OCV_OPTION(BUILD_JASPER             "Build libjasper from source"        WIN32 OR ANDROID OR APPLE )
247 OCV_OPTION(BUILD_JPEG               "Build libjpeg from source"          WIN32 OR ANDROID OR APPLE )
248 OCV_OPTION(BUILD_PNG                "Build libpng from source"           WIN32 OR ANDROID OR APPLE )
249 OCV_OPTION(BUILD_OPENEXR            "Build openexr from source"          (WIN32 OR ANDROID OR APPLE) AND NOT WINRT)
250 OCV_OPTION(BUILD_TBB                "Download and build TBB from source" ANDROID )
251
252 # OpenCV installation options
253 # ===================================================
254 OCV_OPTION(INSTALL_CREATE_DISTRIB   "Change install rules to build the distribution package" OFF )
255 OCV_OPTION(INSTALL_C_EXAMPLES       "Install C examples"        OFF )
256 OCV_OPTION(INSTALL_PYTHON_EXAMPLES  "Install Python examples"   OFF )
257 OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples"  OFF IF ANDROID )
258 OCV_OPTION(INSTALL_TO_MANGLED_PATHS "Enables mangled install paths, that help with side by side installs." OFF IF (UNIX AND NOT ANDROID AND NOT APPLE_FRAMEWORK AND BUILD_SHARED_LIBS) )
259 OCV_OPTION(INSTALL_TESTS            "Install accuracy and performance test binaries and test data" OFF)
260
261 # OpenCV build options
262 # ===================================================
263 OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers"                                  ON IF (NOT IOS AND NOT CMAKE_CROSSCOMPILING) )
264 OCV_OPTION(ENABLE_SOLUTION_FOLDERS    "Solution folder in Visual Studio or in other IDEs"        (MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode) )
265 OCV_OPTION(ENABLE_PROFILING           "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF  IF CMAKE_COMPILER_IS_GNUCXX )
266 OCV_OPTION(ENABLE_COVERAGE            "Enable coverage collection with  GCov"                    OFF  IF CMAKE_COMPILER_IS_GNUCXX )
267 OCV_OPTION(ENABLE_OMIT_FRAME_POINTER  "Enable -fomit-frame-pointer for GCC"                      ON   IF CMAKE_COMPILER_IS_GNUCXX AND NOT (APPLE AND CMAKE_COMPILER_IS_CLANGCXX) )
268 OCV_OPTION(ENABLE_POWERPC             "Enable PowerPC for GCC"                                   ON   IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
269 OCV_OPTION(ENABLE_FAST_MATH           "Enable -ffast-math (not recommended for GCC 4.6.x)"       OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
270 OCV_OPTION(ENABLE_SSE                 "Enable SSE instructions"                                  ON   IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
271 OCV_OPTION(ENABLE_SSE2                "Enable SSE2 instructions"                                 ON   IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
272 OCV_OPTION(ENABLE_SSE3                "Enable SSE3 instructions"                                 ON   IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )
273 OCV_OPTION(ENABLE_SSSE3               "Enable SSSE3 instructions"                                OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
274 OCV_OPTION(ENABLE_SSE41               "Enable SSE4.1 instructions"                               OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) AND (X86 OR X86_64)) )
275 OCV_OPTION(ENABLE_SSE42               "Enable SSE4.2 instructions"                               OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
276 OCV_OPTION(ENABLE_POPCNT              "Enable POPCNT instructions"                               OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
277 OCV_OPTION(ENABLE_AVX                 "Enable AVX instructions"                                  OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
278 OCV_OPTION(ENABLE_AVX2                "Enable AVX2 instructions"                                 OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
279 OCV_OPTION(ENABLE_FMA3                "Enable FMA3 instructions"                                 OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
280 OCV_OPTION(ENABLE_NEON                "Enable NEON instructions"                                 "${NEON}" IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
281 OCV_OPTION(ENABLE_VFPV3               "Enable VFPv3-D32 instructions"                            OFF  IF CMAKE_COMPILER_IS_GNUCXX AND (ARM OR AARCH64 OR IOS) )
282 OCV_OPTION(ENABLE_NOISY_WARNINGS      "Show all warnings even if they are too noisy"             OFF )
283 OCV_OPTION(OPENCV_WARNINGS_ARE_ERRORS "Treat warnings as errors"                                 OFF )
284 OCV_OPTION(ANDROID_EXAMPLES_WITH_LIBS "Build binaries of Android examples with native libraries" OFF  IF ANDROID )
285 OCV_OPTION(ENABLE_IMPL_COLLECTION     "Collect implementation data on function call"             OFF )
286 OCV_OPTION(GENERATE_ABI_DESCRIPTOR    "Generate XML file for abi_compliance_checker tool" OFF IF UNIX)
287
288 OCV_OPTION(DOWNLOAD_EXTERNAL_TEST_DATA "Download external test data (Python executable and OPENCV_TEST_DATA_PATH environment variable may be required)" OFF )
289
290
291 if(ENABLE_IMPL_COLLECTION)
292   add_definitions(-DCV_COLLECT_IMPL_DATA)
293 endif()
294
295
296 # ----------------------------------------------------------------------------
297 #  Get actual OpenCV version number from sources
298 # ----------------------------------------------------------------------------
299 include(cmake/OpenCVVersion.cmake)
300
301
302 # ----------------------------------------------------------------------------
303 #  Build & install layouts
304 # ----------------------------------------------------------------------------
305
306 # Save libs and executables in the same place
307 set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications")
308
309 if(ANDROID)
310   if(ANDROID_ABI MATCHES "NEON")
311     set(ENABLE_NEON ON)
312   endif()
313   if(ANDROID_ABI MATCHES "VFPV3")
314     set(ENABLE_VFPV3 ON)
315   endif()
316 endif()
317
318 if(ANDROID OR WIN32)
319   ocv_update(OPENCV_DOC_INSTALL_PATH doc)
320 else()
321   ocv_update(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
322 endif()
323
324 if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
325   if(DEFINED OpenCV_RUNTIME AND DEFINED OpenCV_ARCH)
326     ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "${OpenCV_ARCH}/${OpenCV_RUNTIME}/")
327   else()
328     message(STATUS "Can't detect runtime and/or arch")
329     ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "")
330   endif()
331 elseif(ANDROID)
332   ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "sdk/native/")
333 else()
334   ocv_update(OpenCV_INSTALL_BINARIES_PREFIX "")
335 endif()
336
337 if(ANDROID)
338   ocv_update(OPENCV_SAMPLES_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}samples/${ANDROID_NDK_ABI_NAME}")
339 else()
340   ocv_update(OPENCV_SAMPLES_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}samples")
341 endif()
342
343 if(ANDROID)
344   ocv_update(OPENCV_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}bin/${ANDROID_NDK_ABI_NAME}")
345 else()
346   ocv_update(OPENCV_BIN_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}bin")
347 endif()
348
349 if(NOT OPENCV_TEST_INSTALL_PATH)
350   ocv_update(OPENCV_TEST_INSTALL_PATH "${OPENCV_BIN_INSTALL_PATH}")
351 endif()
352
353 if (OPENCV_TEST_DATA_PATH)
354   get_filename_component(OPENCV_TEST_DATA_PATH ${OPENCV_TEST_DATA_PATH} ABSOLUTE)
355 endif()
356
357 if(OPENCV_TEST_DATA_PATH AND NOT OPENCV_TEST_DATA_INSTALL_PATH)
358   if(ANDROID)
359     ocv_update(OPENCV_TEST_DATA_INSTALL_PATH "sdk/etc/testdata")
360   elseif(WIN32)
361     ocv_update(OPENCV_TEST_DATA_INSTALL_PATH "testdata")
362   else()
363     ocv_update(OPENCV_TEST_DATA_INSTALL_PATH "share/OpenCV/testdata")
364   endif()
365 endif()
366
367 if(ANDROID)
368   set(LIBRARY_OUTPUT_PATH                "${OpenCV_BINARY_DIR}/lib/${ANDROID_NDK_ABI_NAME}")
369   ocv_update(3P_LIBRARY_OUTPUT_PATH      "${OpenCV_BINARY_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}")
370   ocv_update(OPENCV_LIB_INSTALL_PATH     sdk/native/libs/${ANDROID_NDK_ABI_NAME})
371   ocv_update(OPENCV_3P_LIB_INSTALL_PATH  sdk/native/3rdparty/libs/${ANDROID_NDK_ABI_NAME})
372   ocv_update(OPENCV_CONFIG_INSTALL_PATH  sdk/native/jni)
373   ocv_update(OPENCV_INCLUDE_INSTALL_PATH sdk/native/jni/include)
374   ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH samples/native)
375   ocv_update(OPENCV_OTHER_INSTALL_PATH   sdk/etc)
376 else()
377   set(LIBRARY_OUTPUT_PATH                "${OpenCV_BINARY_DIR}/lib")
378   ocv_update(3P_LIBRARY_OUTPUT_PATH      "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
379
380   if(WIN32 AND CMAKE_HOST_SYSTEM_NAME MATCHES Windows)
381     if(OpenCV_STATIC)
382       ocv_update(OPENCV_LIB_INSTALL_PATH   "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
383     else()
384       ocv_update(OPENCV_LIB_INSTALL_PATH   "${OpenCV_INSTALL_BINARIES_PREFIX}lib${LIB_SUFFIX}")
385     endif()
386     ocv_update(OPENCV_3P_LIB_INSTALL_PATH  "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}")
387     ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH    samples/native)
388     ocv_update(OPENCV_JAR_INSTALL_PATH java)
389     ocv_update(OPENCV_OTHER_INSTALL_PATH   etc)
390     ocv_update(OPENCV_CONFIG_INSTALL_PATH  ".")
391   else()
392     ocv_update(OPENCV_LIB_INSTALL_PATH     lib${LIB_SUFFIX})
393     ocv_update(OPENCV_3P_LIB_INSTALL_PATH  share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH})
394     ocv_update(OPENCV_SAMPLES_SRC_INSTALL_PATH    share/OpenCV/samples)
395     ocv_update(OPENCV_JAR_INSTALL_PATH share/OpenCV/java)
396     ocv_update(OPENCV_OTHER_INSTALL_PATH   share/OpenCV)
397
398     if(NOT DEFINED OPENCV_CONFIG_INSTALL_PATH)
399       math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}")
400       if(LIB_SUFFIX AND NOT SIZEOF_VOID_P_BITS EQUAL LIB_SUFFIX)
401         ocv_update(OPENCV_CONFIG_INSTALL_PATH lib${LIB_SUFFIX}/cmake/opencv)
402       else()
403         ocv_update(OPENCV_CONFIG_INSTALL_PATH share/OpenCV)
404       endif()
405     endif()
406   endif()
407   ocv_update(OPENCV_INCLUDE_INSTALL_PATH "include")
408 endif()
409
410 ocv_update(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
411 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
412
413 if(INSTALL_TO_MANGLED_PATHS)
414   set(OPENCV_INCLUDE_INSTALL_PATH ${OPENCV_INCLUDE_INSTALL_PATH}/opencv-${OPENCV_VERSION})
415   foreach(v
416       OPENCV_3P_LIB_INSTALL_PATH
417       OPENCV_SAMPLES_SRC_INSTALL_PATH
418       OPENCV_CONFIG_INSTALL_PATH
419       OPENCV_DOC_INSTALL_PATH
420       OPENCV_JAR_INSTALL_PATH
421       OPENCV_TEST_DATA_INSTALL_PATH
422       OPENCV_OTHER_INSTALL_PATH
423     )
424     string(REPLACE "OpenCV" "OpenCV-${OPENCV_VERSION}" ${v} "${${v}}")
425     string(REPLACE "opencv" "opencv-${OPENCV_VERSION}" ${v} "${${v}}")
426   endforeach()
427 endif()
428
429
430 if(WIN32)
431   # Postfix of DLLs:
432   set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
433   set(OPENCV_DEBUG_POSTFIX d)
434 else()
435   # Postfix of so's:
436   set(OPENCV_DLLVERSION "")
437   set(OPENCV_DEBUG_POSTFIX "")
438 endif()
439
440 if(DEFINED CMAKE_DEBUG_POSTFIX)
441   set(OPENCV_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
442 endif()
443
444 if((INSTALL_CREATE_DISTRIB AND BUILD_SHARED_LIBS AND NOT DEFINED BUILD_opencv_world) OR APPLE_FRAMEWORK)
445   set(BUILD_opencv_world ON CACHE INTERNAL "")
446 endif()
447
448 # ----------------------------------------------------------------------------
449 #  Path for build/platform -specific headers
450 # ----------------------------------------------------------------------------
451 ocv_update(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
452 ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
453
454 # ----------------------------------------------------------------------------
455 #  Path for additional modules
456 # ----------------------------------------------------------------------------
457 set(OPENCV_EXTRA_MODULES_PATH "" CACHE PATH "Where to look for additional OpenCV modules")
458
459 # ----------------------------------------------------------------------------
460 #  Autodetect if we are in a GIT repository
461 # ----------------------------------------------------------------------------
462 find_host_package(Git QUIET)
463
464 if(NOT DEFINED OPENCV_VCSVERSION AND GIT_FOUND)
465   execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --always --dirty --match "[0-9].[0-9].[0-9]*"
466     WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
467     OUTPUT_VARIABLE OPENCV_VCSVERSION
468     RESULT_VARIABLE GIT_RESULT
469     ERROR_QUIET
470     OUTPUT_STRIP_TRAILING_WHITESPACE
471   )
472   if(NOT GIT_RESULT EQUAL 0)
473     set(OPENCV_VCSVERSION "unknown")
474   endif()
475 elseif(NOT DEFINED OPENCV_VCSVERSION)
476   # We don't have git:
477   set(OPENCV_VCSVERSION "unknown")
478 endif()
479
480
481 # ----------------------------------------------------------------------------
482 # OpenCV compiler and linker options
483 # ----------------------------------------------------------------------------
484 # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
485 if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
486   set(CMAKE_BUILD_TYPE Release)
487 endif()
488
489 include(cmake/OpenCVCompilerOptions.cmake)
490
491
492 # ----------------------------------------------------------------------------
493 # Use statically or dynamically linked CRT?
494 # Default: dynamic
495 # ----------------------------------------------------------------------------
496 if(MSVC)
497   include(cmake/OpenCVCRTLinkage.cmake)
498 endif(MSVC)
499
500 if(WIN32 AND NOT MINGW)
501   add_definitions(-D_VARIADIC_MAX=10)
502 endif(WIN32 AND NOT MINGW)
503
504
505 # ----------------------------------------------------------------------------
506 #       CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
507 # ----------------------------------------------------------------------------
508 if(UNIX)
509   find_package(PkgConfig QUIET)
510   include(CheckFunctionExists)
511   include(CheckIncludeFile)
512
513   if(NOT APPLE)
514     CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)
515     if(ANDROID)
516       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m log)
517     elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|DragonFly|OpenBSD")
518       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m pthread)
519     elseif(EMSCRIPTEN)
520       # no need to link to system libs with emscripten
521     else()
522       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m pthread rt)
523     endif()
524   else()
525     set(HAVE_LIBPTHREAD YES)
526   endif()
527 endif()
528
529 include(cmake/OpenCVPCHSupport.cmake)
530 include(cmake/OpenCVModule.cmake)
531
532 # ----------------------------------------------------------------------------
533 #  Detect endianness of build platform
534 # ----------------------------------------------------------------------------
535
536 if(IOS)
537   # test_big_endian needs try_compile, which doesn't work for iOS
538   # http://public.kitware.com/Bug/view.php?id=12288
539   set(WORDS_BIGENDIAN 0)
540 else()
541   include(TestBigEndian)
542   test_big_endian(WORDS_BIGENDIAN)
543 endif()
544
545 # ----------------------------------------------------------------------------
546 #  Detect 3rd-party libraries
547 # ----------------------------------------------------------------------------
548
549 include(cmake/OpenCVFindLibsGrfmt.cmake)
550 include(cmake/OpenCVFindLibsGUI.cmake)
551 include(cmake/OpenCVFindLibsVideo.cmake)
552 include(cmake/OpenCVFindLibsPerf.cmake)
553
554 # ----------------------------------------------------------------------------
555 #  Detect other 3rd-party libraries/tools
556 # ----------------------------------------------------------------------------
557
558 # --- Doxygen and PlantUML for documentation ---
559 unset(DOXYGEN_FOUND CACHE)
560 if(BUILD_DOCS)
561   find_package(Doxygen)
562   if (PLANTUML_JAR)
563     message(STATUS "Using PlantUML path from command line: ${PLANTUML_JAR}")
564   elseif(DEFINED ENV{PLANTUML_JAR})
565     set(PLANTUML_JAR $ENV{PLANTUML_JAR})
566     message(STATUS "Using PLantUML path from environment: ${PLANTUML_JAR}")
567   else()
568     message(STATUS "To enable PlantUML support, set PLANTUML_JAR environment variable or pass -DPLANTUML_JAR=<filepath> option to cmake")
569   endif()
570   if (PLANTUML_JAR AND DOXYGEN_VERSION VERSION_LESS 1.8.8)
571     message(STATUS "You need Doxygen version 1.8.8 or later to use PlantUML")
572     unset(PLANTUML_JAR)
573   endif()
574 endif(BUILD_DOCS)
575
576 # --- Python Support ---
577 include(cmake/OpenCVDetectPython.cmake)
578
579 # --- Java Support ---
580 include(cmake/OpenCVDetectApacheAnt.cmake)
581 if(ANDROID)
582   include(cmake/OpenCVDetectAndroidSDK.cmake)
583
584   if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13)
585     message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.")
586   endif()
587 else()
588   find_package(JNI)
589 endif()
590
591 if(ANDROID AND ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND (ANT_VERSION VERSION_GREATER 1.7) AND (ANDROID_TOOLS_Pkg_Revision GREATER 13))
592   SET(CAN_BUILD_ANDROID_PROJECTS TRUE)
593 else()
594   SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
595 endif()
596
597 # --- OpenCL ---
598 if(WITH_OPENCL)
599   include(cmake/OpenCVDetectOpenCL.cmake)
600 endif()
601
602 # --- DirectX ---
603 if(WITH_DIRECTX)
604   include(cmake/OpenCVDetectDirectX.cmake)
605 endif()
606
607 # --- Matlab/Octave ---
608 if(WITH_MATLAB)
609   include(cmake/OpenCVFindMatlab.cmake)
610 endif()
611
612 include(cmake/OpenCVDetectVTK.cmake)
613
614
615 # ----------------------------------------------------------------------------
616 # OpenCV HAL
617 # ----------------------------------------------------------------------------
618 set(_hal_includes "")
619 macro(ocv_hal_register HAL_LIBRARIES_VAR HAL_HEADERS_VAR HAL_INCLUDE_DIRS_VAR)
620   # 1. libraries
621   foreach (l ${${HAL_LIBRARIES_VAR}})
622     if(NOT TARGET ${l})
623       get_filename_component(l "${l}" ABSOLUTE)
624     endif()
625     list(APPEND OPENCV_HAL_LINKER_LIBS ${l})
626   endforeach()
627   # 2. headers
628   foreach (h ${${HAL_HEADERS_VAR}})
629     set(_hal_includes "${_hal_includes}\n#include \"${h}\"")
630   endforeach()
631   # 3. include paths
632   ocv_include_directories(${${HAL_INCLUDE_DIRS_VAR}})
633 endmacro()
634
635 if(NOT DEFINED OpenCV_HAL)
636   set(OpenCV_HAL "OpenCV_HAL")
637 endif()
638
639 if(WITH_CAROTENE)
640   ocv_debug_message(STATUS "Enable carotene acceleration")
641   if(NOT ";${OpenCV_HAL};" MATCHES ";carotene;")
642     set(OpenCV_HAL "carotene;${OpenCV_HAL}")
643   endif()
644 endif()
645
646 foreach(hal ${OpenCV_HAL})
647   if(hal STREQUAL "carotene")
648     add_subdirectory(3rdparty/carotene/hal)
649     ocv_hal_register(CAROTENE_HAL_LIBRARIES CAROTENE_HAL_HEADERS CAROTENE_HAL_INCLUDE_DIRS)
650     list(APPEND OpenCV_USED_HAL "carotene (ver ${CAROTENE_HAL_VERSION})")
651   else()
652     ocv_debug_message(STATUS "OpenCV HAL: ${hal} ...")
653     ocv_clear_vars(OpenCV_HAL_LIBRARIES OpenCV_HAL_HEADERS OpenCV_HAL_INCLUDE_DIRS)
654     find_package(${hal} NO_MODULE QUIET)
655     if(${hal}_FOUND)
656       ocv_hal_register(OpenCV_HAL_LIBRARIES OpenCV_HAL_HEADERS OpenCV_HAL_INCLUDE_DIRS)
657       list(APPEND OpenCV_USED_HAL "${hal} (ver ${${hal}_VERSION})")
658     endif()
659   endif()
660 endforeach()
661 configure_file("${OpenCV_SOURCE_DIR}/cmake/templates/custom_hal.hpp.in" "${CMAKE_BINARY_DIR}/custom_hal.hpp" @ONLY)
662 unset(_hal_includes)
663
664
665 # ----------------------------------------------------------------------------
666 # Add CUDA libraries (needed for apps/tools, samples)
667 # ----------------------------------------------------------------------------
668 if(HAVE_CUDA)
669   set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY})
670   if(HAVE_CUBLAS)
671     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CUDA_cublas_LIBRARY})
672   endif()
673   if(HAVE_CUFFT)
674     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CUDA_cufft_LIBRARY})
675   endif()
676   foreach(p ${CUDA_LIBS_PATH})
677     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CMAKE_LIBRARY_PATH_FLAG}${p})
678   endforeach()
679 endif()
680 # ----------------------------------------------------------------------------
681 # Solution folders:
682 # ----------------------------------------------------------------------------
683 if(ENABLE_SOLUTION_FOLDERS)
684   set_property(GLOBAL PROPERTY USE_FOLDERS ON)
685   set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
686 endif()
687
688 # Extra OpenCV targets: uninstall, package_source, perf, etc.
689 include(cmake/OpenCVExtraTargets.cmake)
690
691
692 # ----------------------------------------------------------------------------
693 # Process subdirectories
694 # ----------------------------------------------------------------------------
695
696 # opencv.hpp and legacy headers
697 add_subdirectory(include)
698
699 # OpenCV modules
700 add_subdirectory(modules)
701
702 # Generate targets for documentation
703 add_subdirectory(doc)
704
705 # various data that is used by cv libraries and/or demo applications.
706 add_subdirectory(data)
707
708 # extra applications
709 if(BUILD_opencv_apps)
710   add_subdirectory(apps)
711 endif()
712
713 # examples
714 if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
715   add_subdirectory(samples)
716 endif()
717
718 if(ANDROID)
719   add_subdirectory(platforms/android/service)
720 endif()
721
722 # ----------------------------------------------------------------------------
723 # Finalization: generate configuration-based files
724 # ----------------------------------------------------------------------------
725
726 # Generate platform-dependent and configuration-dependent headers
727 include(cmake/OpenCVGenHeaders.cmake)
728
729 # Generate opencv.pc for pkg-config command
730 include(cmake/OpenCVGenPkgconfig.cmake)
731
732 # Generate OpenCV.mk for ndk-build (Android build tool)
733 include(cmake/OpenCVGenAndroidMK.cmake)
734
735 # Generate OpenCVConfig.cmake and OpenCVConfig-version.cmake for cmake projects
736 include(cmake/OpenCVGenConfig.cmake)
737
738 # Generate Info.plist for the IOS framework
739 if(APPLE_FRAMEWORK)
740   include(cmake/OpenCVGenInfoPlist.cmake)
741 endif()
742
743 # Generate ABI descriptor
744 include(cmake/OpenCVGenABI.cmake)
745
746 # Generate environment setup file
747 if(INSTALL_TESTS AND OPENCV_TEST_DATA_PATH)
748   if(ANDROID)
749     get_filename_component(TEST_PATH ${OPENCV_TEST_INSTALL_PATH} DIRECTORY)
750     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/opencv_run_all_tests_android.sh.in"
751                    "${CMAKE_BINARY_DIR}/unix-install/opencv_run_all_tests.sh" @ONLY)
752     install(PROGRAMS "${CMAKE_BINARY_DIR}/unix-install/opencv_run_all_tests.sh"
753             DESTINATION ./ COMPONENT tests)
754   elseif(WIN32)
755     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/opencv_run_all_tests_windows.cmd.in"
756                    "${CMAKE_BINARY_DIR}/win-install/opencv_run_all_tests.cmd" @ONLY)
757     install(PROGRAMS "${CMAKE_BINARY_DIR}/win-install/opencv_run_all_tests.cmd"
758             DESTINATION ${OPENCV_TEST_INSTALL_PATH} COMPONENT tests)
759   elseif(UNIX)
760     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/opencv_run_all_tests_unix.sh.in"
761                    "${CMAKE_BINARY_DIR}/unix-install/opencv_run_all_tests.sh" @ONLY)
762     install(PROGRAMS "${CMAKE_BINARY_DIR}/unix-install/opencv_run_all_tests.sh"
763             DESTINATION ${OPENCV_TEST_INSTALL_PATH} COMPONENT tests)
764   endif()
765 endif()
766
767 if(NOT OPENCV_README_FILE)
768   if(ANDROID)
769     set(OPENCV_README_FILE ${CMAKE_CURRENT_SOURCE_DIR}/platforms/android/README.android)
770   endif()
771 endif()
772
773 if(NOT OPENCV_LICENSE_FILE)
774   set(OPENCV_LICENSE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
775 endif()
776
777 # for UNIX it does not make sense as LICENSE and readme will be part of the package automatically
778 if(ANDROID OR NOT UNIX)
779   install(FILES ${OPENCV_LICENSE_FILE}
780         PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
781         DESTINATION ./ COMPONENT libs)
782   if(OPENCV_README_FILE)
783     install(FILES ${OPENCV_README_FILE}
784             PERMISSIONS OWNER_READ GROUP_READ WORLD_READ
785             DESTINATION ./ COMPONENT libs)
786   endif()
787 endif()
788
789 # ----------------------------------------------------------------------------
790 # Summary:
791 # ----------------------------------------------------------------------------
792 status("")
793 status("General configuration for OpenCV ${OPENCV_VERSION} =====================================")
794 if(OPENCV_VCSVERSION)
795   status("  Version control:" ${OPENCV_VCSVERSION})
796 endif()
797 if(OPENCV_EXTRA_MODULES_PATH AND NOT BUILD_INFO_SKIP_EXTRA_MODULES)
798   set(__dump_extra_header OFF)
799   foreach(p ${OPENCV_EXTRA_MODULES_PATH})
800     if(EXISTS ${p})
801       if(NOT __dump_extra_header)
802         set(__dump_extra_header ON)
803         status("")
804         status("  Extra modules:")
805       else()
806         status("")
807       endif()
808       set(EXTRA_MODULES_VCSVERSION "unknown")
809       if(GIT_FOUND)
810         execute_process(COMMAND "${GIT_EXECUTABLE}" describe --tags --always --dirty --match "[0-9].[0-9].[0-9]*"
811           WORKING_DIRECTORY "${p}"
812           OUTPUT_VARIABLE EXTRA_MODULES_VCSVERSION
813           RESULT_VARIABLE GIT_RESULT
814           ERROR_QUIET
815           OUTPUT_STRIP_TRAILING_WHITESPACE
816         )
817         if(NOT GIT_RESULT EQUAL 0)
818           set(EXTRA_MODULES_VCSVERSION "unknown")
819         endif()
820       endif()
821       status("    Location (extra):" ${p})
822       status("    Version control (extra):" ${EXTRA_MODULES_VCSVERSION})
823     endif()
824   endforeach()
825   unset(__dump_extra_header)
826 endif()
827
828 # ========================== build platform ==========================
829 status("")
830 status("  Platform:")
831 if(NOT CMAKE_VERSION VERSION_LESS 2.8.11 AND NOT BUILD_INFO_SKIP_TIMESTAMP)
832   string(TIMESTAMP TIMESTAMP "" UTC)
833   if(TIMESTAMP)
834     status("    Timestamp:"    ${TIMESTAMP})
835   endif()
836 endif()
837 status("    Host:"             ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR})
838 if(CMAKE_CROSSCOMPILING)
839   status("    Target:"         ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
840 endif()
841 status("    CMake:"            ${CMAKE_VERSION})
842 status("    CMake generator:"  ${CMAKE_GENERATOR})
843 status("    CMake build tool:" ${CMAKE_BUILD_TOOL})
844 if(MSVC)
845   status("    MSVC:"           ${MSVC_VERSION})
846 endif()
847 if(CMAKE_GENERATOR MATCHES Xcode)
848   status("    Xcode:"          ${XCODE_VERSION})
849 endif()
850 if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
851   status("    Configuration:"  ${CMAKE_BUILD_TYPE})
852 endif()
853
854 # ========================== C/C++ options ==========================
855 if(CMAKE_CXX_COMPILER_VERSION)
856   set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CXX_COMPILER_VERSION})")
857 elseif(CMAKE_COMPILER_IS_CLANGCXX)
858   set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_CLANG_REGEX_VERSION})")
859 elseif(CMAKE_COMPILER_IS_GNUCXX)
860   set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_GCC_REGEX_VERSION})")
861 else()
862   set(OPENCV_COMPILER_STR "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}")
863 endif()
864 string(STRIP "${OPENCV_COMPILER_STR}" OPENCV_COMPILER_STR)
865
866 status("")
867 status("  C/C++:")
868 status("    Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO)
869 status("    C++ Compiler:"           ${OPENCV_COMPILER_STR})
870 status("    C++ flags (Release):"    ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
871 status("    C++ flags (Debug):"      ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
872 status("    C Compiler:"             ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1})
873 status("    C flags (Release):"      ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE})
874 status("    C flags (Debug):"        ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG})
875 if(WIN32)
876   status("    Linker flags (Release):" ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE})
877   status("    Linker flags (Debug):"   ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
878 else()
879   status("    Linker flags (Release):" ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
880   status("    Linker flags (Debug):"   ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
881 endif()
882 status("    Precompiled headers:"     PCHSupport_FOUND AND ENABLE_PRECOMPILED_HEADERS THEN YES ELSE NO)
883
884 # ========================== Dependencies ============================
885 ocv_get_all_libs(deps_modules deps_extra deps_3rdparty)
886 status("    Extra dependencies:" ${deps_extra})
887 status("    3rdparty dependencies:" ${deps_3rdparty})
888
889 # ========================== OpenCV modules ==========================
890 status("")
891 status("  OpenCV modules:")
892 string(REPLACE "opencv_" "" OPENCV_MODULES_BUILD_ST          "${OPENCV_MODULES_BUILD}")
893 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_USER_ST  "${OPENCV_MODULES_DISABLED_USER}")
894 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_FORCE_ST "${OPENCV_MODULES_DISABLED_FORCE}")
895 set(OPENCV_MODULES_DISABLED_AUTO_ST "")
896 foreach(m ${OPENCV_MODULES_DISABLED_AUTO})
897   set(__mdeps "")
898   foreach(d ${OPENCV_MODULE_${m}_DEPS})
899     if(d MATCHES "^opencv_" AND NOT HAVE_${d})
900       list(APPEND __mdeps ${d})
901     endif()
902   endforeach()
903   if(__mdeps)
904     list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
905   else()
906     list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}")
907   endif()
908 endforeach()
909 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST  "${OPENCV_MODULES_DISABLED_AUTO_ST}")
910
911 status("    To be built:"            OPENCV_MODULES_BUILD          THEN ${OPENCV_MODULES_BUILD_ST}          ELSE "-")
912 status("    Disabled:"               OPENCV_MODULES_DISABLED_USER  THEN ${OPENCV_MODULES_DISABLED_USER_ST}  ELSE "-")
913 status("    Disabled by dependency:" OPENCV_MODULES_DISABLED_AUTO  THEN ${OPENCV_MODULES_DISABLED_AUTO_ST}  ELSE "-")
914 status("    Unavailable:"            OPENCV_MODULES_DISABLED_FORCE THEN ${OPENCV_MODULES_DISABLED_FORCE_ST} ELSE "-")
915
916 # ========================== Android details ==========================
917 if(ANDROID)
918   status("")
919   status("  Android: ")
920   status("    Android ABI:" ${ANDROID_ABI})
921   status("    STL type:" ${ANDROID_STL})
922   status("    Native API level:" android-${ANDROID_NATIVE_API_LEVEL})
923   android_get_compatible_target(android_sdk_target_status ${ANDROID_NATIVE_API_LEVEL} ${ANDROID_SDK_TARGET} 11)
924   status("    SDK target:" "${android_sdk_target_status}")
925   if(BUILD_WITH_ANDROID_NDK)
926     status("    Android NDK:" "${ANDROID_NDK} (toolchain: ${ANDROID_TOOLCHAIN_NAME})")
927   elseif(BUILD_WITH_STANDALONE_TOOLCHAIN)
928     status("    Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
929   endif()
930   status("    android tool:"  ANDROID_EXECUTABLE  THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
931   status("    Google Play manager:" BUILD_ANDROID_SERVICE                                         THEN YES ELSE NO)
932   status("    Android examples:"    BUILD_ANDROID_EXAMPLES AND CAN_BUILD_ANDROID_PROJECTS         THEN YES ELSE NO)
933 endif()
934
935 # ================== Windows RT features ==================
936 if(WIN32)
937 status("")
938 status("  Windows RT support:" WINRT THEN YES ELSE NO)
939   if(WINRT)
940     status("    Building for Microsoft platform: " ${CMAKE_SYSTEM_NAME})
941     status("    Building for architectures: " ${CMAKE_VS_EFFECTIVE_PLATFORMS})
942     status("    Building for version: " ${CMAKE_SYSTEM_VERSION})
943     if (DEFINED ENABLE_WINRT_MODE_NATIVE)
944       status("    Building for C++ without CX extensions")
945     endif()
946   endif()
947 endif(WIN32)
948
949 # ========================== GUI ==========================
950 status("")
951 status("  GUI: ")
952
953 if(HAVE_QT5)
954   status("    QT 5.x:"            HAVE_QT        THEN "YES (ver ${Qt5Core_VERSION_STRING})" ELSE NO)
955   status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${Qt5OpenGL_LIBRARIES} ${Qt5OpenGL_VERSION_STRING})" ELSE NO)
956 elseif(HAVE_QT)
957   status("    QT 4.x:"            HAVE_QT        THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
958   status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
959 else()
960   if(DEFINED WITH_QT)
961     status("    QT:" NO)
962   endif()
963   if(DEFINED WITH_WIN32UI)
964     status("    Win32 UI:" HAVE_WIN32UI THEN YES ELSE NO)
965   else()
966     if(APPLE)
967       if(WITH_CARBON)
968         status("    Carbon:" YES)
969       else()
970         status("    Cocoa:"  YES)
971       endif()
972     else()
973       if(HAVE_GTK3)
974         status("    GTK+ 3.x:" HAVE_GTK THEN "YES (ver ${ALIASOF_gtk+-3.0_VERSION})" ELSE NO)
975       elseif(HAVE_GTK)
976         status("    GTK+ 2.x:" HAVE_GTK THEN "YES (ver ${ALIASOF_gtk+-2.0_VERSION})" ELSE NO)
977       else()
978         status("    GTK+:" NO)
979       endif()
980       status("    GThread :" HAVE_GTHREAD THEN "YES (ver ${ALIASOF_gthread-2.0_VERSION})" ELSE NO)
981       status("    GtkGlExt:" HAVE_GTKGLEXT THEN "YES (ver ${ALIASOF_gtkglext-1.0_VERSION})" ELSE NO)
982     endif()
983   endif()
984 endif()
985
986 status("    OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO)
987 status("    VTK support:" HAVE_VTK THEN "YES (ver ${VTK_VERSION})" ELSE NO)
988
989 # ========================== MEDIA IO ==========================
990 status("")
991 status("  Media I/O: ")
992 status("    ZLib:"         BUILD_ZLIB    THEN "build (ver ${ZLIB_VERSION_STRING})"               ELSE "${ZLIB_LIBRARIES} (ver ${ZLIB_VERSION_STRING})")
993
994 if(WITH_JPEG)
995   status("    JPEG:"       JPEG_FOUND    THEN "${JPEG_LIBRARY} (ver ${JPEG_LIB_VERSION})"        ELSE "build (ver ${JPEG_LIB_VERSION})")
996 else()
997   status("    JPEG:"       "NO")
998 endif()
999
1000 if(WITH_WEBP)
1001   status("    WEBP:"       WEBP_FOUND    THEN "${WEBP_LIBRARY} (ver ${WEBP_VERSION})"        ELSE "build (ver ${WEBP_VERSION})")
1002 else()
1003   status("    WEBP:"       "NO")
1004 endif()
1005
1006 if(WITH_PNG)
1007   status("    PNG:"        PNG_FOUND     THEN "${PNG_LIBRARY} (ver ${PNG_VERSION})"              ELSE "build (ver ${PNG_VERSION})")
1008 else()
1009   status("    PNG:"        "NO")
1010 endif()
1011 if(WITH_TIFF)
1012   if(TIFF_VERSION_STRING AND TIFF_FOUND)
1013     status("    TIFF:"     "${TIFF_LIBRARY} (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
1014   else()
1015     status("    TIFF:"     TIFF_FOUND    THEN "${TIFF_LIBRARY} (ver ${TIFF_VERSION})"            ELSE "build (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
1016   endif()
1017 else()
1018   status("    TIFF:"       "NO")
1019 endif()
1020 if(WITH_JASPER)
1021   status("    JPEG 2000:"  JASPER_FOUND  THEN "${JASPER_LIBRARY} (ver ${JASPER_VERSION_STRING})" ELSE "build (ver ${JASPER_VERSION_STRING})")
1022 else()
1023   status("    JPEG 2000:"  "NO")
1024 endif()
1025 if(WITH_OPENEXR)
1026   status("    OpenEXR:"  OPENEXR_FOUND  THEN "${OPENEXR_LIBRARIES} (ver ${OPENEXR_VERSION})" ELSE "build (ver ${OPENEXR_VERSION})")
1027 else()
1028   status("    OpenEXR:"  "NO")
1029 endif()
1030
1031 if( WITH_GDAL )
1032   status("    GDAL:"   GDAL_FOUND THEN "${GDAL_LIBRARY}" ELSE "NO")
1033 else()
1034   status("    GDAL:"     "NO")
1035 endif()
1036
1037 # ========================== VIDEO IO ==========================
1038 status("")
1039 status("  Video I/O:")
1040
1041 if (DEFINED WITH_VFW)
1042   status("    Video for Windows:" HAVE_VFW         THEN YES                                        ELSE NO)
1043 endif(DEFINED WITH_VFW)
1044
1045 if(DEFINED WITH_1394)
1046   status("    DC1394 1.x:"     HAVE_DC1394         THEN "YES (ver ${ALIASOF_libdc1394_VERSION})"   ELSE NO)
1047   status("    DC1394 2.x:"     HAVE_DC1394_2       THEN "YES (ver ${ALIASOF_libdc1394-2_VERSION})" ELSE NO)
1048 endif(DEFINED WITH_1394)
1049
1050 if(DEFINED WITH_AVFOUNDATION)
1051   status("    AVFoundation:"   WITH_AVFOUNDATION   THEN YES                                        ELSE NO)
1052 endif(DEFINED WITH_AVFOUNDATION)
1053
1054 if(DEFINED WITH_FFMPEG)
1055   if(WIN32)
1056     status("    FFMPEG:"       WITH_FFMPEG         THEN "YES (prebuilt binaries)"                  ELSE NO)
1057   else()
1058     status("    FFMPEG:"       HAVE_FFMPEG         THEN YES ELSE NO)
1059   endif()
1060   status("      codec:"        HAVE_FFMPEG_CODEC   THEN "YES (ver ${ALIASOF_libavcodec_VERSION})"  ELSE NO)
1061   status("      format:"       HAVE_FFMPEG_FORMAT  THEN "YES (ver ${ALIASOF_libavformat_VERSION})" ELSE NO)
1062   status("      util:"         HAVE_FFMPEG_UTIL    THEN "YES (ver ${ALIASOF_libavutil_VERSION})"   ELSE NO)
1063   status("      swscale:"      HAVE_FFMPEG_SWSCALE THEN "YES (ver ${ALIASOF_libswscale_VERSION})"  ELSE NO)
1064   status("      resample:"     HAVE_FFMPEG_RESAMPLE THEN "YES (ver ${ALIASOF_libavresample_VERSION})"  ELSE NO)
1065   status("      gentoo-style:" HAVE_GENTOO_FFMPEG  THEN YES                                        ELSE NO)
1066 endif(DEFINED WITH_FFMPEG)
1067
1068 if(DEFINED WITH_GSTREAMER)
1069   status("    GStreamer:"      HAVE_GSTREAMER      THEN ""                                         ELSE NO)
1070   if(HAVE_GSTREAMER)
1071     status("      base:"       "YES (ver ${GSTREAMER_BASE_VERSION})")
1072     status("      video:"      "YES (ver ${GSTREAMER_VIDEO_VERSION})")
1073     status("      app:"        "YES (ver ${GSTREAMER_APP_VERSION})")
1074     status("      riff:"       "YES (ver ${GSTREAMER_RIFF_VERSION})")
1075     status("      pbutils:"    "YES (ver ${GSTREAMER_PBUTILS_VERSION})")
1076   endif(HAVE_GSTREAMER)
1077 endif(DEFINED WITH_GSTREAMER)
1078
1079 if(DEFINED WITH_OPENNI)
1080   status("    OpenNI:"         HAVE_OPENNI         THEN "YES (ver ${OPENNI_VERSION_STRING}, build ${OPENNI_VERSION_BUILD})"
1081                                                                                                    ELSE NO)
1082   status("    OpenNI PrimeSensor Modules:" HAVE_OPENNI_PRIME_SENSOR_MODULE
1083                                                    THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})"      ELSE NO)
1084 endif(DEFINED WITH_OPENNI)
1085
1086 if(DEFINED WITH_OPENNI2)
1087   status("    OpenNI2:"            HAVE_OPENNI2    THEN "YES (ver ${OPENNI2_VERSION_STRING}, build ${OPENNI2_VERSION_BUILD})"
1088                                                                                                    ELSE NO)
1089 endif(DEFINED WITH_OPENNI2)
1090
1091 if(DEFINED WITH_PVAPI)
1092   status("    PvAPI:"          HAVE_PVAPI          THEN YES                                        ELSE NO)
1093 endif(DEFINED WITH_PVAPI)
1094
1095 if(DEFINED WITH_GIGEAPI)
1096   status("    GigEVisionSDK:"  HAVE_GIGE_API       THEN YES                                        ELSE NO)
1097 endif(DEFINED WITH_GIGEAPI)
1098
1099 if(DEFINED WITH_QUICKTIME)
1100   status("    QuickTime:"      HAVE_QUICKTIME      THEN YES                                        ELSE NO)
1101   status("    QTKit:"          HAVE_QTKIT          THEN YES                                        ELSE NO)
1102 endif(DEFINED WITH_QUICKTIME)
1103
1104 if(DEFINED WITH_UNICAP)
1105   status("    UniCap:"         HAVE_UNICAP         THEN "YES (ver ${ALIASOF_libunicap_VERSION})"   ELSE NO)
1106   status("    UniCap ucil:"    HAVE_UNICAP_UCIL    THEN "YES (ver ${ALIASOF_libucil_VERSION})"     ELSE NO)
1107 endif(DEFINED WITH_UNICAP)
1108
1109 if(DEFINED WITH_V4L)
1110   if(HAVE_CAMV4L)
1111     set(HAVE_CAMV4L_STR "YES")
1112   else()
1113     set(HAVE_CAMV4L_STR "NO")
1114   endif()
1115   if(HAVE_CAMV4L2)
1116     set(HAVE_CAMV4L2_STR "YES")
1117   elseif(HAVE_VIDEOIO)
1118     set(HAVE_CAMV4L2_STR "YES(videoio)")
1119   else()
1120     set(HAVE_CAMV4L2_STR "NO")
1121   endif()
1122   status("    V4L/V4L2:"       HAVE_LIBV4L
1123              THEN "Using libv4l1 (ver ${ALIASOF_libv4l1_VERSION}) / libv4l2 (ver ${ALIASOF_libv4l2_VERSION})"
1124              ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
1125 endif(DEFINED WITH_V4L)
1126
1127 if(DEFINED WITH_DSHOW)
1128   status("    DirectShow:"     HAVE_DSHOW     THEN YES                                        ELSE NO)
1129 endif(DEFINED WITH_DSHOW)
1130
1131 if(DEFINED WITH_MSMF)
1132   status("    Media Foundation:" HAVE_MSMF    THEN YES                                        ELSE NO)
1133 endif(DEFINED WITH_MSMF)
1134
1135 if(DEFINED WITH_XIMEA)
1136   status("    XIMEA:"          HAVE_XIMEA          THEN YES                                        ELSE NO)
1137 endif(DEFINED WITH_XIMEA)
1138
1139 if(DEFINED WITH_XINE)
1140   status("    Xine:"           HAVE_XINE           THEN "YES (ver ${ALIASOF_libxine_VERSION})"     ELSE NO)
1141 endif(DEFINED WITH_XINE)
1142
1143 if(DEFINED WITH_INTELPERC)
1144   status("    Intel PerC:"     HAVE_INTELPERC      THEN "YES"                                 ELSE NO)
1145 endif(DEFINED WITH_INTELPERC)
1146
1147 if(DEFINED WITH_GPHOTO2)
1148   status("    gPhoto2:"        HAVE_GPHOTO2        THEN "YES"                                 ELSE NO)
1149 endif(DEFINED WITH_GPHOTO2)
1150
1151
1152 # Order is similar to CV_PARALLEL_FRAMEWORK in core/src/parallel.cpp
1153 ocv_clear_vars(CV_PARALLEL_FRAMEWORK)
1154 if(HAVE_TBB)
1155   set(CV_PARALLEL_FRAMEWORK "TBB (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})")
1156 elseif(HAVE_CSTRIPES)
1157   set(CV_PARALLEL_FRAMEWORK "C=")
1158 elseif(HAVE_OPENMP)
1159   set(CV_PARALLEL_FRAMEWORK "OpenMP")
1160 elseif(HAVE_GCD)
1161   set(CV_PARALLEL_FRAMEWORK "GCD")
1162 elseif(WINRT OR HAVE_CONCURRENCY)
1163   set(CV_PARALLEL_FRAMEWORK "Concurrency")
1164 elseif(HAVE_PTHREADS_PF)
1165   set(CV_PARALLEL_FRAMEWORK "pthreads")
1166 else()
1167   set(CV_PARALLEL_FRAMEWORK "none")
1168 endif()
1169 status("")
1170 status("  Parallel framework:" TRUE THEN "${CV_PARALLEL_FRAMEWORK}" ELSE NO)
1171
1172
1173 # ========================== Other third-party libraries ==========================
1174 status("")
1175 status("  Other third-party libraries:")
1176
1177 if(WITH_IPP AND HAVE_IPP)
1178   status("    Use IPP:" "${IPP_VERSION_STR} [${IPP_VERSION_MAJOR}.${IPP_VERSION_MINOR}.${IPP_VERSION_BUILD}]")
1179   status("         at:" "${IPP_ROOT_DIR}")
1180   if(NOT HAVE_IPP_ICV_ONLY)
1181     status("     linked:" BUILD_WITH_DYNAMIC_IPP THEN "dynamic" ELSE "static")
1182   endif()
1183 else()
1184   status("    Use IPP:"   WITH_IPP AND NOT HAVE_IPP THEN "IPP not found or implicitly disabled" ELSE NO)
1185 endif()
1186
1187 if(DEFINED WITH_IPP_A)
1188 status("    Use IPP Async:"  HAVE_IPP_A       THEN "YES" ELSE NO)
1189 endif(DEFINED WITH_IPP_A)
1190
1191 if(DEFINED WITH_VA)
1192 status("    Use VA:"            HAVE_VA          THEN "YES" ELSE NO)
1193 endif(DEFINED WITH_VA)
1194
1195 if(DEFINED WITH_VA_INTEL)
1196 status("    Use Intel VA-API/OpenCL:"  HAVE_VA_INTEL       THEN "YES (MSDK: ${VA_INTEL_MSDK_ROOT}  OpenCL: ${VA_INTEL_IOCL_ROOT})" ELSE NO)
1197 endif(DEFINED WITH_VA_INTEL)
1198
1199 if(DEFINED WITH_LAPACK)
1200 status("    Use Lapack:"      HAVE_LAPACK     THEN "YES" ELSE NO)
1201 endif(DEFINED WITH_LAPACK)
1202
1203 status("    Use Eigen:"      HAVE_EIGEN       THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
1204 status("    Use Cuda:"       HAVE_CUDA        THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
1205 status("    Use OpenCL:"     HAVE_OPENCL      THEN YES ELSE NO)
1206 status("    Use custom HAL:" OpenCV_USED_HAL  THEN "YES (${OpenCV_USED_HAL})" ELSE "NO")
1207
1208 if(HAVE_CUDA)
1209   status("")
1210   status("  NVIDIA CUDA")
1211
1212   status("    Use CUFFT:"            HAVE_CUFFT   THEN YES ELSE NO)
1213   status("    Use CUBLAS:"           HAVE_CUBLAS  THEN YES ELSE NO)
1214   status("    USE NVCUVID:"          HAVE_NVCUVID THEN YES ELSE NO)
1215   status("    NVIDIA GPU arch:"      ${OPENCV_CUDA_ARCH_BIN})
1216   status("    NVIDIA PTX archs:"     ${OPENCV_CUDA_ARCH_PTX})
1217   status("    Use fast math:"        CUDA_FAST_MATH THEN YES ELSE NO)
1218 endif()
1219
1220 if(HAVE_OPENCL)
1221   status("")
1222   if(HAVE_OPENCL_STATIC)
1223     set(__opencl_type "<Link with OpenCL library>")
1224   else()
1225     set(__opencl_type "<Dynamic loading of OpenCL library>")
1226   endif()
1227   status("  OpenCL:"                 ${__opencl_type})
1228   if(OPENCL_INCLUDE_DIRS)
1229     status("    Include path:"       ${OPENCL_INCLUDE_DIRS})
1230   endif()
1231   if(OPENCL_LIBRARIES)
1232     set(__libs "")
1233     foreach(l ${OPENCL_LIBRARIES})
1234       if(TARGET ${l})
1235         get_target_property(p ${l} LOCATION)
1236         if(p MATCHES NOTFOUND)
1237           list(APPEND __libs "${l}")
1238         else()
1239           list(APPEND __libs "${p}")
1240         endif()
1241       else()
1242         list(APPEND __libs "${l}")
1243       endif()
1244     endforeach()
1245     status("    Link libraries:"          ${__libs})
1246   endif()
1247   status("    Use AMDFFT:"           HAVE_CLAMDFFT  THEN YES ELSE NO)
1248   status("    Use AMDBLAS:"          HAVE_CLAMDBLAS THEN YES ELSE NO)
1249 endif()
1250
1251 # ========================== python ==========================
1252 status("")
1253 status("  Python 2:")
1254 status("    Interpreter:"     PYTHON2INTERP_FOUND  THEN "${PYTHON2_EXECUTABLE} (ver ${PYTHON2_VERSION_STRING})"       ELSE NO)
1255 if(BUILD_opencv_python2)
1256   if(PYTHON2LIBS_VERSION_STRING)
1257     status("    Libraries:"   HAVE_opencv_python2  THEN  "${PYTHON2_LIBRARIES} (ver ${PYTHON2LIBS_VERSION_STRING})"   ELSE NO)
1258   else()
1259     status("    Libraries:"   HAVE_opencv_python2  THEN  "${PYTHON2_LIBRARIES}"                                      ELSE NO)
1260   endif()
1261   status("    numpy:"         PYTHON2_NUMPY_INCLUDE_DIRS THEN "${PYTHON2_NUMPY_INCLUDE_DIRS} (ver ${PYTHON2_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)")
1262   status("    packages path:" PYTHON2_EXECUTABLE         THEN "${PYTHON2_PACKAGES_PATH}"                                    ELSE "-")
1263 endif()
1264
1265 status("")
1266 status("  Python 3:")
1267 status("    Interpreter:"     PYTHON3INTERP_FOUND  THEN "${PYTHON3_EXECUTABLE} (ver ${PYTHON3_VERSION_STRING})"       ELSE NO)
1268 if(BUILD_opencv_python3)
1269   if(PYTHON3LIBS_VERSION_STRING)
1270     status("    Libraries:"   HAVE_opencv_python3  THEN  "${PYTHON3_LIBRARIES} (ver ${PYTHON3LIBS_VERSION_STRING})"   ELSE NO)
1271   else()
1272     status("    Libraries:"   HAVE_opencv_python3  THEN  "${PYTHON3_LIBRARIES}"                                      ELSE NO)
1273   endif()
1274   status("    numpy:"         PYTHON3_NUMPY_INCLUDE_DIRS THEN "${PYTHON3_NUMPY_INCLUDE_DIRS} (ver ${PYTHON3_NUMPY_VERSION})" ELSE "NO (Python3 wrappers can not be generated)")
1275   status("    packages path:" PYTHON3_EXECUTABLE         THEN "${PYTHON3_PACKAGES_PATH}"                                    ELSE "-")
1276 endif()
1277
1278 status("")
1279 status("  Python (for build):"  PYTHON_DEFAULT_AVAILABLE THEN "${PYTHON_DEFAULT_EXECUTABLE}" ELSE NO)
1280
1281 # ========================== java ==========================
1282 status("")
1283 status("  Java:")
1284 status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"                    ELSE NO)
1285 if(NOT ANDROID)
1286   status("    JNI:"         JNI_INCLUDE_DIRS    THEN "${JNI_INCLUDE_DIRS}"                                       ELSE NO)
1287 endif()
1288 status("    Java wrappers:" HAVE_opencv_java                                                            THEN YES ELSE NO)
1289 status("    Java tests:"    BUILD_TESTS AND opencv_test_java_BINARY_DIR                                 THEN YES ELSE NO)
1290
1291 # ========================= matlab =========================
1292 status("")
1293 if(MATLAB_FOUND)
1294   status("  Matlab:")
1295   status("    mex:"         MATLAB_MEX_SCRIPT  THEN  "${MATLAB_MEX_SCRIPT}"   ELSE NO)
1296   status("    Compiler/generator:" MEX_WORKS   THEN  "Working"                ELSE "Not working (bindings will not be generated)")
1297 else()
1298   status("  Matlab:"        WITH_MATLAB AND NOT MATLAB_FOUND THEN "Matlab not found or implicitly disabled" ELSE NO)
1299 endif()
1300
1301 # ========================== documentation ==========================
1302 if(BUILD_DOCS)
1303   status("")
1304   status("  Documentation:")
1305   status("    Doxygen:"             DOXYGEN_FOUND             THEN "${DOXYGEN_EXECUTABLE} (ver ${DOXYGEN_VERSION})" ELSE NO)
1306   status("    PlantUML:"            PLANTUML_JAR              THEN "${PLANTUML_JAR}" ELSE NO)
1307 endif()
1308
1309 # ========================== samples and tests ==========================
1310 status("")
1311 status("  Tests and samples:")
1312 status("    Tests:"             BUILD_TESTS AND HAVE_opencv_ts       THEN YES ELSE NO)
1313 status("    Performance tests:" BUILD_PERF_TESTS AND HAVE_opencv_ts  THEN YES ELSE NO)
1314 status("    C/C++ Examples:"    BUILD_EXAMPLES                       THEN YES ELSE NO)
1315
1316 # ========================== auxiliary ==========================
1317 status("")
1318 status("  Install path:" "${CMAKE_INSTALL_PREFIX}")
1319 status("")
1320 status("  cvconfig.h is in:" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
1321 status("-----------------------------------------------------------------")
1322 status("")
1323
1324 ocv_finalize_status()
1325
1326 # ----------------------------------------------------------------------------
1327 # Warn in the case of in-source build
1328 # ----------------------------------------------------------------------------
1329 if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
1330   message(WARNING "The source directory is the same as binary directory. \"make clean\" may damage the source tree")
1331 endif()
1332
1333 # ----------------------------------------------------------------------------
1334 # CPack stuff
1335 # ----------------------------------------------------------------------------
1336
1337 include(cmake/OpenCVPackaging.cmake)
1338
1339 # This should be the last command
1340 ocv_cmake_dump_vars("" TOFILE "CMakeVars.txt")
1341 ocv_cmake_eval(DEBUG_POST ONCE)