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