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