added opencv_world module that combines all the other [selected by user] OpenCV modul...
[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 endif(NOT CMAKE_TOOLCHAIN_FILE)
41
42 # --------------------------------------------------------------
43 # Top level OpenCV project
44 # --------------------------------------------------------------
45 if(CMAKE_GENERATOR MATCHES Xcode AND XCODE_VERSION VERSION_GREATER 4.3)
46   cmake_minimum_required(VERSION 2.8.8)
47 elseif(IOS)
48   cmake_minimum_required(VERSION 2.8.0)
49 else()
50   cmake_minimum_required(VERSION 2.6.3)
51 endif()
52
53 set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
54 if(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
55   set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
56 endif()
57
58 project(OpenCV CXX C)
59
60 include(cmake/OpenCVUtils.cmake REQUIRED)
61
62 # ----------------------------------------------------------------------------
63 # Detect compiler and target platform architecture
64 # ----------------------------------------------------------------------------
65 include(cmake/OpenCVDetectCXXCompiler.cmake REQUIRED)
66
67 # Add these standard paths to the search paths for FIND_LIBRARY
68 # to find libraries from these locations first
69 if(UNIX AND NOT ANDROID)
70   if(X86_64 OR CMAKE_SIZEOF_VOID_P EQUAL 8)
71     if(EXISTS /lib64)
72       list(APPEND CMAKE_LIBRARY_PATH /lib64)
73     else()
74       list(APPEND CMAKE_LIBRARY_PATH /lib)
75     endif()
76     if(EXISTS /usr/lib64)
77       list(APPEND CMAKE_LIBRARY_PATH /usr/lib64)
78     else()
79       list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
80     endif()
81   elseif(X86 OR CMAKE_SIZEOF_VOID_P EQUAL 4)
82     if(EXISTS /lib32)
83       list(APPEND CMAKE_LIBRARY_PATH /lib32)
84     else()
85       list(APPEND CMAKE_LIBRARY_PATH /lib)
86     endif()
87     if(EXISTS /usr/lib32)
88       list(APPEND CMAKE_LIBRARY_PATH /usr/lib32)
89     else()
90       list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
91     endif()
92   endif()
93 endif()
94
95
96 # ----------------------------------------------------------------------------
97 # OpenCV cmake options
98 # ----------------------------------------------------------------------------
99
100 # Optional 3rd party components
101 # ===================================================
102 OCV_OPTION(WITH_1394           "Include IEEE1394 support"                    ON   IF (UNIX AND NOT ANDROID AND NOT IOS) )
103 OCV_OPTION(WITH_AVFOUNDATION   "Use AVFoundation for Video I/O"              ON   IF IOS)
104 OCV_OPTION(WITH_CARBON         "Use Carbon for UI instead of Cocoa"          OFF  IF APPLE )
105 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) )
106 OCV_OPTION(WITH_CUDA           "Include NVidia Cuda Runtime support"         ON   IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
107 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) )
108 OCV_OPTION(WITH_EIGEN          "Include Eigen2/Eigen3 support"               ON)
109 OCV_OPTION(WITH_FFMPEG         "Include FFMPEG support"                      ON   IF (NOT ANDROID AND NOT IOS) )
110 OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
111 OCV_OPTION(WITH_GTK            "Include GTK support"                         ON   IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
112 OCV_OPTION(WITH_IPP            "Include Intel IPP support"                   OFF  IF (MSVC OR X86 OR X86_64) )
113 OCV_OPTION(WITH_JASPER         "Include JPEG2K support"                      ON   IF (NOT IOS) )
114 OCV_OPTION(WITH_JPEG           "Include JPEG support"                        ON   IF (NOT IOS) )
115 OCV_OPTION(WITH_OPENEXR        "Include ILM support via OpenEXR"             ON   IF (NOT IOS) )
116 OCV_OPTION(WITH_OPENGL         "Include OpenGL support"                      OFF  IF (NOT ANDROID AND NOT IOS AND NOT APPLE) )
117 OCV_OPTION(WITH_OPENNI         "Include OpenNI support"                      OFF  IF (NOT ANDROID AND NOT IOS) )
118 OCV_OPTION(WITH_PNG            "Include PNG support"                         ON   IF (NOT IOS) )
119 OCV_OPTION(WITH_PVAPI          "Include Prosilica GigE support"              ON   IF (UNIX AND NOT ANDROID AND NOT IOS) )
120 OCV_OPTION(WITH_QT             "Build with Qt Backend support"               OFF  IF (NOT ANDROID AND NOT IOS) )
121 OCV_OPTION(WITH_QUICKTIME      "Use QuickTime for Video I/O insted of QTKit" OFF  IF APPLE )
122 OCV_OPTION(WITH_TBB            "Include Intel TBB support"                   OFF  IF (NOT IOS) )
123 OCV_OPTION(WITH_TIFF           "Include TIFF support"                        ON   IF (NOT IOS) )
124 OCV_OPTION(WITH_UNICAP         "Include Unicap support (GPL)"                OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
125 OCV_OPTION(WITH_V4L            "Include Video 4 Linux support"               ON   IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
126 OCV_OPTION(WITH_VIDEOINPUT     "Build HighGUI with DirectShow support"       ON   IF WIN32 )
127 OCV_OPTION(WITH_XIMEA          "Include XIMEA cameras support"               OFF  IF WIN32 )
128 OCV_OPTION(WITH_XINE           "Include Xine support (GPL)"                  OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
129 OCV_OPTION(WITH_CLP            "Include Clp support (EPL)"                   OFF  IF (NOT ANDROID AND NOT IOS) )
130
131 # OpenCV build components
132 # ===================================================
133 OCV_OPTION(BUILD_SHARED_LIBS        "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" NOT (ANDROID OR IOS) )
134 OCV_OPTION(BUILD_ANDROID_EXAMPLES   "Build examples for Android platform"         ON  IF ANDROID )
135 OCV_OPTION(BUILD_DOCS               "Create build rules for OpenCV Documentation" ON )
136 OCV_OPTION(BUILD_EXAMPLES           "Build all examples"                          OFF )
137 OCV_OPTION(BUILD_PACKAGE            "Enables 'make package_source' command"       ON )
138 OCV_OPTION(BUILD_PERF_TESTS         "Build performance tests"                     ON  IF (NOT IOS) )
139 OCV_OPTION(BUILD_TESTS              "Build accuracy & regression tests"           ON  IF (NOT IOS) )
140 OCV_OPTION(BUILD_WITH_DEBUG_INFO    "Include debug info into debug libs (not MSCV only)" ON )
141 OCV_OPTION(BUILD_WITH_STATIC_CRT    "Enables use of staticaly linked CRT for staticaly linked OpenCV" ON IF MSVC )
142 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 )
143
144 # 3rd party libs
145 OCV_OPTION(BUILD_ZLIB               "Build zlib from source"         WIN32 OR IOS OR APPLE )
146 OCV_OPTION(BUILD_TIFF               "Build libtiff from source"      WIN32 OR IOS OR ANDROID OR APPLE )
147 OCV_OPTION(BUILD_JASPER             "Build libjasper from source"    WIN32 OR IOS OR ANDROID OR APPLE )
148 OCV_OPTION(BUILD_JPEG               "Build libjpeg from source"      WIN32 OR IOS OR ANDROID OR APPLE )
149 OCV_OPTION(BUILD_PNG                "Build libpng from source"       WIN32 OR IOS OR ANDROID OR APPLE )
150
151 # OpenCV installation options
152 # ===================================================
153 OCV_OPTION(INSTALL_C_EXAMPLES       "Install C examples"        OFF )
154 OCV_OPTION(INSTALL_PYTHON_EXAMPLES  "Install Python examples"   OFF )
155 OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples"  OFF  IF ANDROID )
156 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) )
157
158
159 if(CMAKE_GENERATOR MATCHES Xcode)
160     set(ENABLE_SOLUTION_FOLDERS0 ON)
161 elseif(MSVC_IDE)
162     set(ENABLE_SOLUTION_FOLDERS0 ON)
163 else()
164     set(ENABLE_SOLUTION_FOLDERS0 OFF)
165 endif()    
166
167 # OpenCV build options
168 # ===================================================
169 OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers"                                  ON   IF (NOT IOS) )
170 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") )
171 OCV_OPTION(ENABLE_PROFILING           "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF  IF CMAKE_COMPILER_IS_GNUCXX )
172 OCV_OPTION(ENABLE_OMIT_FRAME_POINTER  "Enable -fomit-frame-pointer for GCC"                      ON   IF CMAKE_COMPILER_IS_GNUCXX )
173 OCV_OPTION(ENABLE_POWERPC             "Enable PowerPC for GCC"                                   ON   IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
174 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)) )
175 OCV_OPTION(ENABLE_SSE                 "Enable SSE instructions"                                  ON   IF (MSVC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
176 OCV_OPTION(ENABLE_SSE2                "Enable SSE2 instructions"                                 ON   IF (MSVC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
177 OCV_OPTION(ENABLE_SSE3                "Enable SSE3 instructions"                                 OFF  IF (CV_ICC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
178 OCV_OPTION(ENABLE_SSSE3               "Enable SSSE3 instructions"                                OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
179 OCV_OPTION(ENABLE_SSE41               "Enable SSE4.1 instructions"                               OFF  IF (CV_ICC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
180 OCV_OPTION(ENABLE_SSE42               "Enable SSE4.2 instructions"                               OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
181 OCV_OPTION(ENABLE_NOISY_WARNINGS      "Show all warnings even if they are too noisy"             OFF )
182 OCV_OPTION(OPENCV_WARNINGS_ARE_ERRORS "Treat warnings as errors"                                 OFF )
183
184 # uncategorized options
185 # ===================================================
186 OCV_OPTION(CMAKE_VERBOSE "Verbose mode" OFF )
187
188 # backward compatibility
189 # ===================================================
190 include(cmake/OpenCVLegacyOptions.cmake OPTIONAL)
191
192
193 # ----------------------------------------------------------------------------
194 #  Get actual OpenCV version number from sources
195 # ----------------------------------------------------------------------------
196 include(cmake/OpenCVVersion.cmake REQUIRED)
197
198
199 # ----------------------------------------------------------------------------
200 #  Build & install layouts
201 # ----------------------------------------------------------------------------
202
203 # Save libs and executables in the same place
204 set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib" CACHE PATH "Output directory for libraries" )
205 set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications" )
206
207 if(ANDROID OR WIN32)
208     set(OPENCV_DOC_INSTALL_PATH doc)
209 elseif(INSTALL_TO_MANGLED_PATHS)
210     set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc)
211 else()
212     set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
213 endif()
214
215 if(ANDROID)
216     set(OPENCV_LIB_INSTALL_PATH libs/${ANDROID_NDK_ABI_NAME})
217 else()
218     set(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX})
219 endif()
220
221 set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
222 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
223
224 set(OPENCV_INCLUDE_PREFIX include)
225 if(INSTALL_TO_MANGLED_PATHS)
226   set(OPENCV_INCLUDE_PREFIX include/opencv-${OPENCV_VERSION})
227 endif()
228
229 if(WIN32)
230   # Postfix of DLLs:
231   set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
232   set(OPENCV_DEBUG_POSTFIX d)
233 else()
234   # Postfix of so's:
235   set(OPENCV_DLLVERSION "")
236   set(OPENCV_DEBUG_POSTFIX "")
237 endif()
238
239 if(DEFINED CMAKE_DEBUG_POSTFIX)
240   set(OPENCV_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
241 endif()
242
243 if(CMAKE_VERBOSE)
244   set(CMAKE_VERBOSE_MAKEFILE 1)
245 endif()
246
247
248 # ----------------------------------------------------------------------------
249 #  Path for build/platform -specific headers
250 # ----------------------------------------------------------------------------
251 set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
252 add_definitions(-DHAVE_CVCONFIG_H)
253 ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
254
255
256 # ----------------------------------------------------------------------------
257 #  Autodetect if we are in a SVN repository
258 # ----------------------------------------------------------------------------
259 find_host_program(SVNVERSION_PATH svnversion)
260 mark_as_advanced(force SVNVERSION_PATH)
261 if(SVNVERSION_PATH)
262     message(STATUS "Extracting svn version, please wait...")
263     execute_process(COMMAND ${SVNVERSION_PATH} -n ${OpenCV_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT)
264
265     if(SVNVERSION_RESULT MATCHES "exported")
266         # This is NOT a svn repository:
267         set(OPENCV_SVNVERSION "")
268         message(STATUS "SVNVERSION: exported")
269     else()
270         set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}")
271         message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}")
272     endif()
273 else()
274     # We don't have svnversion:
275     set(OPENCV_SVNVERSION "")
276 endif()
277
278
279 # ----------------------------------------------------------------------------
280 # OpenCV compiler and linker options
281 # ----------------------------------------------------------------------------
282 include(cmake/OpenCVCompilerOptions.cmake REQUIRED)
283
284 # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
285 if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
286   set(CMAKE_BUILD_TYPE Release)
287 endif()
288
289
290 # ----------------------------------------------------------------------------
291 # Use statically or dynamically linked CRT?
292 # Default: dynamic
293 # ----------------------------------------------------------------------------
294 if(MSVC)
295   include(cmake/OpenCVCRTLinkage.cmake REQUIRED)
296 endif(MSVC)
297
298
299 # ----------------------------------------------------------------------------
300 #       CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
301 # ----------------------------------------------------------------------------
302 if(UNIX)
303   include(cmake/OpenCVFindPkgConfig.cmake OPTIONAL)
304   include(CheckFunctionExists)
305   include(CheckIncludeFile)
306 endif()
307
308 include(cmake/OpenCVPCHSupport.cmake REQUIRED)
309 include(cmake/OpenCVModule.cmake REQUIRED)
310
311 # ----------------------------------------------------------------------------
312 #  Detect 3rd-party tools and libraries
313 # ----------------------------------------------------------------------------
314
315 # IO libraries
316 include(cmake/OpenCVIOLibs.cmake REQUIRED)
317
318 #Graphic libraries
319 set(HAVE_OPENGL 0)
320 if(UNIX)
321     if(NOT APPLE)
322       if(WITH_GTK)
323         CHECK_MODULE(gtk+-2.0 HAVE_GTK)
324         CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)
325         if(WITH_OPENGL)
326             CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT)
327             if(HAVE_GTKGLEXT)
328                 find_package(OpenGL QUIET)
329                 if(OPENGL_FOUND)
330                     set(HAVE_OPENGL 1)
331                     set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
332                     ocv_include_directories(${OPENGL_INCLUDE_DIR})
333                 endif()
334             endif()
335         endif()
336       else()
337         set(HAVE_GTK FALSE)
338         set(HAVE_GTHREAD FALSE)
339       endif()
340       if(WITH_GSTREAMER)
341         CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)
342         CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER)
343         CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)
344       else()
345         set(HAVE_GSTREAMER FALSE)
346       endif()
347     endif()
348
349     if(WITH_UNICAP)
350       CHECK_MODULE(libunicap HAVE_UNICAP_)
351       CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
352       if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
353         set(HAVE_UNICAP 1)
354       endif()
355     else()
356       set(HAVE_UNICAP FALSE)
357     endif()
358
359     if(WITH_PVAPI)
360       find_path(PVAPI_INCLUDE_PATH "PvApi.h"
361                 PATHS "/usr/local/include" "/usr/include"
362                 DOC "The path to PvAPI header")
363       if(PVAPI_INCLUDE_PATH)
364         set(HAVE_PVAPI 1)
365       endif()
366     endif()
367
368     set(HAVE_FFMPEG 0)
369     if(WITH_FFMPEG)
370       CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
371       CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
372       CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
373       CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)
374       CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)
375       CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)
376       if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)
377         if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)
378           set(HAVE_GENTOO_FFMPEG 1)
379         endif()
380       endif()
381       if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL)
382         if(HAVE_FFMPEG_SWSCALE)
383             set(HAVE_FFMPEG 1)
384         endif()
385       endif()
386
387       # Find the bzip2 library because it is required on some systems
388       FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)
389       if(NOT BZIP2_LIBRARIES)
390         # Do an other trial
391         FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)
392       endif()
393     endif()
394
395     if(WITH_1394)
396       CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
397       if(NOT HAVE_DC1394_2)
398         CHECK_MODULE(libdc1394 HAVE_DC1394)
399       endif()
400     else()
401       set(HAVE_DC1394_2 FALSE)
402       set(HAVE_DC1394 FALSE)
403     endif()
404
405     if(NOT APPLE)
406         CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
407         CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)
408         CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
409         CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)
410
411         if(WITH_XINE)
412             CHECK_MODULE(libxine HAVE_XINE)
413         else()
414             set(HAVE_XINE FALSE)
415         endif()
416         if(WITH_V4L)
417             CHECK_MODULE(libv4l1 HAVE_LIBV4L)
418             CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
419             CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
420         else()
421             set(HAVE_LIBV4L FALSE)
422             set(HAVE_CAMV4L FALSE)
423             set(HAVE_CAMV4L2 FALSE)
424         endif()
425
426         if(ANDROID)
427             set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m log)
428         elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
429             set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m pthread)
430         else()
431             set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m pthread rt)
432         endif()
433     else()
434         add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H)
435     endif()
436 endif()
437
438 if(APPLE AND WITH_FFMPEG)
439   set(FFMPEG_DEFAULT_INCLUDE_DIRS "/usr/local/include/" "/usr/include/" "opt/include/")
440
441   find_path(FFMPEG_INCLUDE_DIR "libavformat/avformat.h" PATHS ${FFMPEG_DEFAULT_INCLUDE_DIRS} DOC "The path to FFMPEG headers")
442   if(FFMPEG_INCLUDE_DIR)
443     set(HAVE_GENTOO_FFMPEG 1)
444     set(FFMPEG_LIB_DIR "${FFMPEG_INCLUDE_DIR}/../lib" CACHE PATH "Full path of FFMPEG library directory")
445     if(EXISTS "${FFMPEG_LIB_DIR}/libavcodec.a")
446     set(HAVE_FFMPEG_CODEC 1)
447     set(ALIASOF_libavcodec_VERSION "Unknown")
448     if(EXISTS "${FFMPEG_LIB_DIR}/libavformat.a")
449     set(HAVE_FFMPEG_FORMAT 1)
450     set(ALIASOF_libavformat_VERSION "Unknown")
451     if(EXISTS "${FFMPEG_LIB_DIR}/libavutil.a")
452     set(HAVE_FFMPEG_UTIL 1)
453     set(ALIASOF_libavutil_VERSION "Unknown")
454     if(EXISTS "${FFMPEG_LIB_DIR}/libswscale.a")
455         ocv_include_directories(${FFMPEG_INCLUDE_DIR})
456         set(HAVE_FFMPEG_SWSCALE 1)
457         set(ALIASOF_libswscale_VERSION "Unknown")
458         set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a"
459             "${FFMPEG_LIB_DIR}/libavformat.a" "${FFMPEG_LIB_DIR}/libavutil.a"
460             "${FFMPEG_LIB_DIR}/libswscale.a")
461         set(HAVE_FFMPEG 1)
462     endif()
463     endif()
464     endif()
465     endif()
466   endif()
467 endif()
468
469 if(WIN32 AND WITH_FFMPEG)
470   include(3rdparty/ffmpeg/ffmpeg_version.cmake REQUIRED)
471 endif()
472
473 #################### LATEX for dpf documentation ##################
474 if(BUILD_DOCS)
475   include(cmake/OpenCVFindLATEX.cmake REQUIRED)
476 endif()
477
478 ########################## Python Support #########################
479 include(cmake/OpenCVDetectPython.cmake REQUIRED)
480
481 ########################### Java Support ##########################
482 if(ANDROID)
483   include(cmake/OpenCVDetectApacheAnt.cmake REQUIRED)
484   include(cmake/OpenCVDetectAndroidSDK.cmake REQUIRED)
485   
486   if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13)
487     message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.")
488   endif()
489 endif()
490
491 if(ANDROID AND ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND (ANT_VERSION VERSION_GREATER 1.7) AND (ANDROID_TOOLS_Pkg_Revision GREATER 13))
492   SET(CAN_BUILD_ANDROID_PROJECTS TRUE)
493 else()
494   SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
495 endif()
496
497 ############################### QT ################################
498 set(HAVE_QT 0)
499 set(HAVE_QT_OPENGL 0)
500
501 if(WITH_QT)
502   find_package(Qt4)
503   if(QT4_FOUND)
504     set(HAVE_QT 1)
505     add_definitions(-DHAVE_QT) #We need to define te macro this way, using cvconfig.h.cmake does not work
506
507     if(WITH_OPENGL)
508       find_package (OpenGL QUIET)
509       if(QT_QTOPENGL_FOUND AND OPENGL_FOUND)
510         set(HAVE_OPENGL 1)
511         set(HAVE_QT_OPENGL 1)
512         add_definitions(-DHAVE_QT_OPENGL)
513         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
514       endif()
515     endif()
516   endif()
517 endif()
518
519 ############################### TBB ################################
520 if(WITH_TBB)
521   include(cmake/OpenCVDetectTBB.cmake REQUIRED)
522 endif()
523
524 ############################ Intel IPP #############################
525 set(IPP_FOUND)
526
527 if(WITH_IPP)
528   include(cmake/OpenCVFindIPP.cmake)
529 endif()
530
531 if(IPP_FOUND)
532   add_definitions(-DHAVE_IPP)
533   ocv_include_directories(${IPP_INCLUDE_DIRS})
534   link_directories(${IPP_LIBRARY_DIRS})
535   set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_LIBRARIES})
536 endif()
537
538 ############################### CUDA ################################
539 if(WITH_CUDA)
540   include(cmake/OpenCVDetectCUDA.cmake REQUIRED)
541 endif()
542
543 ############################### OpenNI ################################
544 set(HAVE_OPENNI FALSE)
545 set(HAVE_OPENNI_PRIME_SENSOR_MODULE FALSE)
546
547 if(WITH_OPENNI)
548   include(cmake/OpenCVFindOpenNI.cmake)
549 endif()
550
551 ############################### XIMEA ################################
552 set(HAVE_XIMEA FALSE)
553
554 if(WITH_XIMEA)
555   include(cmake/OpenCVFindXimea.cmake)
556 endif()
557
558 if(XIMEA_FOUND)
559   set(HAVE_XIMEA TRUE)
560 endif()
561
562 ############################## Eigen ##############################
563 if(WITH_EIGEN)
564   find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
565             PATHS "/usr/local/include/eigen2" "/opt/include/eigen2" "/usr/include/eigen2"
566                   "/usr/local/include/eigen3" "/opt/include/eigen3" "/usr/include/eigen3"
567             DOC "The path to Eigen2/Eigen3 headers")
568   if(EIGEN_INCLUDE_PATH)
569     ocv_include_directories(${EIGEN_INCLUDE_PATH})
570     ocv_parse_header("${EIGEN_INCLUDE_PATH}/Eigen/src/Core/util/Macros.h" EIGEN_VERSION_LINES EIGEN_WORLD_VERSION EIGEN_MAJOR_VERSION EIGEN_MINOR_VERSION)
571     set(HAVE_EIGEN 1)
572   endif()
573 endif()
574
575 ########################## Clp #####################################
576 set(HAVE_CLP FALSE)
577
578 if(WITH_CLP)
579
580   if(UNIX)
581     PKG_CHECK_MODULES(CLP clp)
582     if(CLP_FOUND)
583       set(HAVE_CLP TRUE)
584       if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
585         ocv_include_directories(${CLP_INCLUDE_DIRS})
586       endif()
587       link_directories(${CLP_LIBRARY_DIRS})
588       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CLP_LIBRARIES})
589     endif()
590   endif()
591   
592   if(NOT CLP_FOUND)
593     find_path(CLP_INCLUDE_PATH "coin"
594               PATHS "/usr/local/include" "/usr/include" "/opt/include"
595               DOC "The path to Clp headers")
596     if(CLP_INCLUDE_PATH)
597       ocv_include_directories(${CLP_INCLUDE_PATH} "${CLP_INCLUDE_PATH}/coin")
598       set(CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" CACHE PATH "Full path of Clp library directory")
599       link_directories(${CLP_LIBRARY_DIR})
600       if(UNIX)
601         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils bz2 z lapack blas m)
602       else()
603         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libClp libCoinUtils)
604       endif()
605       set(HAVE_CLP TRUE)
606     endif()  
607   endif()
608   
609 endif()
610
611 ################## Extra HighGUI libs on Windows ###################
612 if(WIN32)
613   set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32)
614
615   if(WITH_VIDEOINPUT)
616     set(HAVE_VIDEOINPUT 1)
617   endif()
618
619   if(MSVC)
620     set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32)
621   endif()
622
623   if(MINGW)
624     if(MINGW64)
625       set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} msvfw32 avifil32 avicap32 winmm)
626     else()
627       set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32 winmm)
628     endif()
629   endif()
630
631   if(WITH_OPENGL AND NOT HAVE_QT_OPENGL)
632     find_package(OpenGL QUIET)
633
634     if(OPENGL_FOUND)
635       set(HAVE_OPENGL 1)
636       set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
637       ocv_include_directories(${OPENGL_INCLUDE_DIR})
638     endif()
639   endif()
640 endif()
641
642
643 # ----------------------------------------------------------------------------
644 # Solution folders:
645 # ----------------------------------------------------------------------------
646 if(ENABLE_SOLUTION_FOLDERS)
647   set_property(GLOBAL PROPERTY USE_FOLDERS ON)
648   set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
649 endif()
650
651 # Extra OpenCV targets: uninstall, package_source, perf, etc.
652 include(cmake/OpenCVExtraTargets.cmake REQUIRED)
653
654
655 # ----------------------------------------------------------------------------
656 # Process subdirectories
657 # ----------------------------------------------------------------------------
658
659 # opencv.hpp and legacy headers
660 add_subdirectory(include)
661
662 # OpenCV modules
663 add_subdirectory(modules)
664
665 # Generate targets for documentation
666 add_subdirectory(doc)
667
668 # various data that is used by cv libraries and/or demo applications.
669 add_subdirectory(data)
670
671 # extra applications
672 add_subdirectory(apps)
673
674 # examples
675 if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
676   add_subdirectory(samples)
677 endif()
678
679
680 # ----------------------------------------------------------------------------
681 # Finalization: generate configuration-based files
682 # ----------------------------------------------------------------------------
683 ocv_track_build_dependencies()
684
685 # Generate platform-dependent and configuration-dependent headers
686 include(cmake/OpenCVGenHeaders.cmake REQUIRED)
687
688 # Generate opencv.pc for pkg-config command
689 include(cmake/OpenCVGenPkgconfig.cmake REQUIRED)
690
691 # Generate OpenCV.mk for ndk-build (Android build tool)
692 include(cmake/OpenCVGenAndroidMK.cmake REQUIRED)
693
694 # Generate OpenCVСonfig.cmake and OpenCVConfig-version.cmake for cmake projects
695 include(cmake/OpenCVGenConfig.cmake REQUIRED)
696
697
698 # ----------------------------------------------------------------------------
699 # Summary:
700 # ----------------------------------------------------------------------------
701 status("")
702 status("General configuration for OpenCV ${OPENCV_VERSION} =====================================")
703 if(OPENCV_SVNVERSION)
704   status("Version control:" ${OPENCV_SVNVERSION})
705 endif()
706
707 #build platform
708 status("")
709 status("  Platform:")
710 status("    Host:"             ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR})
711 if(CMAKE_CROSSCOMPILING)
712   status("    Target:"           ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
713 endif()
714 status("    CMake:"            ${CMAKE_VERSION})
715 status("    CMake generator:"  ${CMAKE_GENERATOR})
716 status("    CMake build tool:" ${CMAKE_BUILD_TOOL})
717 if(MSVC)
718   status("    MSVC:"           ${MSVC_VERSION})
719 endif()
720 if(CMAKE_GENERATOR MATCHES Xcode)
721   status("    Xcode:"          ${XCODE_VERSION})
722 endif()
723 if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
724   status("    Configuration:"  ${CMAKE_BUILD_TYPE})
725 endif()
726
727 # C/C++ options
728 status("")
729 status("  C/C++:")
730 status("    Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO)
731 status("    C++ Compiler:"           CMAKE_COMPILER_IS_GNUCXX THEN "${CMAKE_CXX_COMPILER} (ver ${CMAKE_GCC_REGEX_VERSION})" ELSE "${CMAKE_CXX_COMPILER}" )
732 status("    C++ flags (Release):"    ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
733 status("    C++ flags (Debug):"      ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
734 status("    C Compiler:"             ${CMAKE_C_COMPILER})
735 status("    C flags (Release):"      ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE})
736 status("    C flags (Debug):"        ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG})
737 if(WIN32)
738   status("    Linker flags (Release):" ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE})
739   status("    Linker flags (Debug):"   ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
740 else()
741   status("    Linker flags (Release):" ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
742   status("    Linker flags (Debug):"   ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
743 endif()
744
745 # OpenCV modules
746 status("")
747 status("  OpenCV modules:")
748 string(REPLACE "opencv_" "" OPENCV_MODULES_BUILD_ST          "${OPENCV_MODULES_BUILD}")
749 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_USER_ST  "${OPENCV_MODULES_DISABLED_USER}")
750 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_FORCE_ST "${OPENCV_MODULES_DISABLED_FORCE}")
751 set(OPENCV_MODULES_DISABLED_AUTO_ST "")
752 foreach(m ${OPENCV_MODULES_DISABLED_AUTO})
753   set(__mdeps "")
754   foreach(d ${OPENCV_MODULE_${m}_DEPS})
755     if(d MATCHES "^opencv_" AND NOT HAVE_${d})
756       list(APPEND __mdeps ${d})
757     endif()
758   endforeach()
759   list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
760 endforeach()
761 string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST  "${OPENCV_MODULES_DISABLED_AUTO_ST}")
762
763 status("    To be built:"            OPENCV_MODULES_BUILD          THEN ${OPENCV_MODULES_BUILD_ST}          ELSE "-")
764 status("    Disabled by user:"       OPENCV_MODULES_DISABLED_USER  THEN ${OPENCV_MODULES_DISABLED_USER_ST}  ELSE "-")
765 status("    Disabled by dependency:" OPENCV_MODULES_DISABLED_AUTO  THEN ${OPENCV_MODULES_DISABLED_AUTO_ST}  ELSE "-")
766 status("    Unavailable:"            OPENCV_MODULES_DISABLED_FORCE THEN ${OPENCV_MODULES_DISABLED_FORCE_ST} ELSE "-")
767
768 # Android extra
769 if(ANDROID)
770   status("")
771   status("  Android: ")
772   status("    Android ABI:" ${ANDROID_ABI})
773   status("    Native API level:" android-${ANDROID_NATIVE_API_LEVEL})
774   status("    SDK target:" "${ANDROID_SDK_TARGET}")
775   if(BUILD_WITH_ANDROID_NDK)
776     status("    Android NDK:" "${ANDROID_NDK} (toolchain: ${ANDROID_TOOLCHAIN_NAME})")
777   elseif(BUILD_WITH_STANDALONE_TOOLCHAIN)
778     status("    Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
779   endif()
780   status("    android tool:"  ANDROID_EXECUTABLE  THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
781   status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"            ELSE NO)
782 endif()
783
784 #YV
785 status("")
786 status("  GUI: ")
787
788 if (HAVE_QT)
789   status("    QT 4.x:"            HAVE_QT        THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
790   status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
791 else()
792   if(WIN32)
793     status("    Win32 UI:" YES)
794   else()
795     if(APPLE)
796       if(WITH_CARBON)
797         status("    Carbon:" YES)
798       else()
799         status("    Cocoa:"  YES)
800       endif()
801     else()
802       status("    GTK+ 2.x:" HAVE_GTK      THEN "YES (ver ${ALIASOF_gtk+-2.0_VERSION})"     ELSE NO)
803       status("    GThread :" HAVE_GTHREAD  THEN "YES (ver ${ALIASOF_gthread-2.0_VERSION})"  ELSE NO)
804       status("    GtkGlExt:" HAVE_GTKGLEXT THEN "YES (ver ${ALIASOF_gtkglext-1.0_VERSION})" ELSE NO)
805     endif()
806   endif()
807 endif()
808
809 status("    OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO)
810
811 # media
812 status("")
813 status("  Media I/O: ")
814 status("    ZLib:"         BUILD_ZLIB    THEN "build (ver ${ZLIB_VERSION_STRING})"               ELSE "${ZLIB_LIBRARY} (ver ${ZLIB_VERSION_STRING})")
815
816 if(WITH_JPEG)
817   status("    JPEG:"       JPEG_FOUND    THEN "${JPEG_LIBRARY} (ver ${JPEG_LIB_VERSION})"        ELSE "build (ver ${JPEG_LIB_VERSION})")
818 else()
819   status("    JPEG:"       "NO")
820 endif()
821 if(WITH_PNG)
822   status("    PNG:"        PNG_FOUND     THEN "${PNG_LIBRARY} (ver ${PNG_VERSION})"              ELSE "build (ver ${PNG_VERSION})")
823 else()
824   status("    PNG:"        "NO")
825 endif()
826 if(WITH_TIFF)
827   if(TIFF_VERSION_STRING AND TIFF_FOUND)
828     status("    TIFF:"     "${TIFF_LIBRARY} (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
829   else()
830     status("    TIFF:"     TIFF_FOUND    THEN "${TIFF_LIBRARY} (ver ${TIFF_VERSION})"            ELSE "build (ver ${TIFF_VERSION})")
831   endif()
832 else()
833   status("    TIFF:"       "NO")
834 endif()
835 if(WITH_JASPER)
836   status("    JPEG 2000:"  JASPER_FOUND  THEN "${JASPER_LIBRARY} (ver ${JASPER_VERSION_STRING})" ELSE "build (ver ${JASPER_VERSION_STRING})")
837 else()
838   status("    JPEG 2000:"  "NO")
839 endif()
840
841 status("    OpenEXR:"   WITH_OPENEXR AND OPENEXR_FOUND     THEN "${OPENEXR_LIBRARIES} (ver ${OPENEXR_VERSION})"                     ELSE NO)
842 status("    OpenNI:"    HAVE_OPENNI                        THEN "YES (ver ${OPENNI_VERSION_STRING}, build ${OPENNI_VERSION_BUILD})" ELSE NO)
843 status("    OpenNI PrimeSensor Modules:"
844                         HAVE_OPENNI_PRIME_SENSOR_MODULE    THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})"                               ELSE NO)
845 if(WIN32)
846   status("    XIMEA:"     HAVE_XIMEA  THEN YES ELSE NO)
847 endif()
848
849 # video
850 status("")
851 if(UNIX AND NOT APPLE)
852   status("  Video I/O:")
853   status("    DC1394 1.x:"     HAVE_DC1394         THEN "YES (ver ${ALIASOF_libdc1394_VERSION})"   ELSE NO)
854   status("    DC1394 2.x:"     HAVE_DC1394_2       THEN "YES (ver ${ALIASOF_libdc1394-2_VERSION})" ELSE NO)
855   status("    GStreamer:"      HAVE_GSTREAMER      THEN "" ELSE NO)
856   if(HAVE_GSTREAMER)
857     status("      base:"       "YES (ver ${ALIASOF_gstreamer-base-0.10_VERSION})")
858     status("      app:"        "YES (ver ${ALIASOF_gstreamer-app-0.10_VERSION})")
859     status("      video:"      "YES (ver ${ALIASOF_gstreamer-video-0.10_VERSION})")
860   endif()
861   status("    UniCap:"         HAVE_UNICAP         THEN "YES (ver ${ALIASOF_libunicap_VERSION})"        ELSE NO)
862   status("    UniCap ucil:"    HAVE_UNICAP_UCIL    THEN "YES (ver ${ALIASOF_libucil_VERSION})"          ELSE NO)
863   status("    PvAPI:"          HAVE_PVAPI          THEN YES ELSE NO)
864   if(HAVE_CAMV4L)
865     set(HAVE_CAMV4L_STR "YES")
866   else()
867     set(HAVE_CAMV4L_STR "NO")
868   endif()
869  if(HAVE_CAMV4L2)
870     set(HAVE_CAMV4L2_STR "YES")
871   else()
872     set(HAVE_CAMV4L2_STR "NO")
873   endif()
874   status("    V4L/V4L2:"       HAVE_LIBV4L         THEN "Using libv4l (ver ${ALIASOF_libv4l1_VERSION})" ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
875   status("    Xine:"           HAVE_XINE           THEN "YES (ver ${ALIASOF_libxine_VERSION})"          ELSE NO)
876
877   if(ANDROID)
878     if(HAVE_opencv_androidcamera)
879       status("    AndroidNativeCamera:" BUILD_ANDROID_CAMERA_WRAPPER THEN "YES, build for Android ${ANDROID_VERSION}" ELSE "YES, use prebuilt libraries")
880     else()
881       status("    AndroidNativeCamera:" "NO (native camera requires Android API level 8 or higher)")
882     endif()
883   endif()
884 elseif(APPLE)
885   if(NOT IOS)
886     status("  Video I/O:"    WITH_QUICKTIME      THEN QuickTime ELSE QTKit)
887   else()
888     status("  Video I/O: AVFoundation")
889   endif()
890 elseif(WIN32)
891   status("  Video I/O:"      HAVE_VIDEOINPUT     THEN DirectShow ELSE NO)
892 endif()
893
894 if(WIN32)
895   status("    FFMPEG:"         WITH_FFMPEG         THEN "YES (prebuilt binaries)" ELSE NO)
896 else()
897   status("    FFMPEG:"         HAVE_FFMPEG         THEN YES ELSE NO)
898 endif()
899 status("      codec:"        HAVE_FFMPEG_CODEC   THEN "YES (ver ${ALIASOF_libavcodec_VERSION})"  ELSE NO)
900 status("      format:"       HAVE_FFMPEG_FORMAT  THEN "YES (ver ${ALIASOF_libavformat_VERSION})" ELSE NO)
901 status("      util:"         HAVE_FFMPEG_UTIL    THEN "YES (ver ${ALIASOF_libavutil_VERSION})"   ELSE NO)
902 status("      swscale:"      HAVE_FFMPEG_SWSCALE THEN "YES (ver ${ALIASOF_libswscale_VERSION})"  ELSE NO)
903 status("      gentoo-style:" HAVE_GENTOO_FFMPEG  THEN YES ELSE NO)
904
905 # Other third-party libraries
906 status("")
907 status("  Other third-party libraries:")
908
909 if(WITH_IPP AND IPP_FOUND)
910   status("    Use IPP:" "${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]")
911   status("         at:" "${IPP_ROOT_DIR}")
912 else()
913   status("    Use IPP:"   WITH_IPP AND NOT IPP_FOUND THEN "IPP not found" ELSE NO)
914 endif()
915
916 status("    Use TBB:"   HAVE_TBB   THEN "YES (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})" ELSE NO)
917 status("    Use Cuda:"  HAVE_CUDA  THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
918 status("    Use Eigen:" HAVE_EIGEN THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
919 status("    Use Clp:"   HAVE_CLP   THEN YES ELSE NO)
920
921 if(HAVE_CUDA)
922   status("")
923   status("  NVIDIA CUDA:"            "(ver ${CUDA_VERSION_STRING})")
924
925   status("    Use CUFFT:"            HAVE_CUFFT  THEN YES ELSE NO)
926   status("    Use CUBLAS:"           HAVE_CUBLAS THEN YES ELSE NO)
927   status("    NVIDIA GPU arch:"      ${OPENCV_CUDA_ARCH_BIN})
928   status("    NVIDIA PTX archs:"     ${OPENCV_CUDA_ARCH_BIN})
929   status("    NVIDIA GPU features:"  ${OPENCV_CUDA_ARCH_FEATURES})
930 endif()
931
932 # interfaces to other languages
933 status("")
934 status("  Python:")
935 status("    Interpreter:"   PYTHON_EXECUTABLE     THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_FULL})"         ELSE NO)
936 if(BUILD_opencv_python)
937   if(PYTHONLIBS_VERSION_STRING)
938     status("    Libraries:"     HAVE_opencv_python  THEN  "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})" ELSE NO)
939   else()
940     status("    Libraries:"     HAVE_opencv_python  THEN  ${PYTHON_LIBRARIES}                                      ELSE NO)
941   endif()
942   status("    numpy:"         PYTHON_USE_NUMPY    THEN "${PYTHON_NUMPY_INCLUDE_DIR} (ver ${PYTHON_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)")
943   status("    packages path:" PYTHON_EXECUTABLE   THEN "${PYTHON_PACKAGES_PATH}"                                   ELSE "-")
944 endif()
945
946 if(BUILD_opencv_java)
947   status("")
948   status("  Java:" HAVE_opencv_java THEN YES ELSE NO)
949 endif()
950
951 # documentation
952 if(BUILD_DOCS)
953   status("")
954   status("  Documentation:")
955   if(HAVE_SPHINX)
956     status("    Build Documentation:" PDFLATEX_COMPILER      THEN YES ELSE "YES (only HTML and without math expressions)")
957   else()
958     status("    Build Documentation:" NO)
959   endif()
960   status("    Sphinx:"              HAVE_SPHINX              THEN "${SPHINX_BUILD} (ver ${SPHINX_VERSION})" ELSE NO)
961   status("    PdfLaTeX compiler:"   PDFLATEX_COMPILER        THEN "${PDFLATEX_COMPILER}" ELSE NO)
962 endif()
963
964 # samples and tests
965 status("")
966 status("  Tests and samples:")
967 status("    Tests:"             BUILD_TESTS AND HAVE_opencv_ts       THEN YES ELSE NO)
968 status("    Performance tests:" BUILD_PERF_TESTS AND HAVE_opencv_ts  THEN YES ELSE NO)
969 status("    Examples:"          BUILD_EXAMPLES                       THEN YES ELSE NO)
970
971 if(ANDROID)
972   status("    Android tests:"    BUILD_TESTS AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
973   status("    Android examples:" BUILD_ANDROID_EXAMPLES                     THEN YES ELSE NO)
974 endif()
975
976 #auxiliary
977 status("")
978 status("  Install path:" "${CMAKE_INSTALL_PREFIX}")
979 status("")
980 status("  cvconfig.h is in:" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
981 status("-----------------------------------------------------------------")
982 status("")
983
984 ocv_finalize_status()
985
986 # ----------------------------------------------------------------------------
987 # Warn in the case of in-source build
988 # ----------------------------------------------------------------------------
989 if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
990   message(WARNING "The source directory is the same as binary directory. \"make clean\" may damage the source tree")
991 endif()
992