REVERT OF reverted libjpeg to an earlier version (reverse-merged from commit bfc8a524...
[profile/ivi/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 #   - OCT-2008: Initial version <joseluisblancoc@gmail.com>
9 #
10 # ----------------------------------------------------------------------------
11
12 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
13
14 # --------------------------------------------------------------
15 # Indicate CMake 2.7 and above that we don't want to mix relative
16 #  and absolute paths in linker lib lists.
17 # Run "cmake --help-policy CMP0003" for more information.
18 # --------------------------------------------------------------
19 if(COMMAND cmake_policy)
20   cmake_policy(SET CMP0003 NEW)
21 endif()
22
23 # Following block can broke build in case of cross-compilng
24 # but CMAKE_CROSSCOMPILING variable will be set only on project(OpenCV) command
25 # so we will try to detect crosscompiling by presense of CMAKE_TOOLCHAIN_FILE
26 if(NOT CMAKE_TOOLCHAIN_FILE)
27   # it _must_ go before project(OpenCV) in order to work
28   if(WIN32)
29     set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
30   else()
31     set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
32   endif()
33
34   if(MSVC)
35     set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)
36   endif()
37 else(NOT CMAKE_TOOLCHAIN_FILE)
38   #Android: set output folder to ${CMAKE_BINARY_DIR}
39   set( LIBRARY_OUTPUT_PATH_ROOT ${CMAKE_BINARY_DIR} CACHE PATH "root for library output, set this to change where android libs are compiled to" )
40   # any crosscompiling
41   set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
42 endif(NOT CMAKE_TOOLCHAIN_FILE)
43
44 # --------------------------------------------------------------
45 # Top level OpenCV project
46 # --------------------------------------------------------------
47 if(CMAKE_GENERATOR MATCHES Xcode AND XCODE_VERSION VERSION_GREATER 4.3)
48   cmake_minimum_required(VERSION 2.8.8)
49 elseif(IOS)
50   cmake_minimum_required(VERSION 2.8.0)
51 else()
52   cmake_minimum_required(VERSION 2.6.3)
53 endif()
54
55 # must go before the project command
56 set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
57 if(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
58   set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
59 endif()
60
61 project(OpenCV CXX C)
62
63 include(cmake/OpenCVUtils.cmake)
64
65 # ----------------------------------------------------------------------------
66 # Break in case of popular CMake configuration mistakes
67 # ----------------------------------------------------------------------------
68 if(NOT CMAKE_SIZEOF_VOID_P GREATER 0)
69   message(FATAL_ERROR "CMake fails to deterimine the bitness of target platform.
70   Please check your CMake and compiler installation. If you are crosscompiling then ensure that your CMake toolchain file correctly sets the compiler details.")
71 endif()
72
73 # ----------------------------------------------------------------------------
74 # Detect compiler and target platform architecture
75 # ----------------------------------------------------------------------------
76 include(cmake/OpenCVDetectCXXCompiler.cmake)
77
78 # Add these standard paths to the search paths for FIND_LIBRARY
79 # to find libraries from these locations first
80 if(UNIX AND NOT ANDROID)
81   if(X86_64 OR CMAKE_SIZEOF_VOID_P EQUAL 8)
82     if(EXISTS /lib64)
83       list(APPEND CMAKE_LIBRARY_PATH /lib64)
84     else()
85       list(APPEND CMAKE_LIBRARY_PATH /lib)
86     endif()
87     if(EXISTS /usr/lib64)
88       list(APPEND CMAKE_LIBRARY_PATH /usr/lib64)
89     else()
90       list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
91     endif()
92   elseif(X86 OR CMAKE_SIZEOF_VOID_P EQUAL 4)
93     if(EXISTS /lib32)
94       list(APPEND CMAKE_LIBRARY_PATH /lib32)
95     else()
96       list(APPEND CMAKE_LIBRARY_PATH /lib)
97     endif()
98     if(EXISTS /usr/lib32)
99       list(APPEND CMAKE_LIBRARY_PATH /usr/lib32)
100     else()
101       list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
102     endif()
103   endif()
104 endif()
105
106
107 # ----------------------------------------------------------------------------
108 # OpenCV cmake options
109 # ----------------------------------------------------------------------------
110
111 # Optional 3rd party components
112 # ===================================================
113 OCV_OPTION(WITH_1394           "Include IEEE1394 support"                    ON   IF (UNIX AND NOT ANDROID AND NOT IOS) )
114 OCV_OPTION(WITH_AVFOUNDATION   "Use AVFoundation for Video I/O"              ON   IF IOS)
115 OCV_OPTION(WITH_CARBON         "Use Carbon for UI instead of Cocoa"          OFF  IF APPLE )
116 OCV_OPTION(WITH_CUBLAS         "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
117 OCV_OPTION(WITH_CUDA           "Include NVidia Cuda Runtime support"         ON   IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
118 OCV_OPTION(WITH_CUFFT          "Include NVidia Cuda Fast Fourier Transform (FFT) library support"            ON  IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
119 OCV_OPTION(WITH_EIGEN          "Include Eigen2/Eigen3 support"               ON)
120 OCV_OPTION(WITH_FFMPEG         "Include FFMPEG support"                      ON   IF (NOT ANDROID AND NOT IOS) )
121 OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )
122 OCV_OPTION(WITH_GTK            "Include GTK support"                         ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )
123 OCV_OPTION(WITH_IMAGEIO        "ImageIO support for OS X"                    OFF  IF APPLE)
124 OCV_OPTION(WITH_IPP            "Include Intel IPP support"                   OFF  IF (MSVC OR X86 OR X86_64) )
125 OCV_OPTION(WITH_JASPER         "Include JPEG2K support"                      ON   IF (NOT IOS) )
126 OCV_OPTION(WITH_JPEG           "Include JPEG support"                        ON   IF (NOT IOS) )
127 OCV_OPTION(WITH_OPENEXR        "Include ILM support via OpenEXR"             ON   IF (NOT IOS) )
128 OCV_OPTION(WITH_OPENGL         "Include OpenGL support"                      OFF  IF (NOT ANDROID AND NOT APPLE) )
129 OCV_OPTION(WITH_OPENNI         "Include OpenNI support"                      OFF  IF (NOT ANDROID AND NOT IOS) )
130 OCV_OPTION(WITH_PNG            "Include PNG support"                         ON   IF (NOT IOS) )
131 OCV_OPTION(WITH_PVAPI          "Include Prosilica GigE support"              ON   IF (NOT ANDROID AND NOT IOS) )
132 OCV_OPTION(WITH_QT             "Build with Qt Backend support"               OFF  IF (NOT ANDROID AND NOT IOS) )
133 OCV_OPTION(WITH_QUICKTIME      "Use QuickTime for Video I/O insted of QTKit" OFF  IF APPLE )
134 OCV_OPTION(WITH_TBB            "Include Intel TBB support"                   OFF  IF (NOT IOS) )
135 OCV_OPTION(WITH_TIFF           "Include TIFF support"                        ON   IF (NOT IOS) )
136 OCV_OPTION(WITH_UNICAP         "Include Unicap support (GPL)"                OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID) )
137 OCV_OPTION(WITH_V4L            "Include Video 4 Linux support"               ON   IF (UNIX AND NOT APPLE AND NOT ANDROID) )
138 OCV_OPTION(WITH_VIDEOINPUT     "Build HighGUI with DirectShow support"       ON   IF WIN32 )
139 OCV_OPTION(WITH_XIMEA          "Include XIMEA cameras support"               OFF  IF (NOT ANDROID AND NOT APPLE) )
140 OCV_OPTION(WITH_XINE           "Include Xine support (GPL)"                  OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID) )
141 OCV_OPTION(WITH_CLP            "Include Clp support (EPL)"                   OFF)
142 OCV_OPTION(WITH_OPENCL         "Include OpenCL Runtime support"              OFF  IF (NOT ANDROID AND NOT IOS) )
143 OCV_OPTION(WITH_OPENCLAMDFFT   "Include AMD OpenCL FFT library support"      OFF  IF (NOT ANDROID AND NOT IOS) )
144 OCV_OPTION(WITH_OPENCLAMDBLAS  "Include AMD OpenCL BLAS library support"     OFF  IF (NOT ANDROID AND NOT IOS) )
145
146
147 # OpenCV build components
148 # ===================================================
149 OCV_OPTION(BUILD_SHARED_LIBS        "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" NOT (ANDROID OR IOS) )
150 OCV_OPTION(BUILD_ANDROID_EXAMPLES   "Build examples for Android platform"         ON  IF ANDROID )
151 OCV_OPTION(BUILD_DOCS               "Create build rules for OpenCV Documentation" ON )
152 OCV_OPTION(BUILD_EXAMPLES           "Build all examples"                          OFF )
153 OCV_OPTION(BUILD_PACKAGE            "Enables 'make package_source' command"       ON )
154 OCV_OPTION(BUILD_PERF_TESTS         "Build performance tests"                     ON  IF (NOT IOS) )
155 OCV_OPTION(BUILD_TESTS              "Build accuracy & regression tests"           ON  IF (NOT IOS) )
156 OCV_OPTION(BUILD_WITH_DEBUG_INFO    "Include debug info into debug libs (not MSCV only)" ON )
157 OCV_OPTION(BUILD_WITH_STATIC_CRT    "Enables use of staticaly linked CRT for staticaly linked OpenCV" ON IF MSVC )
158 OCV_OPTION(BUILD_FAT_JAVA_LIB       "Create fat java wrapper containing the whole OpenCV library" ON IF ANDROID AND NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX )
159 OCV_OPTION(BUILD_ANDROID_SERVICE    "Build OpenCV Manager for Google Play" OFF IF ANDROID AND ANDROID_USE_STLPORT AND ANDROID_SOURCE_TREE )
160 OCV_OPTION(BUILD_ANDROID_PACKAGE    "Build platform-specific package for Google Play" OFF IF ANDROID )
161
162 # 3rd party libs
163 OCV_OPTION(BUILD_ZLIB               "Build zlib from source"         WIN32 OR APPLE )
164 OCV_OPTION(BUILD_TIFF               "Build libtiff from source"      WIN32 OR ANDROID OR APPLE )
165 OCV_OPTION(BUILD_JASPER             "Build libjasper from source"    WIN32 OR ANDROID OR APPLE )
166 OCV_OPTION(BUILD_JPEG               "Build libjpeg from source"      WIN32 OR ANDROID OR APPLE )
167 OCV_OPTION(BUILD_PNG                "Build libpng from source"       WIN32 OR ANDROID OR APPLE )
168 OCV_OPTION(BUILD_OPENEXR            "Build openexr from source"      WIN32 OR ANDROID OR APPLE )
169
170
171 # OpenCV installation options
172 # ===================================================
173 OCV_OPTION(INSTALL_C_EXAMPLES       "Install C examples"        OFF )
174 OCV_OPTION(INSTALL_PYTHON_EXAMPLES  "Install Python examples"   OFF )
175 OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples"  OFF IF ANDROID )
176 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 IOS AND BUILD_SHARED_LIBS) )
177
178
179 # OpenCV build options
180 # ===================================================
181 OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers"                                  ON   IF (NOT IOS) )
182 OCV_OPTION(ENABLE_SOLUTION_FOLDERS    "Solution folder in Visual Studio or in other IDEs"        (MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode) IF (CMAKE_VERSION VERSION_GREATER "2.8.0") )
183 OCV_OPTION(ENABLE_PROFILING           "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF  IF CMAKE_COMPILER_IS_GNUCXX )
184 OCV_OPTION(ENABLE_OMIT_FRAME_POINTER  "Enable -fomit-frame-pointer for GCC"                      ON   IF CMAKE_COMPILER_IS_GNUCXX )
185 OCV_OPTION(ENABLE_POWERPC             "Enable PowerPC for GCC"                                   ON   IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
186 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)) )
187 OCV_OPTION(ENABLE_SSE                 "Enable SSE instructions"                                  ON   IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
188 OCV_OPTION(ENABLE_SSE2                "Enable SSE2 instructions"                                 ON   IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
189 OCV_OPTION(ENABLE_SSE3                "Enable SSE3 instructions"                                 ON   IF ((CV_ICC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
190 OCV_OPTION(ENABLE_SSSE3               "Enable SSSE3 instructions"                                OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
191 OCV_OPTION(ENABLE_SSE41               "Enable SSE4.1 instructions"                               OFF  IF ((CV_ICC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
192 OCV_OPTION(ENABLE_SSE42               "Enable SSE4.2 instructions"                               OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
193 OCV_OPTION(ENABLE_AVX                 "Enable AVX instructions"                                  OFF  IF ((MSVC OR CMAKE_COMPILER_IS_GNUCXX) AND (X86 OR X86_64)) )
194 OCV_OPTION(ENABLE_NOISY_WARNINGS      "Show all warnings even if they are too noisy"             OFF )
195 OCV_OPTION(OPENCV_WARNINGS_ARE_ERRORS "Treat warnings as errors"                                 OFF )
196
197
198 # uncategorized options
199 # ===================================================
200 OCV_OPTION(CMAKE_VERBOSE "Verbose mode" OFF )
201
202 # backward compatibility
203 # ===================================================
204 include(cmake/OpenCVLegacyOptions.cmake OPTIONAL)
205
206
207 # ----------------------------------------------------------------------------
208 #  Get actual OpenCV version number from sources
209 # ----------------------------------------------------------------------------
210 include(cmake/OpenCVVersion.cmake)
211
212
213 # ----------------------------------------------------------------------------
214 #  Build & install layouts
215 # ----------------------------------------------------------------------------
216
217 # Save libs and executables in the same place
218 set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications" )
219
220 if(ANDROID OR WIN32)
221   set(OPENCV_DOC_INSTALL_PATH doc)
222 elseif(INSTALL_TO_MANGLED_PATHS)
223   set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc)
224 else()
225   set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
226 endif()
227
228 if(ANDROID)
229   set(LIBRARY_OUTPUT_PATH         "${OpenCV_BINARY_DIR}/lib/${ANDROID_NDK_ABI_NAME}")
230   set(3P_LIBRARY_OUTPUT_PATH      "${OpenCV_BINARY_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}")
231   set(OPENCV_LIB_INSTALL_PATH     sdk/native/libs/${ANDROID_NDK_ABI_NAME})
232   set(OPENCV_3P_LIB_INSTALL_PATH  sdk/native/3rdparty/libs/${ANDROID_NDK_ABI_NAME})
233   set(OPENCV_CONFIG_INSTALL_PATH  sdk/native/jni)
234   set(OPENCV_INCLUDE_INSTALL_PATH sdk/native/jni/include)
235 else()
236   set(LIBRARY_OUTPUT_PATH         "${OpenCV_BINARY_DIR}/lib")
237   set(3P_LIBRARY_OUTPUT_PATH      "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
238   set(OPENCV_LIB_INSTALL_PATH     lib${LIB_SUFFIX})
239   set(OPENCV_3P_LIB_INSTALL_PATH  share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH})
240   set(OPENCV_INCLUDE_INSTALL_PATH include)
241
242   math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}")
243   if(LIB_SUFFIX AND NOT SIZEOF_VOID_P_BITS EQUAL LIB_SUFFIX)
244     set(OPENCV_CONFIG_INSTALL_PATH lib${LIB_SUFFIX}/cmake/opencv)
245   else()
246     set(OPENCV_CONFIG_INSTALL_PATH share/OpenCV)
247   endif()
248 endif()
249
250 set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
251 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
252
253 if(INSTALL_TO_MANGLED_PATHS)
254   set(OPENCV_INCLUDE_INSTALL_PATH ${OPENCV_INCLUDE_INSTALL_PATH}/opencv-${OPENCV_VERSION})
255 endif()
256
257 if(WIN32)
258   # Postfix of DLLs:
259   set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
260   set(OPENCV_DEBUG_POSTFIX d)
261 else()
262   # Postfix of so's:
263   set(OPENCV_DLLVERSION "")
264   set(OPENCV_DEBUG_POSTFIX "")
265 endif()
266
267 if(DEFINED CMAKE_DEBUG_POSTFIX)
268   set(OPENCV_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
269 endif()
270
271 if(CMAKE_VERBOSE)
272   set(CMAKE_VERBOSE_MAKEFILE 1)
273 endif()
274
275
276 # ----------------------------------------------------------------------------
277 #  Path for build/platform -specific headers
278 # ----------------------------------------------------------------------------
279 set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
280 add_definitions(-DHAVE_CVCONFIG_H)
281 ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
282
283
284 # ----------------------------------------------------------------------------
285 #  Autodetect if we are in a GIT repository
286 # ----------------------------------------------------------------------------
287
288 # don't use FindGit because it requires CMake 2.8.2
289 set(git_names git eg) # eg = easy git
290 # Prefer .cmd variants on Windows unless running in a Makefile in the MSYS shell
291 if(CMAKE_HOST_WIN32)
292   if(NOT CMAKE_GENERATOR MATCHES "MSYS")
293     set(git_names git.cmd git eg.cmd eg)
294   endif()
295 endif()
296
297 find_host_program(GIT_EXECUTABLE NAMES ${git_names} PATH_SUFFIXES Git/cmd Git/bin DOC "git command line client")
298 mark_as_advanced(GIT_EXECUTABLE)
299
300 if(GIT_EXECUTABLE)
301   execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
302     WORKING_DIRECTORY "${OpenCV_SOURCE_DIR}"
303     OUTPUT_VARIABLE OPENCV_GIT_HASH_SORT
304     RESULT_VARIABLE GIT_RESULT
305     ERROR_QUIET
306     OUTPUT_STRIP_TRAILING_WHITESPACE
307   )
308   if(GIT_RESULT EQUAL 0)
309     set(OPENCV_VCSVERSION "commit:${OPENCV_GIT_HASH_SORT}")
310   else()
311     set(OPENCV_VCSVERSION "exported")
312   endif()
313 else()
314   # We don't have git:
315   set(OPENCV_VCSVERSION "")
316 endif()
317
318
319 # ----------------------------------------------------------------------------
320 # OpenCV compiler and linker options
321 # ----------------------------------------------------------------------------
322 # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
323 if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
324   set(CMAKE_BUILD_TYPE Release)
325 endif()
326
327 include(cmake/OpenCVCompilerOptions.cmake)
328
329
330 # ----------------------------------------------------------------------------
331 # Use statically or dynamically linked CRT?
332 # Default: dynamic
333 # ----------------------------------------------------------------------------
334 if(MSVC)
335   include(cmake/OpenCVCRTLinkage.cmake)
336 endif(MSVC)
337
338 if(WIN32 AND NOT MINGW)
339   add_definitions(-D_VARIADIC_MAX=10)
340 endif(WIN32 AND NOT MINGW)
341
342
343 # ----------------------------------------------------------------------------
344 #       CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
345 # ----------------------------------------------------------------------------
346 if(UNIX)
347   include(cmake/OpenCVFindPkgConfig.cmake OPTIONAL)
348   include(CheckFunctionExists)
349   include(CheckIncludeFile)
350
351   if(NOT APPLE)
352     CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
353     CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)
354     CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
355     CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)
356     if(ANDROID)
357       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m log)
358     elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|DragonFly")
359       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m pthread)
360     else()
361       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m pthread rt)
362     endif()
363   else()
364     add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H)
365   endif()
366 endif()
367
368 include(cmake/OpenCVPCHSupport.cmake)
369 include(cmake/OpenCVModule.cmake)
370
371 # ----------------------------------------------------------------------------
372 #  Detect 3rd-party libraries
373 # ----------------------------------------------------------------------------
374
375 include(cmake/OpenCVFindLibsGrfmt.cmake)
376 include(cmake/OpenCVFindLibsGUI.cmake)
377 include(cmake/OpenCVFindLibsVideo.cmake)
378 include(cmake/OpenCVFindLibsPerf.cmake)
379
380
381 # ----------------------------------------------------------------------------
382 #  Detect other 3rd-party libraries/tools
383 # ----------------------------------------------------------------------------
384
385 # --- LATEX for pdf documentation ---
386 if(BUILD_DOCS)
387   include(cmake/OpenCVFindLATEX.cmake)
388 endif(BUILD_DOCS)
389
390 # --- Python Support ---
391 include(cmake/OpenCVDetectPython.cmake)
392
393 # --- Java Support ---
394 include(cmake/OpenCVDetectApacheAnt.cmake)
395 if(ANDROID)
396   include(cmake/OpenCVDetectAndroidSDK.cmake)
397
398   if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13)
399     message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.")
400   endif()
401 elseif(ANT_EXECUTABLE)
402   find_package(JNI)
403 endif()
404
405 if(ANDROID AND ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND (ANT_VERSION VERSION_GREATER 1.7) AND (ANDROID_TOOLS_Pkg_Revision GREATER 13))
406   SET(CAN_BUILD_ANDROID_PROJECTS TRUE)
407 else()
408   SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
409 endif()
410
411 # --- OpenCL ---
412 if(WITH_OPENCL)
413   include(cmake/OpenCVDetectOpenCL.cmake)
414   if(OPENCL_FOUND)
415     set(HAVE_OPENCL 1)
416   endif()
417   if(WITH_OPENCLAMDFFT)
418     set(HAVE_CLAMDFFT 1)
419   endif()
420   if(WITH_OPENCLAMDBLAS)
421     set(HAVE_CLAMDBLAS 1)
422   endif()
423 endif()
424
425 # ----------------------------------------------------------------------------
426 # Solution folders:
427 # ----------------------------------------------------------------------------
428 if(ENABLE_SOLUTION_FOLDERS)
429   set_property(GLOBAL PROPERTY USE_FOLDERS ON)
430   set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
431 endif()
432
433 # Extra OpenCV targets: uninstall, package_source, perf, etc.
434 include(cmake/OpenCVExtraTargets.cmake)
435
436
437 # ----------------------------------------------------------------------------
438 # Process subdirectories
439 # ----------------------------------------------------------------------------
440
441 # opencv.hpp and legacy headers
442 add_subdirectory(include)
443
444 # OpenCV modules
445 add_subdirectory(modules)
446
447 # Generate targets for documentation
448 add_subdirectory(doc)
449
450 # various data that is used by cv libraries and/or demo applications.
451 add_subdirectory(data)
452
453 # extra applications
454 add_subdirectory(apps)
455
456 # examples
457 if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
458   add_subdirectory(samples)
459 endif()
460
461 if(BUILD_ANDROID_SERVICE)
462   add_subdirectory(android/service)
463 endif()
464
465 if(BUILD_ANDROID_PACKAGE)
466   add_subdirectory(android/package)
467 endif()
468
469 # ----------------------------------------------------------------------------
470 # Finalization: generate configuration-based files
471 # ----------------------------------------------------------------------------
472 ocv_track_build_dependencies()
473
474 # Generate platform-dependent and configuration-dependent headers
475 include(cmake/OpenCVGenHeaders.cmake)
476
477 # Generate opencv.pc for pkg-config command
478 include(cmake/OpenCVGenPkgconfig.cmake)
479
480 # Generate OpenCV.mk for ndk-build (Android build tool)
481 include(cmake/OpenCVGenAndroidMK.cmake)
482
483 # Generate OpenCVСonfig.cmake and OpenCVConfig-version.cmake for cmake projects
484 include(cmake/OpenCVGenConfig.cmake)
485
486
487 # ----------------------------------------------------------------------------
488 # Summary:
489 # ----------------------------------------------------------------------------
490 status("")
491 status("General configuration for OpenCV ${OPENCV_VERSION} =====================================")
492 if(OPENCV_VCSVERSION)
493   status("  Version control:" ${OPENCV_VCSVERSION})
494 endif()
495
496 # ========================== build platform ==========================
497 status("")
498 status("  Platform:")
499 status("    Host:"             ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR})
500 if(CMAKE_CROSSCOMPILING)
501   status("    Target:"         ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
502 endif()
503 status("    CMake:"            ${CMAKE_VERSION})
504 status("    CMake generator:"  ${CMAKE_GENERATOR})
505 status("    CMake build tool:" ${CMAKE_BUILD_TOOL})
506 if(MSVC)
507   status("    MSVC:"           ${MSVC_VERSION})
508 endif()
509 if(CMAKE_GENERATOR MATCHES Xcode)
510   status("    Xcode:"          ${XCODE_VERSION})
511 endif()
512 if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
513   status("    Configuration:"  ${CMAKE_BUILD_TYPE})
514 endif()
515
516 # ========================== C/C++ options ==========================
517 status("")
518 status("  C/C++:")
519 status("    Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO)
520 status("    C++ Compiler:"           CMAKE_COMPILER_IS_GNUCXX THEN "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1} (ver ${CMAKE_GCC_REGEX_VERSION})" ELSE "${CMAKE_CXX_COMPILER}" )
521 status("    C++ flags (Release):"    ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
522 status("    C++ flags (Debug):"      ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
523 status("    C Compiler:"             ${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ARG1})
524 status("    C flags (Release):"      ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE})
525 status("    C flags (Debug):"        ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG})
526 if(WIN32)
527   status("    Linker flags (Release):" ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE})
528   status("    Linker flags (Debug):"   ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
529 else()
530   status("    Linker flags (Release):" ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
531   status("    Linker flags (Debug):"   ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
532 endif()
533 status("    Precompiled headers:"     PCHSupport_FOUND AND ENABLE_PRECOMPILED_HEADERS THEN YES ELSE NO)
534
535 # ========================== OpenCV modules ==========================
536 status("")
537 status("  OpenCV modules:")
538 string(REPLACE "opencv_" "" OPENCV_MODULES_BUILD_ST          "${OPENCV_MODULES_BUILD}")
539 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_USER_ST  "${OPENCV_MODULES_DISABLED_USER}")
540 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_FORCE_ST "${OPENCV_MODULES_DISABLED_FORCE}")
541 set(OPENCV_MODULES_DISABLED_AUTO_ST "")
542 foreach(m ${OPENCV_MODULES_DISABLED_AUTO})
543   set(__mdeps "")
544   foreach(d ${OPENCV_MODULE_${m}_DEPS})
545     if(d MATCHES "^opencv_" AND NOT HAVE_${d})
546       list(APPEND __mdeps ${d})
547     endif()
548   endforeach()
549   list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
550 endforeach()
551 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST  "${OPENCV_MODULES_DISABLED_AUTO_ST}")
552
553 status("    To be built:"            OPENCV_MODULES_BUILD          THEN ${OPENCV_MODULES_BUILD_ST}          ELSE "-")
554 status("    Disabled:"               OPENCV_MODULES_DISABLED_USER  THEN ${OPENCV_MODULES_DISABLED_USER_ST}  ELSE "-")
555 status("    Disabled by dependency:" OPENCV_MODULES_DISABLED_AUTO  THEN ${OPENCV_MODULES_DISABLED_AUTO_ST}  ELSE "-")
556 status("    Unavailable:"            OPENCV_MODULES_DISABLED_FORCE THEN ${OPENCV_MODULES_DISABLED_FORCE_ST} ELSE "-")
557
558 # ========================== Android details ==========================
559 if(ANDROID)
560   status("")
561   status("  Android: ")
562   status("    Android ABI:" ${ANDROID_ABI})
563   status("    Native API level:" android-${ANDROID_NATIVE_API_LEVEL})
564   status("    SDK target:" "${ANDROID_SDK_TARGET}")
565   if(BUILD_WITH_ANDROID_NDK)
566     status("    Android NDK:" "${ANDROID_NDK} (toolchain: ${ANDROID_TOOLCHAIN_NAME})")
567   elseif(BUILD_WITH_STANDALONE_TOOLCHAIN)
568     status("    Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
569   endif()
570   status("    android tool:"  ANDROID_EXECUTABLE  THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
571   status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"            ELSE NO)
572   status("    Google Play package:" BUILD_ANDROID_PACKAGE THEN YES ELSE NO)
573 endif()
574
575 # ========================== GUI ==========================
576 status("")
577 status("  GUI: ")
578
579 if(HAVE_QT)
580   status("    QT 4.x:"            HAVE_QT        THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
581   status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
582 else()
583   if(DEFINED WITH_QT)
584     status("    QT 4.x:" NO)
585   endif()
586   if(WIN32)
587     status("    Win32 UI:" YES)
588   else()
589     if(APPLE)
590       if(WITH_CARBON)
591         status("    Carbon:" YES)
592       else()
593         status("    Cocoa:"  YES)
594       endif()
595     else()
596       status("    GTK+ 2.x:" HAVE_GTK      THEN "YES (ver ${ALIASOF_gtk+-2.0_VERSION})"     ELSE NO)
597       status("    GThread :" HAVE_GTHREAD  THEN "YES (ver ${ALIASOF_gthread-2.0_VERSION})"  ELSE NO)
598       status("    GtkGlExt:" HAVE_GTKGLEXT THEN "YES (ver ${ALIASOF_gtkglext-1.0_VERSION})" ELSE NO)
599     endif()
600   endif()
601 endif()
602
603 status("    OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO)
604
605 # ========================== MEDIA IO ==========================
606 status("")
607 status("  Media I/O: ")
608 status("    ZLib:"         BUILD_ZLIB    THEN "build (ver ${ZLIB_VERSION_STRING})"               ELSE "${ZLIB_LIBRARY} (ver ${ZLIB_VERSION_STRING})")
609
610 if(WITH_JPEG)
611   status("    JPEG:"       JPEG_FOUND    THEN "${JPEG_LIBRARY} (ver ${JPEG_LIB_VERSION})"        ELSE "build (ver ${JPEG_LIB_VERSION})")
612 else()
613   status("    JPEG:"       "NO")
614 endif()
615 if(WITH_PNG)
616   status("    PNG:"        PNG_FOUND     THEN "${PNG_LIBRARY} (ver ${PNG_VERSION})"              ELSE "build (ver ${PNG_VERSION})")
617 else()
618   status("    PNG:"        "NO")
619 endif()
620 if(WITH_TIFF)
621   if(TIFF_VERSION_STRING AND TIFF_FOUND)
622     status("    TIFF:"     "${TIFF_LIBRARY} (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
623   else()
624     status("    TIFF:"     TIFF_FOUND    THEN "${TIFF_LIBRARY} (ver ${TIFF_VERSION})"            ELSE "build (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
625   endif()
626 else()
627   status("    TIFF:"       "NO")
628 endif()
629 if(WITH_JASPER)
630   status("    JPEG 2000:"  JASPER_FOUND  THEN "${JASPER_LIBRARY} (ver ${JASPER_VERSION_STRING})" ELSE "build (ver ${JASPER_VERSION_STRING})")
631 else()
632   status("    JPEG 2000:"  "NO")
633 endif()
634 if(WITH_OPENEXR)
635   status("    OpenEXR:"  OPENEXR_FOUND  THEN "${OPENEXR_LIBRARIES} (ver ${OPENEXR_VERSION})" ELSE "build (ver ${OPENEXR_VERSION})")
636 else()
637   status("    OpenEXR:"  "NO")
638 endif()
639
640 # ========================== VIDEO IO ==========================
641 status("")
642 status("  Video I/O:")
643
644 if(DEFINED WITH_1394)
645   status("    DC1394 1.x:"     HAVE_DC1394         THEN "YES (ver ${ALIASOF_libdc1394_VERSION})"   ELSE NO)
646   status("    DC1394 2.x:"     HAVE_DC1394_2       THEN "YES (ver ${ALIASOF_libdc1394-2_VERSION})" ELSE NO)
647 endif(DEFINED WITH_1394)
648
649 if(ANDROID)
650   if(HAVE_opencv_androidcamera)
651     status("    AndroidNativeCamera:" BUILD_ANDROID_CAMERA_WRAPPER
652                                                    THEN "YES, build for Android${ANDROID_VERSION}" ELSE "YES, use prebuilt libraries")
653   else()
654     status("    AndroidNativeCamera:" "NO (native camera requires Android API level 8 or higher)")
655   endif()
656 endif()
657
658 if(DEFINED WITH_AVFOUNDATION)
659   status("    AVFoundation:"   WITH_AVFOUNDATION   THEN YES                                        ELSE NO)
660 endif(DEFINED WITH_AVFOUNDATION)
661
662 if(DEFINED WITH_FFMPEG)
663   if(WIN32)
664     status("    FFMPEG:"       WITH_FFMPEG         THEN "YES (prebuilt binaries)"                  ELSE NO)
665   else()
666     status("    FFMPEG:"       HAVE_FFMPEG         THEN YES ELSE NO)
667   endif()
668   status("      codec:"        HAVE_FFMPEG_CODEC   THEN "YES (ver ${ALIASOF_libavcodec_VERSION})"  ELSE NO)
669   status("      format:"       HAVE_FFMPEG_FORMAT  THEN "YES (ver ${ALIASOF_libavformat_VERSION})" ELSE NO)
670   status("      util:"         HAVE_FFMPEG_UTIL    THEN "YES (ver ${ALIASOF_libavutil_VERSION})"   ELSE NO)
671   status("      swscale:"      HAVE_FFMPEG_SWSCALE THEN "YES (ver ${ALIASOF_libswscale_VERSION})"  ELSE NO)
672   status("      gentoo-style:" HAVE_GENTOO_FFMPEG  THEN YES                                        ELSE NO)
673 endif(DEFINED WITH_FFMPEG)
674
675 if(DEFINED WITH_GSTREAMER)
676   status("    GStreamer:"      HAVE_GSTREAMER      THEN ""                                         ELSE NO)
677   if(HAVE_GSTREAMER)
678     status("      base:"       "YES (ver ${ALIASOF_gstreamer-base-0.10_VERSION})")
679     status("      app:"        "YES (ver ${ALIASOF_gstreamer-app-0.10_VERSION})")
680     status("      video:"      "YES (ver ${ALIASOF_gstreamer-video-0.10_VERSION})")
681   endif()
682 endif(DEFINED WITH_GSTREAMER)
683
684 if(DEFINED WITH_OPENNI)
685   status("    OpenNI:"         HAVE_OPENNI         THEN "YES (ver ${OPENNI_VERSION_STRING}, build ${OPENNI_VERSION_BUILD})"
686                                                                                                    ELSE NO)
687   status("    OpenNI PrimeSensor Modules:" HAVE_OPENNI_PRIME_SENSOR_MODULE
688                                                    THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})"      ELSE NO)
689 endif(DEFINED WITH_OPENNI)
690
691 if(DEFINED WITH_PVAPI)
692   status("    PvAPI:"          HAVE_PVAPI          THEN YES                                        ELSE NO)
693 endif(DEFINED WITH_PVAPI)
694
695 if(DEFINED WITH_QUICKTIME)
696   status("    QuickTime:"      WITH_QUICKTIME      THEN YES                                        ELSE NO)
697   status("    QTKit:"          WITH_QUICKTIME      THEN NO                                         ELSE YES)
698 endif(DEFINED WITH_QUICKTIME)
699
700 if(DEFINED WITH_UNICAP)
701   status("    UniCap:"         HAVE_UNICAP         THEN "YES (ver ${ALIASOF_libunicap_VERSION})"   ELSE NO)
702   status("    UniCap ucil:"    HAVE_UNICAP_UCIL    THEN "YES (ver ${ALIASOF_libucil_VERSION})"     ELSE NO)
703 endif(DEFINED WITH_UNICAP)
704
705 if(DEFINED WITH_V4L)
706   if(HAVE_CAMV4L)
707     set(HAVE_CAMV4L_STR "YES")
708   else()
709     set(HAVE_CAMV4L_STR "NO")
710   endif()
711   if(HAVE_CAMV4L2)
712     set(HAVE_CAMV4L2_STR "YES")
713   else()
714     set(HAVE_CAMV4L2_STR "NO")
715   endif()
716   status("    V4L/V4L2:"       HAVE_LIBV4L         THEN "Using libv4l (ver ${ALIASOF_libv4l1_VERSION})"
717                                                                                                    ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
718 endif(DEFINED WITH_V4L)
719
720 if(DEFINED WITH_VIDEOINPUT)
721   status("    DirectShow:"     HAVE_VIDEOINPUT     THEN YES                                        ELSE NO)
722 endif(DEFINED WITH_VIDEOINPUT)
723
724 if(DEFINED WITH_XIMEA)
725   status("    XIMEA:"          HAVE_XIMEA          THEN YES                                        ELSE NO)
726 endif(DEFINED WITH_XIMEA)
727
728 if(DEFINED WITH_XINE)
729   status("    Xine:"           HAVE_XINE           THEN "YES (ver ${ALIASOF_libxine_VERSION})"     ELSE NO)
730 endif(DEFINED WITH_XINE)
731
732 # ========================== Other third-party libraries ==========================
733 status("")
734 status("  Other third-party libraries:")
735
736 if(DEFINED WITH_IPP)
737   if(WITH_IPP AND IPP_FOUND)
738     status("    Use IPP:" "${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]")
739     status("         at:" "${IPP_ROOT_DIR}")
740   else()
741     status("    Use IPP:"   WITH_IPP AND NOT IPP_FOUND THEN "IPP not found" ELSE NO)
742   endif()
743 endif(DEFINED WITH_IPP)
744
745 if(DEFINED WITH_TBB)
746   status("    Use TBB:"   HAVE_TBB   THEN "YES (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})" ELSE NO)
747 endif(DEFINED WITH_TBB)
748
749 if(DEFINED WITH_CUDA)
750   status("    Use Cuda:"  HAVE_CUDA  THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
751 endif(DEFINED WITH_CUDA)
752
753 status("    Use OpenCL:"  HAVE_OPENCL  THEN YES ELSE NO)
754
755 status("    Use Eigen:" HAVE_EIGEN THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
756 status("    Use Clp:"   HAVE_CLP   THEN YES ELSE NO)
757
758 if(HAVE_CUDA)
759   status("")
760   status("  NVIDIA CUDA")
761
762   status("    Use CUFFT:"            HAVE_CUFFT  THEN YES ELSE NO)
763   status("    Use CUBLAS:"           HAVE_CUBLAS THEN YES ELSE NO)
764   status("    NVIDIA GPU arch:"      ${OPENCV_CUDA_ARCH_BIN})
765   status("    NVIDIA PTX archs:"     ${OPENCV_CUDA_ARCH_PTX})
766 endif()
767
768 # ========================== python ==========================
769 status("")
770 status("  Python:")
771 status("    Interpreter:"   PYTHON_EXECUTABLE     THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_FULL})"         ELSE NO)
772 if(BUILD_opencv_python)
773   if(PYTHONLIBS_VERSION_STRING)
774     status("    Libraries:"   HAVE_opencv_python  THEN  "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})"   ELSE NO)
775   else()
776     status("    Libraries:"   HAVE_opencv_python  THEN  ${PYTHON_LIBRARIES}                                        ELSE NO)
777   endif()
778   status("    numpy:"         PYTHON_USE_NUMPY    THEN "${PYTHON_NUMPY_INCLUDE_DIR} (ver ${PYTHON_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)")
779   status("    packages path:" PYTHON_EXECUTABLE   THEN "${PYTHON_PACKAGES_PATH}"                                   ELSE "-")
780 endif()
781
782 # ========================== documentation ==========================
783 if(BUILD_DOCS)
784   status("")
785   status("  Documentation:")
786   if(HAVE_SPHINX)
787     status("    Build Documentation:" PDFLATEX_COMPILER      THEN YES ELSE "YES (only HTML and without math expressions)")
788   else()
789     status("    Build Documentation:" NO)
790   endif()
791   status("    Sphinx:"              HAVE_SPHINX              THEN "${SPHINX_BUILD} (ver ${SPHINX_VERSION})" ELSE NO)
792   status("    PdfLaTeX compiler:"   PDFLATEX_COMPILER        THEN "${PDFLATEX_COMPILER}" ELSE NO)
793 endif()
794
795 # ========================== samples and tests ==========================
796 status("")
797 status("  Tests and samples:")
798 status("    Tests:"             BUILD_TESTS AND HAVE_opencv_ts       THEN YES ELSE NO)
799 status("    Performance tests:" BUILD_PERF_TESTS AND HAVE_opencv_ts  THEN YES ELSE NO)
800 status("    Examples:"          BUILD_EXAMPLES                       THEN YES ELSE NO)
801
802 if(ANDROID)
803   status("    Android tests:"    BUILD_TESTS AND CAN_BUILD_ANDROID_PROJECTS            THEN YES ELSE NO)
804   status("    Android examples:" BUILD_ANDROID_EXAMPLES AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
805 endif()
806
807 # ========================== auxiliary ==========================
808 status("")
809 status("  Install path:" "${CMAKE_INSTALL_PREFIX}")
810 status("")
811 status("  cvconfig.h is in:" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
812 status("-----------------------------------------------------------------")
813 status("")
814
815 ocv_finalize_status()
816
817 # ----------------------------------------------------------------------------
818 # Warn in the case of in-source build
819 # ----------------------------------------------------------------------------
820 if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
821   message(WARNING "The source directory is the same as binary directory. \"make clean\" may damage the source tree")
822 endif()
823