Merge remote-tracking branch 'origin/master'
[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 REQUIRED)
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 REQUIRED)
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
163 # 3rd party libs
164 OCV_OPTION(BUILD_ZLIB               "Build zlib from source"         WIN32 OR IOS OR APPLE )
165 OCV_OPTION(BUILD_TIFF               "Build libtiff from source"      WIN32 OR IOS OR ANDROID OR APPLE )
166 OCV_OPTION(BUILD_JASPER             "Build libjasper from source"    WIN32 OR IOS OR ANDROID OR APPLE )
167 OCV_OPTION(BUILD_JPEG               "Build libjpeg from source"      WIN32 OR IOS OR ANDROID OR APPLE )
168 OCV_OPTION(BUILD_PNG                "Build libpng from source"       WIN32 OR IOS OR ANDROID OR APPLE )
169
170 # OpenCV installation options
171 # ===================================================
172 OCV_OPTION(INSTALL_C_EXAMPLES       "Install C examples"        OFF )
173 OCV_OPTION(INSTALL_PYTHON_EXAMPLES  "Install Python examples"   OFF )
174 OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples"  OFF  IF ANDROID )
175 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) )
176
177
178 if(MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode)
179   set(ENABLE_SOLUTION_FOLDERS0 ON)
180 else()
181   set(ENABLE_SOLUTION_FOLDERS0 OFF)
182 endif()
183
184 # OpenCV build options
185 # ===================================================
186 OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers"                                  ON   IF (NOT IOS) )
187 OCV_OPTION(ENABLE_SOLUTION_FOLDERS    "Solution folder in Visual Studio or in other IDEs"        ${ENABLE_SOLUTION_FOLDERS0} IF (CMAKE_VERSION VERSION_GREATER "2.8.0") )
188 OCV_OPTION(ENABLE_PROFILING           "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF  IF CMAKE_COMPILER_IS_GNUCXX )
189 OCV_OPTION(ENABLE_OMIT_FRAME_POINTER  "Enable -fomit-frame-pointer for GCC"                      ON   IF CMAKE_COMPILER_IS_GNUCXX )
190 OCV_OPTION(ENABLE_POWERPC             "Enable PowerPC for GCC"                                   ON   IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
191 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)) )
192 OCV_OPTION(ENABLE_SSE                 "Enable SSE instructions"                                  ON   IF (MSVC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
193 OCV_OPTION(ENABLE_SSE2                "Enable SSE2 instructions"                                 ON   IF (MSVC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
194 OCV_OPTION(ENABLE_SSE3                "Enable SSE3 instructions"                                 OFF  IF (CV_ICC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
195 OCV_OPTION(ENABLE_SSSE3               "Enable SSSE3 instructions"                                OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
196 OCV_OPTION(ENABLE_SSE41               "Enable SSE4.1 instructions"                               OFF  IF (CV_ICC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
197 OCV_OPTION(ENABLE_SSE42               "Enable SSE4.2 instructions"                               OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
198 OCV_OPTION(ENABLE_NOISY_WARNINGS      "Show all warnings even if they are too noisy"             OFF )
199 OCV_OPTION(OPENCV_WARNINGS_ARE_ERRORS "Treat warnings as errors"                                 OFF )
200
201 # uncategorized options
202 # ===================================================
203 OCV_OPTION(CMAKE_VERBOSE "Verbose mode" OFF )
204
205 # backward compatibility
206 # ===================================================
207 include(cmake/OpenCVLegacyOptions.cmake OPTIONAL)
208
209
210 # ----------------------------------------------------------------------------
211 #  Get actual OpenCV version number from sources
212 # ----------------------------------------------------------------------------
213 include(cmake/OpenCVVersion.cmake REQUIRED)
214
215
216 # ----------------------------------------------------------------------------
217 #  Build & install layouts
218 # ----------------------------------------------------------------------------
219
220 # Save libs and executables in the same place
221 set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications" )
222
223 if(ANDROID OR WIN32)
224     set(OPENCV_DOC_INSTALL_PATH doc)
225 elseif(INSTALL_TO_MANGLED_PATHS)
226     set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc)
227 else()
228     set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
229 endif()
230
231 if(ANDROID)
232     set(LIBRARY_OUTPUT_PATH         "${OpenCV_BINARY_DIR}/lib/${ANDROID_NDK_ABI_NAME}")
233     set(3P_LIBRARY_OUTPUT_PATH      "${OpenCV_BINARY_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}")
234     set(OPENCV_LIB_INSTALL_PATH     sdk/native/libs/${ANDROID_NDK_ABI_NAME})
235     set(OPENCV_3P_LIB_INSTALL_PATH  sdk/native/3rdparty/libs/${ANDROID_NDK_ABI_NAME})
236     set(OPENCV_CONFIG_INSTALL_PATH  sdk/native/jni)
237     set(OPENCV_INCLUDE_INSTALL_PATH sdk/native/jni/include)
238 else()
239     set(LIBRARY_OUTPUT_PATH         "${OpenCV_BINARY_DIR}/lib")
240     set(3P_LIBRARY_OUTPUT_PATH      "${OpenCV_BINARY_DIR}/3rdparty/lib${LIB_SUFFIX}")
241     set(OPENCV_LIB_INSTALL_PATH     lib${LIB_SUFFIX})
242     set(OPENCV_3P_LIB_INSTALL_PATH  share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH})
243     set(OPENCV_INCLUDE_INSTALL_PATH include)
244
245     math(EXPR SIZEOF_VOID_P_BITS "8 * ${CMAKE_SIZEOF_VOID_P}")
246     if(LIB_SUFFIX AND NOT SIZEOF_VOID_P_BITS EQUAL LIB_SUFFIX)
247       set(OPENCV_CONFIG_INSTALL_PATH lib${LIB_SUFFIX}/cmake/opencv)
248     else()
249       set(OPENCV_CONFIG_INSTALL_PATH share/OpenCV)
250     endif()
251 endif()
252
253 set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
254 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
255
256 if(INSTALL_TO_MANGLED_PATHS)
257   set(OPENCV_INCLUDE_INSTALL_PATH ${OPENCV_INCLUDE_INSTALL_PATH}/opencv-${OPENCV_VERSION})
258 endif()
259
260 if(WIN32)
261   # Postfix of DLLs:
262   set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
263   set(OPENCV_DEBUG_POSTFIX d)
264 else()
265   # Postfix of so's:
266   set(OPENCV_DLLVERSION "")
267   set(OPENCV_DEBUG_POSTFIX "")
268 endif()
269
270 if(DEFINED CMAKE_DEBUG_POSTFIX)
271   set(OPENCV_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
272 endif()
273
274 if(CMAKE_VERBOSE)
275   set(CMAKE_VERBOSE_MAKEFILE 1)
276 endif()
277
278
279 # ----------------------------------------------------------------------------
280 #  Path for build/platform -specific headers
281 # ----------------------------------------------------------------------------
282 set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
283 add_definitions(-DHAVE_CVCONFIG_H)
284 ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
285
286
287 # ----------------------------------------------------------------------------
288 #  Autodetect if we are in a SVN repository
289 # ----------------------------------------------------------------------------
290 find_host_program(SVNVERSION_PATH svnversion)
291 mark_as_advanced(force SVNVERSION_PATH)
292 if(SVNVERSION_PATH)
293     message(STATUS "Extracting svn version, please wait...")
294     execute_process(COMMAND ${SVNVERSION_PATH} -n ${OpenCV_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT)
295
296     if(SVNVERSION_RESULT MATCHES "exported")
297         # This is NOT a svn repository:
298         set(OPENCV_SVNVERSION "")
299         message(STATUS "SVNVERSION: exported")
300     else()
301         set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}")
302         message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}")
303     endif()
304 else()
305     # We don't have svnversion:
306     set(OPENCV_SVNVERSION "")
307 endif()
308
309
310 # ----------------------------------------------------------------------------
311 # OpenCV compiler and linker options
312 # ----------------------------------------------------------------------------
313 # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
314 if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
315   set(CMAKE_BUILD_TYPE Release)
316 endif()
317
318 include(cmake/OpenCVCompilerOptions.cmake REQUIRED)
319
320
321 # ----------------------------------------------------------------------------
322 # Use statically or dynamically linked CRT?
323 # Default: dynamic
324 # ----------------------------------------------------------------------------
325 if(MSVC)
326   include(cmake/OpenCVCRTLinkage.cmake REQUIRED)
327 endif(MSVC)
328
329
330 # ----------------------------------------------------------------------------
331 #       CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
332 # ----------------------------------------------------------------------------
333 if(UNIX)
334   include(cmake/OpenCVFindPkgConfig.cmake OPTIONAL)
335   include(CheckFunctionExists)
336   include(CheckIncludeFile)
337
338   if(NOT APPLE)
339     CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
340     CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)
341     CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
342     CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)
343     if(ANDROID)
344       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m log)
345     elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|DragonFly")
346       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m pthread)
347     else()
348       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m pthread rt)
349     endif()
350   else()
351     add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H)
352   endif()
353 endif()
354
355 include(cmake/OpenCVPCHSupport.cmake REQUIRED)
356 include(cmake/OpenCVModule.cmake REQUIRED)
357
358 # ----------------------------------------------------------------------------
359 #  Detect 3rd-party libraries
360 # ----------------------------------------------------------------------------
361
362 include(cmake/OpenCVFindLibsGrfmt.cmake REQUIRED)
363 include(cmake/OpenCVFindLibsGUI.cmake   REQUIRED)
364 include(cmake/OpenCVFindLibsVideo.cmake REQUIRED)
365 include(cmake/OpenCVFindLibsPerf.cmake  REQUIRED)
366
367
368 # ----------------------------------------------------------------------------
369 #  Detect other 3rd-party libraries/tools
370 # ----------------------------------------------------------------------------
371
372 # --- LATEX for pdf documentation ---
373 if(BUILD_DOCS)
374   include(cmake/OpenCVFindLATEX.cmake REQUIRED)
375 endif(BUILD_DOCS)
376
377 # --- Python Support ---
378 include(cmake/OpenCVDetectPython.cmake REQUIRED)
379
380 # --- Java Support ---
381 if(ANDROID)
382   include(cmake/OpenCVDetectApacheAnt.cmake REQUIRED)
383   include(cmake/OpenCVDetectAndroidSDK.cmake REQUIRED)
384
385   if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13)
386     message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.")
387   endif()
388 endif(ANDROID)
389
390 if(ANDROID AND ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND (ANT_VERSION VERSION_GREATER 1.7) AND (ANDROID_TOOLS_Pkg_Revision GREATER 13))
391   SET(CAN_BUILD_ANDROID_PROJECTS TRUE)
392 else()
393   SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
394 endif()
395
396 # --- OpenCL ---
397 if(WITH_OPENCL)
398   include(cmake/OpenCVDetectOpenCL.cmake REQUIRED)
399   if(OPENCL_FOUND)
400     set(HAVE_OPENCL 1)
401   endif()
402   if(WITH_OPENCLAMDFFT)
403     set(HAVE_CLAMDFFT 1)
404   endif()
405   if(WITH_OPENCLAMDBLAS)
406     set(HAVE_CLAMDBLAS 1)
407   endif()
408 endif()
409
410 # ----------------------------------------------------------------------------
411 # Solution folders:
412 # ----------------------------------------------------------------------------
413 if(ENABLE_SOLUTION_FOLDERS)
414   set_property(GLOBAL PROPERTY USE_FOLDERS ON)
415   set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
416 endif()
417
418 # Extra OpenCV targets: uninstall, package_source, perf, etc.
419 include(cmake/OpenCVExtraTargets.cmake REQUIRED)
420
421
422 # ----------------------------------------------------------------------------
423 # Process subdirectories
424 # ----------------------------------------------------------------------------
425
426 # opencv.hpp and legacy headers
427 add_subdirectory(include)
428
429 # OpenCV modules
430 add_subdirectory(modules)
431
432 # Generate targets for documentation
433 add_subdirectory(doc)
434
435 # various data that is used by cv libraries and/or demo applications.
436 add_subdirectory(data)
437
438 # extra applications
439 add_subdirectory(apps)
440
441 # examples
442 if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
443   add_subdirectory(samples)
444 endif()
445
446 if(BUILD_ANDROID_SERVICE)
447   add_subdirectory(android/service)
448 endif()
449
450 if(BUILD_ANDROID_PACKAGE)
451   add_subdirectory(android/package)
452 endif()
453
454 # ----------------------------------------------------------------------------
455 # Finalization: generate configuration-based files
456 # ----------------------------------------------------------------------------
457 ocv_track_build_dependencies()
458
459 # Generate platform-dependent and configuration-dependent headers
460 include(cmake/OpenCVGenHeaders.cmake REQUIRED)
461
462 # Generate opencv.pc for pkg-config command
463 include(cmake/OpenCVGenPkgconfig.cmake REQUIRED)
464
465 # Generate OpenCV.mk for ndk-build (Android build tool)
466 include(cmake/OpenCVGenAndroidMK.cmake REQUIRED)
467
468 # Generate OpenCVСonfig.cmake and OpenCVConfig-version.cmake for cmake projects
469 include(cmake/OpenCVGenConfig.cmake REQUIRED)
470
471
472 # ----------------------------------------------------------------------------
473 # Summary:
474 # ----------------------------------------------------------------------------
475 status("")
476 status("General configuration for OpenCV ${OPENCV_VERSION} =====================================")
477 if(OPENCV_SVNVERSION)
478   status("Version control:" ${OPENCV_SVNVERSION})
479 endif()
480
481 # ========================== build platform ==========================
482 status("")
483 status("  Platform:")
484 status("    Host:"             ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR})
485 if(CMAKE_CROSSCOMPILING)
486   status("    Target:"         ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
487 endif()
488 status("    CMake:"            ${CMAKE_VERSION})
489 status("    CMake generator:"  ${CMAKE_GENERATOR})
490 status("    CMake build tool:" ${CMAKE_BUILD_TOOL})
491 if(MSVC)
492   status("    MSVC:"           ${MSVC_VERSION})
493 endif()
494 if(CMAKE_GENERATOR MATCHES Xcode)
495   status("    Xcode:"          ${XCODE_VERSION})
496 endif()
497 if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
498   status("    Configuration:"  ${CMAKE_BUILD_TYPE})
499 endif()
500
501 # ========================== C/C++ options ==========================
502 status("")
503 status("  C/C++:")
504 status("    Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO)
505 status("    C++ Compiler:"           CMAKE_COMPILER_IS_GNUCXX THEN "${CMAKE_CXX_COMPILER} (ver ${CMAKE_GCC_REGEX_VERSION})" ELSE "${CMAKE_CXX_COMPILER}" )
506 status("    C++ flags (Release):"    ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
507 status("    C++ flags (Debug):"      ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
508 status("    C Compiler:"             ${CMAKE_C_COMPILER})
509 status("    C flags (Release):"      ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE})
510 status("    C flags (Debug):"        ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG})
511 if(WIN32)
512   status("    Linker flags (Release):" ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE})
513   status("    Linker flags (Debug):"   ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
514 else()
515   status("    Linker flags (Release):" ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
516   status("    Linker flags (Debug):"   ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
517 endif()
518 status("    Precompiled headers:"     PCHSupport_FOUND AND ENABLE_PRECOMPILED_HEADERS THEN YES ELSE NO)
519
520 # ========================== OpenCV modules ==========================
521 status("")
522 status("  OpenCV modules:")
523 string(REPLACE "opencv_" "" OPENCV_MODULES_BUILD_ST          "${OPENCV_MODULES_BUILD}")
524 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_USER_ST  "${OPENCV_MODULES_DISABLED_USER}")
525 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_FORCE_ST "${OPENCV_MODULES_DISABLED_FORCE}")
526 set(OPENCV_MODULES_DISABLED_AUTO_ST "")
527 foreach(m ${OPENCV_MODULES_DISABLED_AUTO})
528   set(__mdeps "")
529   foreach(d ${OPENCV_MODULE_${m}_DEPS})
530     if(d MATCHES "^opencv_" AND NOT HAVE_${d})
531       list(APPEND __mdeps ${d})
532     endif()
533   endforeach()
534   list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
535 endforeach()
536 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST  "${OPENCV_MODULES_DISABLED_AUTO_ST}")
537
538 status("    To be built:"            OPENCV_MODULES_BUILD          THEN ${OPENCV_MODULES_BUILD_ST}          ELSE "-")
539 status("    Disabled:"               OPENCV_MODULES_DISABLED_USER  THEN ${OPENCV_MODULES_DISABLED_USER_ST}  ELSE "-")
540 status("    Disabled by dependency:" OPENCV_MODULES_DISABLED_AUTO  THEN ${OPENCV_MODULES_DISABLED_AUTO_ST}  ELSE "-")
541 status("    Unavailable:"            OPENCV_MODULES_DISABLED_FORCE THEN ${OPENCV_MODULES_DISABLED_FORCE_ST} ELSE "-")
542
543 # ========================== Android details ==========================
544 if(ANDROID)
545   status("")
546   status("  Android: ")
547   status("    Android ABI:" ${ANDROID_ABI})
548   status("    Native API level:" android-${ANDROID_NATIVE_API_LEVEL})
549   status("    SDK target:" "${ANDROID_SDK_TARGET}")
550   if(BUILD_WITH_ANDROID_NDK)
551     status("    Android NDK:" "${ANDROID_NDK} (toolchain: ${ANDROID_TOOLCHAIN_NAME})")
552   elseif(BUILD_WITH_STANDALONE_TOOLCHAIN)
553     status("    Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
554   endif()
555   status("    android tool:"  ANDROID_EXECUTABLE  THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
556   status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"            ELSE NO)
557   status("    Google Play package:" BUILD_ANDROID_PACKAGE THEN YES ELSE NO)
558 endif()
559
560 # ========================== GUI ==========================
561 status("")
562 status("  GUI: ")
563
564 if(HAVE_QT)
565   status("    QT 4.x:"            HAVE_QT        THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
566   status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
567 else()
568   if(DEFINED WITH_QT)
569     status("    QT 4.x:" NO)
570   endif()
571   if(WIN32)
572     status("    Win32 UI:" YES)
573   else()
574     if(APPLE)
575       if(WITH_CARBON)
576         status("    Carbon:" YES)
577       else()
578         status("    Cocoa:"  YES)
579       endif()
580     else()
581       status("    GTK+ 2.x:" HAVE_GTK      THEN "YES (ver ${ALIASOF_gtk+-2.0_VERSION})"     ELSE NO)
582       status("    GThread :" HAVE_GTHREAD  THEN "YES (ver ${ALIASOF_gthread-2.0_VERSION})"  ELSE NO)
583       status("    GtkGlExt:" HAVE_GTKGLEXT THEN "YES (ver ${ALIASOF_gtkglext-1.0_VERSION})" ELSE NO)
584     endif()
585   endif()
586 endif()
587
588 status("    OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO)
589
590 # ========================== MEDIA IO ==========================
591 status("")
592 status("  Media I/O: ")
593 status("    ZLib:"         BUILD_ZLIB    THEN "build (ver ${ZLIB_VERSION_STRING})"               ELSE "${ZLIB_LIBRARY} (ver ${ZLIB_VERSION_STRING})")
594
595 if(WITH_JPEG)
596   status("    JPEG:"       JPEG_FOUND    THEN "${JPEG_LIBRARY} (ver ${JPEG_LIB_VERSION})"        ELSE "build (ver ${JPEG_LIB_VERSION})")
597 else()
598   status("    JPEG:"       "NO")
599 endif()
600 if(WITH_PNG)
601   status("    PNG:"        PNG_FOUND     THEN "${PNG_LIBRARY} (ver ${PNG_VERSION})"              ELSE "build (ver ${PNG_VERSION})")
602 else()
603   status("    PNG:"        "NO")
604 endif()
605 if(WITH_TIFF)
606   if(TIFF_VERSION_STRING AND TIFF_FOUND)
607     status("    TIFF:"     "${TIFF_LIBRARY} (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
608   else()
609     status("    TIFF:"     TIFF_FOUND    THEN "${TIFF_LIBRARY} (ver ${TIFF_VERSION})"            ELSE "build (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
610   endif()
611 else()
612   status("    TIFF:"       "NO")
613 endif()
614 if(WITH_JASPER)
615   status("    JPEG 2000:"  JASPER_FOUND  THEN "${JASPER_LIBRARY} (ver ${JASPER_VERSION_STRING})" ELSE "build (ver ${JASPER_VERSION_STRING})")
616 else()
617   status("    JPEG 2000:"  "NO")
618 endif()
619
620 status("    OpenEXR:"   WITH_OPENEXR AND OPENEXR_FOUND     THEN "${OPENEXR_LIBRARIES} (ver ${OPENEXR_VERSION})"                     ELSE NO)
621
622 # ========================== VIDEO IO ==========================
623 status("")
624 status("  Video I/O:")
625
626 if(DEFINED WITH_1394)
627   status("    DC1394 1.x:"     HAVE_DC1394         THEN "YES (ver ${ALIASOF_libdc1394_VERSION})"   ELSE NO)
628   status("    DC1394 2.x:"     HAVE_DC1394_2       THEN "YES (ver ${ALIASOF_libdc1394-2_VERSION})" ELSE NO)
629 endif(DEFINED WITH_1394)
630
631 if(ANDROID)
632   if(HAVE_opencv_androidcamera)
633     status("    AndroidNativeCamera:" BUILD_ANDROID_CAMERA_WRAPPER
634                                                    THEN "YES, build for Android${ANDROID_VERSION}" ELSE "YES, use prebuilt libraries")
635   else()
636     status("    AndroidNativeCamera:" "NO (native camera requires Android API level 8 or higher)")
637   endif()
638 endif()
639
640 if(DEFINED WITH_AVFOUNDATION)
641   status("    AVFoundation:"   WITH_AVFOUNDATION   THEN YES                                        ELSE NO)
642 endif(DEFINED WITH_AVFOUNDATION)
643
644 if(DEFINED WITH_FFMPEG)
645   if(WIN32)
646     status("    FFMPEG:"       WITH_FFMPEG         THEN "YES (prebuilt binaries)"                  ELSE NO)
647   else()
648     status("    FFMPEG:"       HAVE_FFMPEG         THEN YES ELSE NO)
649   endif()
650   status("      codec:"        HAVE_FFMPEG_CODEC   THEN "YES (ver ${ALIASOF_libavcodec_VERSION})"  ELSE NO)
651   status("      format:"       HAVE_FFMPEG_FORMAT  THEN "YES (ver ${ALIASOF_libavformat_VERSION})" ELSE NO)
652   status("      util:"         HAVE_FFMPEG_UTIL    THEN "YES (ver ${ALIASOF_libavutil_VERSION})"   ELSE NO)
653   status("      swscale:"      HAVE_FFMPEG_SWSCALE THEN "YES (ver ${ALIASOF_libswscale_VERSION})"  ELSE NO)
654   status("      gentoo-style:" HAVE_GENTOO_FFMPEG  THEN YES                                        ELSE NO)
655 endif(DEFINED WITH_FFMPEG)
656
657 if(DEFINED WITH_GSTREAMER)
658   status("    GStreamer:"      HAVE_GSTREAMER      THEN ""                                         ELSE NO)
659   if(HAVE_GSTREAMER)
660     status("      base:"       "YES (ver ${ALIASOF_gstreamer-base-0.10_VERSION})")
661     status("      app:"        "YES (ver ${ALIASOF_gstreamer-app-0.10_VERSION})")
662     status("      video:"      "YES (ver ${ALIASOF_gstreamer-video-0.10_VERSION})")
663   endif()
664 endif(DEFINED WITH_GSTREAMER)
665
666 if(DEFINED WITH_OPENNI)
667   status("    OpenNI:"         HAVE_OPENNI         THEN "YES (ver ${OPENNI_VERSION_STRING}, build ${OPENNI_VERSION_BUILD})"
668                                                                                                    ELSE NO)
669   status("    OpenNI PrimeSensor Modules:" HAVE_OPENNI_PRIME_SENSOR_MODULE
670                                                    THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})"      ELSE NO)
671 endif(DEFINED WITH_OPENNI)
672
673 if(DEFINED WITH_PVAPI)
674   status("    PvAPI:"          HAVE_PVAPI          THEN YES                                        ELSE NO)
675 endif(DEFINED WITH_PVAPI)
676
677 if(DEFINED WITH_QUICKTIME)
678   status("    QuickTime:"      WITH_QUICKTIME      THEN YES                                        ELSE NO)
679   status("    QTKit:"          WITH_QUICKTIME      THEN NO                                         ELSE YES)
680 endif(DEFINED WITH_QUICKTIME)
681
682 if(DEFINED WITH_UNICAP)
683   status("    UniCap:"         HAVE_UNICAP         THEN "YES (ver ${ALIASOF_libunicap_VERSION})"   ELSE NO)
684   status("    UniCap ucil:"    HAVE_UNICAP_UCIL    THEN "YES (ver ${ALIASOF_libucil_VERSION})"     ELSE NO)
685 endif(DEFINED WITH_UNICAP)
686
687 if(DEFINED WITH_V4L)
688   if(HAVE_CAMV4L)
689     set(HAVE_CAMV4L_STR "YES")
690   else()
691     set(HAVE_CAMV4L_STR "NO")
692   endif()
693   if(HAVE_CAMV4L2)
694     set(HAVE_CAMV4L2_STR "YES")
695   else()
696     set(HAVE_CAMV4L2_STR "NO")
697   endif()
698   status("    V4L/V4L2:"       HAVE_LIBV4L         THEN "Using libv4l (ver ${ALIASOF_libv4l1_VERSION})"
699                                                                                                    ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
700 endif(DEFINED WITH_V4L)
701
702 if(DEFINED WITH_VIDEOINPUT)
703   status("    DirectShow:"     HAVE_VIDEOINPUT     THEN YES                                        ELSE NO)
704 endif(DEFINED WITH_VIDEOINPUT)
705
706 if(DEFINED WITH_XIMEA)
707   status("    XIMEA:"          HAVE_XIMEA          THEN YES                                        ELSE NO)
708 endif(DEFINED WITH_XIMEA)
709
710 if(DEFINED WITH_XINE)
711   status("    Xine:"           HAVE_XINE           THEN "YES (ver ${ALIASOF_libxine_VERSION})"     ELSE NO)
712 endif(DEFINED WITH_XINE)
713
714 # ========================== Other third-party libraries ==========================
715 status("")
716 status("  Other third-party libraries:")
717
718 if(DEFINED WITH_IPP)
719   if(WITH_IPP AND IPP_FOUND)
720     status("    Use IPP:" "${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]")
721     status("         at:" "${IPP_ROOT_DIR}")
722   else()
723     status("    Use IPP:"   WITH_IPP AND NOT IPP_FOUND THEN "IPP not found" ELSE NO)
724   endif()
725 endif(DEFINED WITH_IPP)
726
727 if(DEFINED WITH_TBB)
728   status("    Use TBB:"   HAVE_TBB   THEN "YES (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})" ELSE NO)
729 endif(DEFINED WITH_TBB)
730
731 if(DEFINED WITH_CUDA)
732   status("    Use Cuda:"  HAVE_CUDA  THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
733 endif(DEFINED WITH_CUDA)
734
735 status("    Use OpenCL:"  HAVE_OPENCL  THEN YES ELSE NO)
736
737 status("    Use Eigen:" HAVE_EIGEN THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
738 status("    Use Clp:"   HAVE_CLP   THEN YES ELSE NO)
739
740 if(HAVE_CUDA)
741   status("")
742   status("  NVIDIA CUDA:"            "(ver ${CUDA_VERSION_STRING})")
743
744   status("    Use CUFFT:"            HAVE_CUFFT  THEN YES ELSE NO)
745   status("    Use CUBLAS:"           HAVE_CUBLAS THEN YES ELSE NO)
746   status("    NVIDIA GPU arch:"      ${OPENCV_CUDA_ARCH_BIN})
747   status("    NVIDIA PTX archs:"     ${OPENCV_CUDA_ARCH_BIN})
748   status("    NVIDIA GPU features:"  ${OPENCV_CUDA_ARCH_FEATURES})
749 endif()
750
751 # ========================== python ==========================
752 status("")
753 status("  Python:")
754 status("    Interpreter:"   PYTHON_EXECUTABLE     THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_FULL})"         ELSE NO)
755 if(BUILD_opencv_python)
756   if(PYTHONLIBS_VERSION_STRING)
757     status("    Libraries:"     HAVE_opencv_python  THEN  "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})" ELSE NO)
758   else()
759     status("    Libraries:"     HAVE_opencv_python  THEN  ${PYTHON_LIBRARIES}                                      ELSE NO)
760   endif()
761   status("    numpy:"         PYTHON_USE_NUMPY    THEN "${PYTHON_NUMPY_INCLUDE_DIR} (ver ${PYTHON_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)")
762   status("    packages path:" PYTHON_EXECUTABLE   THEN "${PYTHON_PACKAGES_PATH}"                                   ELSE "-")
763 endif()
764
765 # ========================== documentation ==========================
766 if(BUILD_DOCS)
767   status("")
768   status("  Documentation:")
769   if(HAVE_SPHINX)
770     status("    Build Documentation:" PDFLATEX_COMPILER      THEN YES ELSE "YES (only HTML and without math expressions)")
771   else()
772     status("    Build Documentation:" NO)
773   endif()
774   status("    Sphinx:"              HAVE_SPHINX              THEN "${SPHINX_BUILD} (ver ${SPHINX_VERSION})" ELSE NO)
775   status("    PdfLaTeX compiler:"   PDFLATEX_COMPILER        THEN "${PDFLATEX_COMPILER}" ELSE NO)
776 endif()
777
778 # ========================== samples and tests ==========================
779 status("")
780 status("  Tests and samples:")
781 status("    Tests:"             BUILD_TESTS AND HAVE_opencv_ts       THEN YES ELSE NO)
782 status("    Performance tests:" BUILD_PERF_TESTS AND HAVE_opencv_ts  THEN YES ELSE NO)
783 status("    Examples:"          BUILD_EXAMPLES                       THEN YES ELSE NO)
784
785 if(ANDROID)
786   status("    Android tests:"    BUILD_TESTS AND CAN_BUILD_ANDROID_PROJECTS            THEN YES ELSE NO)
787   status("    Android examples:" BUILD_ANDROID_EXAMPLES AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
788 endif()
789
790 # ========================== auxiliary ==========================
791 status("")
792 status("  Install path:" "${CMAKE_INSTALL_PREFIX}")
793 status("")
794 status("  cvconfig.h is in:" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
795 status("-----------------------------------------------------------------")
796 status("")
797
798 ocv_finalize_status()
799
800 # ----------------------------------------------------------------------------
801 # Warn in the case of in-source build
802 # ----------------------------------------------------------------------------
803 if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
804   message(WARNING "The source directory is the same as binary directory. \"make clean\" may damage the source tree")
805 endif()
806