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