CMakeLists.txt 40.1 KB
Newer Older
A
Alexander Shishkov 已提交
1 2 3 4 5 6 7 8 9 10 11 12
# ----------------------------------------------------------------------------
#  Root CMake file for OpenCV
#
#    From the off-tree build directory, invoke:
#      $ cmake <PATH_TO_OPENCV_ROOT>
#
#
#   - OCT-2008: Initial version <joseluisblancoc@gmail.com>
#
# ----------------------------------------------------------------------------

set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
A
Andrey Kamaev 已提交
13

14 15 16 17 18 19
# --------------------------------------------------------------
# Indicate CMake 2.7 and above that we don't want to mix relative
#  and absolute paths in linker lib lists.
# Run "cmake --help-policy CMP0003" for more information.
# --------------------------------------------------------------
if(COMMAND cmake_policy)
A
Andrey Kamaev 已提交
20
  cmake_policy(SET CMP0003 NEW)
21 22
endif()

23 24 25 26
# Following block can broke build in case of cross-compilng
# but CMAKE_CROSSCOMPILING variable will be set only on project(OpenCV) command
# so we will try to detect crosscompiling by presense of CMAKE_TOOLCHAIN_FILE
if(NOT CMAKE_TOOLCHAIN_FILE)
A
Andrey Kamaev 已提交
27 28 29 30 31 32
  # it _must_ go before project(OpenCV) in order to work
  if(WIN32)
    set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
  else()
    set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
  endif()
33

A
Andrey Kamaev 已提交
34 35 36
  if(MSVC)
    set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)
  endif()
37 38 39
else(NOT CMAKE_TOOLCHAIN_FILE)
  #Android: set output folder to ${CMAKE_BINARY_DIR}
  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 41 42 43 44
endif(NOT CMAKE_TOOLCHAIN_FILE)

# --------------------------------------------------------------
# Top level OpenCV project
# --------------------------------------------------------------
V
Vadim Pisarevsky 已提交
45 46 47 48
if(CMAKE_GENERATOR MATCHES Xcode AND XCODE_VERSION VERSION_GREATER 4.3)
  cmake_minimum_required(VERSION 2.8.8)
elseif(IOS)
  cmake_minimum_required(VERSION 2.8.0)
49
else()
V
Vadim Pisarevsky 已提交
50
  cmake_minimum_required(VERSION 2.6.3)
51
endif()
A
Andrey Kamaev 已提交
52

A
Alexander Shishkov 已提交
53
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
54
if(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
A
Andrey Kamaev 已提交
55
  set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
A
Andrey Kamaev 已提交
56
endif()
57

V
Vadim Pisarevsky 已提交
58
project(OpenCV CXX C)
A
Andrey Kamaev 已提交
59

60 61 62
include(cmake/OpenCVUtils.cmake REQUIRED)

# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
63
# Detect compiler and target platform architecture
A
Andrey Kamaev 已提交
64
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
65
include(cmake/OpenCVDetectCXXCompiler.cmake REQUIRED)
66

67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
# Add these standard paths to the search paths for FIND_LIBRARY
# to find libraries from these locations first
if(UNIX AND NOT ANDROID)
  if(X86_64 OR CMAKE_SIZEOF_VOID_P EQUAL 8)
    if(EXISTS /lib64)
      list(APPEND CMAKE_LIBRARY_PATH /lib64)
    else()
      list(APPEND CMAKE_LIBRARY_PATH /lib)
    endif()
    if(EXISTS /usr/lib64)
      list(APPEND CMAKE_LIBRARY_PATH /usr/lib64)
    else()
      list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
    endif()
  elseif(X86 OR CMAKE_SIZEOF_VOID_P EQUAL 4)
    if(EXISTS /lib32)
      list(APPEND CMAKE_LIBRARY_PATH /lib32)
    else()
      list(APPEND CMAKE_LIBRARY_PATH /lib)
    endif()
    if(EXISTS /usr/lib32)
      list(APPEND CMAKE_LIBRARY_PATH /usr/lib32)
    else()
      list(APPEND CMAKE_LIBRARY_PATH /usr/lib)
    endif()
  endif()
endif()

95

96
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
97
# OpenCV cmake options
98
# ----------------------------------------------------------------------------
99 100 101 102 103 104 105 106 107 108

# Optional 3rd party components
# ===================================================
OCV_OPTION(WITH_1394           "Include IEEE1394 support"                    ON   IF (UNIX AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_AVFOUNDATION   "Use AVFoundation for Video I/O"              ON   IF IOS)
OCV_OPTION(WITH_CARBON         "Use Carbon for UI instead of Cocoa"          OFF  IF APPLE )
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) )
OCV_OPTION(WITH_CUDA           "Include NVidia Cuda Runtime support"         ON   IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) )
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) )
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 111 112 113 114 115
OCV_OPTION(WITH_GSTREAMER      "Include Gstreamer support"                   ON   IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_GTK            "Include GTK support"                         ON   IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_IPP            "Include Intel IPP support"                   OFF  IF (MSVC OR X86 OR X86_64) )
OCV_OPTION(WITH_JASPER         "Include JPEG2K support"                      ON   IF (NOT IOS) )
OCV_OPTION(WITH_JPEG           "Include JPEG support"                        ON   IF (NOT IOS) )
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 118 119 120 121 122 123 124 125 126 127 128
OCV_OPTION(WITH_OPENNI         "Include OpenNI support"                      OFF  IF (NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_PNG            "Include PNG support"                         ON   IF (NOT IOS) )
OCV_OPTION(WITH_PVAPI          "Include Prosilica GigE support"              ON   IF (UNIX AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_QT             "Build with Qt Backend support"               OFF  IF (NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_QUICKTIME      "Use QuickTime for Video I/O insted of QTKit" OFF  IF APPLE )
OCV_OPTION(WITH_TBB            "Include Intel TBB support"                   OFF  IF (NOT IOS) )
OCV_OPTION(WITH_TIFF           "Include TIFF support"                        ON   IF (NOT IOS) )
OCV_OPTION(WITH_UNICAP         "Include Unicap support (GPL)"                OFF  IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_V4L            "Include Video 4 Linux support"               ON   IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT IOS) )
OCV_OPTION(WITH_VIDEOINPUT     "Build HighGUI with DirectShow support"       ON   IF WIN32 )
OCV_OPTION(WITH_XIMEA          "Include XIMEA cameras support"               OFF  IF WIN32 )
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 132

# OpenCV build components
# ===================================================
133
OCV_OPTION(BUILD_SHARED_LIBS        "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" NOT (ANDROID OR IOS) )
134 135 136 137 138 139
OCV_OPTION(BUILD_ANDROID_EXAMPLES   "Build examples for Android platform"         ON  IF ANDROID )
OCV_OPTION(BUILD_DOCS               "Create build rules for OpenCV Documentation" ON )
OCV_OPTION(BUILD_EXAMPLES           "Build all examples"                          OFF )
OCV_OPTION(BUILD_PACKAGE            "Enables 'make package_source' command"       ON )
OCV_OPTION(BUILD_PERF_TESTS         "Build performance tests"                     ON  IF (NOT IOS) )
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
V
Vadim Pisarevsky 已提交
145 146 147 148 149
OCV_OPTION(BUILD_ZLIB               "Build zlib from source"         WIN32 OR IOS OR APPLE )
OCV_OPTION(BUILD_TIFF               "Build libtiff from source"      WIN32 OR IOS OR ANDROID OR APPLE )
OCV_OPTION(BUILD_JASPER             "Build libjasper from source"    WIN32 OR IOS OR ANDROID OR APPLE )
OCV_OPTION(BUILD_JPEG               "Build libjpeg from source"      WIN32 OR IOS OR ANDROID OR APPLE )
OCV_OPTION(BUILD_PNG                "Build libpng from source"       WIN32 OR IOS OR ANDROID OR APPLE )
150 151 152 153 154 155

# OpenCV installation options
# ===================================================
OCV_OPTION(INSTALL_C_EXAMPLES       "Install C examples"        OFF )
OCV_OPTION(INSTALL_PYTHON_EXAMPLES  "Install Python examples"   OFF )
OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples"  OFF  IF ANDROID )
A
Andrey Kamaev 已提交
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 160

# OpenCV build options
# ===================================================
OCV_OPTION(ENABLE_PRECOMPILED_HEADERS "Use precompiled headers"                                  ON   IF (NOT IOS) )
161
OCV_OPTION(ENABLE_SOLUTION_FOLDERS    "Solution folder in Visual Studio or in other IDEs"        MSVC_IDE IF (CMAKE_VERSION VERSION_GREATER "2.8.0") )
162 163 164 165 166 167 168 169 170 171
OCV_OPTION(ENABLE_PROFILING           "Enable profiling in the GCC compiler (Add flags: -g -pg)" OFF  IF CMAKE_COMPILER_IS_GNUCXX )
OCV_OPTION(ENABLE_OMIT_FRAME_POINTER  "Enable -fomit-frame-pointer for GCC"                      ON   IF CMAKE_COMPILER_IS_GNUCXX )
OCV_OPTION(ENABLE_POWERPC             "Enable PowerPC for GCC"                                   ON   IF (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_SYSTEM_PROCESSOR MATCHES powerpc.*) )
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)) )
OCV_OPTION(ENABLE_SSE                 "Enable SSE instructions"                                  ON   IF (MSVC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_SSE2                "Enable SSE2 instructions"                                 ON   IF (MSVC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_SSE3                "Enable SSE3 instructions"                                 OFF  IF (CV_ICC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_SSSE3               "Enable SSSE3 instructions"                                OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_SSE41               "Enable SSE4.1 instructions"                               OFF  IF (CV_ICC OR CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
OCV_OPTION(ENABLE_SSE42               "Enable SSE4.2 instructions"                               OFF  IF (CMAKE_COMPILER_IS_GNUCXX AND (X86 OR X86_64)) )
172
OCV_OPTION(ENABLE_NOISY_WARNINGS      "Show all warnings even if they are too noisy"             OFF )
173
OCV_OPTION(OPENCV_WARNINGS_ARE_ERRORS "Treat warnings as errors"                                 OFF )
174

175 176 177 178 179 180
# uncategorized options
# ===================================================
OCV_OPTION(CMAKE_VERBOSE "Verbose mode" OFF )

# backward compatibility
# ===================================================
181
include(cmake/OpenCVLegacyOptions.cmake OPTIONAL)
A
Andrey Kamaev 已提交
182

183

A
Alexander Shishkov 已提交
184
# ----------------------------------------------------------------------------
185
#  Get actual OpenCV version number from sources
A
Alexander Shishkov 已提交
186
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
187
include(cmake/OpenCVVersion.cmake REQUIRED)
A
Alexander Shishkov 已提交
188 189


A
Andrey Kamaev 已提交
190 191 192
# ----------------------------------------------------------------------------
#  Build & install layouts
# ----------------------------------------------------------------------------
193

A
Andrey Kamaev 已提交
194
# Save libs and executables in the same place
A
Andrey Kamaev 已提交
195 196
set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib" CACHE PATH "Output directory for libraries" )
set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications" )
A
Andrey Kamaev 已提交
197

198
if(ANDROID OR WIN32)
A
Andrey Kamaev 已提交
199
    set(OPENCV_DOC_INSTALL_PATH doc)
A
Andrey Kamaev 已提交
200
elseif(INSTALL_TO_MANGLED_PATHS)
201
    set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc)
A
Andrey Kamaev 已提交
202
else()
203
    set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
A
Andrey Kamaev 已提交
204 205 206
endif()

if(ANDROID)
207
    set(OPENCV_LIB_INSTALL_PATH libs/${ANDROID_NDK_ABI_NAME})
A
Andrey Kamaev 已提交
208
else()
209
    set(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX})
A
Andrey Kamaev 已提交
210 211 212 213 214
endif()

set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
set(OPENCV_INCLUDE_PREFIX include)
if(INSTALL_TO_MANGLED_PATHS)
  set(OPENCV_INCLUDE_PREFIX include/opencv-${OPENCV_VERSION})
endif()

if(WIN32)
  # Postfix of DLLs:
  set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
  set(OPENCV_DEBUG_POSTFIX d)
else()
  # Postfix of so's:
  set(OPENCV_DLLVERSION "")
  set(OPENCV_DEBUG_POSTFIX "")
endif()

A
Andrey Kamaev 已提交
230
if(DEFINED CMAKE_DEBUG_POSTFIX)
231 232 233
  set(OPENCV_DEBUG_POSTFIX "${CMAKE_DEBUG_POSTFIX}")
endif()

234 235 236 237
if(CMAKE_VERBOSE)
  set(CMAKE_VERBOSE_MAKEFILE 1)
endif()

A
Andrey Kamaev 已提交
238 239 240 241 242 243

# ----------------------------------------------------------------------------
#  Path for build/platform -specific headers
# ----------------------------------------------------------------------------
set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
add_definitions(-DHAVE_CVCONFIG_H)
244
ocv_include_directories(${OPENCV_CONFIG_FILE_INCLUDE_DIR})
A
Andrey Kamaev 已提交
245 246


A
Alexander Shishkov 已提交
247 248 249
# ----------------------------------------------------------------------------
#  Autodetect if we are in a SVN repository
# ----------------------------------------------------------------------------
250
find_host_program(SVNVERSION_PATH svnversion)
A
Alexander Shishkov 已提交
251 252 253
mark_as_advanced(force SVNVERSION_PATH)
if(SVNVERSION_PATH)
    message(STATUS "Extracting svn version, please wait...")
A
Alexander Shishkov 已提交
254
    execute_process(COMMAND ${SVNVERSION_PATH} -n ${OpenCV_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT)
A
Alexander Shishkov 已提交
255 256

    if(SVNVERSION_RESULT MATCHES "exported")
257 258 259
        # This is NOT a svn repository:
        set(OPENCV_SVNVERSION "")
        message(STATUS "SVNVERSION: exported")
A
Alexander Shishkov 已提交
260 261
    else()
        set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}")
262
        message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}")
A
Alexander Shishkov 已提交
263 264 265 266 267 268
    endif()
else()
    # We don't have svnversion:
    set(OPENCV_SVNVERSION "")
endif()

A
Andrey Kamaev 已提交
269

270 271 272 273 274 275
# ----------------------------------------------------------------------------
# OpenCV compiler and linker options
# ----------------------------------------------------------------------------
include(cmake/OpenCVCompilerOptions.cmake REQUIRED)

# In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
V
Vadim Pisarevsky 已提交
276
if(CMAKE_GENERATOR MATCHES "Makefiles|Ninja" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
277 278 279 280
  set(CMAKE_BUILD_TYPE Release)
endif()


281 282 283 284 285 286 287 288 289
# ----------------------------------------------------------------------------
# Use statically or dynamically linked CRT?
# Default: dynamic
# ----------------------------------------------------------------------------
if(MSVC)
  include(cmake/OpenCVCRTLinkage.cmake REQUIRED)
endif(MSVC)


A
Alexander Shishkov 已提交
290 291 292
# ----------------------------------------------------------------------------
#       CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
293 294 295 296 297
if(UNIX)
  include(cmake/OpenCVFindPkgConfig.cmake OPTIONAL)
  include(CheckFunctionExists)
  include(CheckIncludeFile)
endif()
A
Alexander Shishkov 已提交
298

299 300
include(cmake/OpenCVPCHSupport.cmake REQUIRED)
include(cmake/OpenCVModule.cmake REQUIRED)
A
Alexander Shishkov 已提交
301

A
Andrey Kamaev 已提交
302 303 304
# ----------------------------------------------------------------------------
#  Detect 3rd-party tools and libraries
# ----------------------------------------------------------------------------
A
Alexander Shishkov 已提交
305

306 307 308
# IO libraries
include(cmake/OpenCVIOLibs.cmake REQUIRED)

A
Andrey Kamaev 已提交
309 310
#Graphic libraries
set(HAVE_OPENGL 0)
A
Alexander Shishkov 已提交
311 312 313 314 315
if(UNIX)
    if(NOT APPLE)
      if(WITH_GTK)
        CHECK_MODULE(gtk+-2.0 HAVE_GTK)
        CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)
316 317 318 319 320 321 322
        if(WITH_OPENGL)
            CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT)
            if(HAVE_GTKGLEXT)
                find_package(OpenGL QUIET)
                if(OPENGL_FOUND)
                    set(HAVE_OPENGL 1)
                    set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
323
                    ocv_include_directories(${OPENGL_INCLUDE_DIR})
324 325 326
                endif()
            endif()
        endif()
A
Alexander Shishkov 已提交
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372
      else()
        set(HAVE_GTK FALSE)
        set(HAVE_GTHREAD FALSE)
      endif()
      if(WITH_GSTREAMER)
        CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)
        CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER)
        CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)
      else()
        set(HAVE_GSTREAMER FALSE)
      endif()
    endif()

    if(WITH_UNICAP)
      CHECK_MODULE(libunicap HAVE_UNICAP_)
      CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
      if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
        set(HAVE_UNICAP 1)
      endif()
    else()
      set(HAVE_UNICAP FALSE)
    endif()

    if(WITH_PVAPI)
      find_path(PVAPI_INCLUDE_PATH "PvApi.h"
                PATHS "/usr/local/include" "/usr/include"
                DOC "The path to PvAPI header")
      if(PVAPI_INCLUDE_PATH)
        set(HAVE_PVAPI 1)
      endif()
    endif()

    set(HAVE_FFMPEG 0)
    if(WITH_FFMPEG)
      CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
      CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
      CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
      CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)
      CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)
      CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)
      if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)
        if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)
          set(HAVE_GENTOO_FFMPEG 1)
        endif()
      endif()
      if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL)
V
Vadim Pisarevsky 已提交
373
        if(HAVE_FFMPEG_SWSCALE)
A
Alexander Shishkov 已提交
374 375 376
            set(HAVE_FFMPEG 1)
        endif()
      endif()
377

A
Alexander Shishkov 已提交
378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395
      # Find the bzip2 library because it is required on some systems
      FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)
      if(NOT BZIP2_LIBRARIES)
        # Do an other trial
        FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)
      endif()
    endif()

    if(WITH_1394)
      CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
      if(NOT HAVE_DC1394_2)
        CHECK_MODULE(libdc1394 HAVE_DC1394)
      endif()
    else()
      set(HAVE_DC1394_2 FALSE)
      set(HAVE_DC1394 FALSE)
    endif()

396
    if(NOT APPLE)
A
Alexander Shishkov 已提交
397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416
        CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
        CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)
        CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
        CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)

        if(WITH_XINE)
            CHECK_MODULE(libxine HAVE_XINE)
        else()
            set(HAVE_XINE FALSE)
        endif()
        if(WITH_V4L)
            CHECK_MODULE(libv4l1 HAVE_LIBV4L)
            CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
            CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
        else()
            set(HAVE_LIBV4L FALSE)
            set(HAVE_CAMV4L FALSE)
            set(HAVE_CAMV4L2 FALSE)
        endif()

A
Andrey Kamaev 已提交
417
        if(ANDROID)
A
Alexander Shishkov 已提交
418
            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m log)
A
Andrey Kamaev 已提交
419
        elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
A
Alexander Shishkov 已提交
420
            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} m pthread)
A
Alexander Shishkov 已提交
421
        else()
A
Alexander Shishkov 已提交
422
            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} dl m pthread rt)
A
Alexander Shishkov 已提交
423 424 425 426 427 428
        endif()
    else()
        add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H)
    endif()
endif()

429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463
if(APPLE AND WITH_FFMPEG)
  set(FFMPEG_DEFAULT_INCLUDE_DIRS "/usr/local/include/" "/usr/include/" "opt/include/")

  find_path(FFMPEG_INCLUDE_DIR "libavformat/avformat.h" PATHS ${FFMPEG_DEFAULT_INCLUDE_DIRS} DOC "The path to FFMPEG headers")
  if(FFMPEG_INCLUDE_DIR)
    set(HAVE_GENTOO_FFMPEG 1)
    set(FFMPEG_LIB_DIR "${FFMPEG_INCLUDE_DIR}/../lib" CACHE PATH "Full path of FFMPEG library directory")
    if(EXISTS "${FFMPEG_LIB_DIR}/libavcodec.a")
    set(HAVE_FFMPEG_CODEC 1)
    set(ALIASOF_libavcodec_VERSION "Unknown")
    if(EXISTS "${FFMPEG_LIB_DIR}/libavformat.a")
    set(HAVE_FFMPEG_FORMAT 1)
    set(ALIASOF_libavformat_VERSION "Unknown")
    if(EXISTS "${FFMPEG_LIB_DIR}/libavutil.a")
    set(HAVE_FFMPEG_UTIL 1)
    set(ALIASOF_libavutil_VERSION "Unknown")
    if(EXISTS "${FFMPEG_LIB_DIR}/libswscale.a")
        ocv_include_directories(${FFMPEG_INCLUDE_DIR})
        set(HAVE_FFMPEG_SWSCALE 1)
        set(ALIASOF_libswscale_VERSION "Unknown")
        set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a"
            "${FFMPEG_LIB_DIR}/libavformat.a" "${FFMPEG_LIB_DIR}/libavutil.a"
            "${FFMPEG_LIB_DIR}/libswscale.a")
        set(HAVE_FFMPEG 1)
    endif()
    endif()
    endif()
    endif()
  endif()
endif()

if(WIN32 AND WITH_FFMPEG)
  include(3rdparty/ffmpeg/ffmpeg_version.cmake REQUIRED)
endif()

A
Andrey Kamaev 已提交
464
#################### LATEX for dpf documentation ##################
465
if(BUILD_DOCS)
466
  include(cmake/OpenCVFindLATEX.cmake REQUIRED)
467
endif()
A
Alexander Shishkov 已提交
468

A
Andrey Kamaev 已提交
469 470
########################## Python Support #########################
include(cmake/OpenCVDetectPython.cmake REQUIRED)
471

A
Andrey Kamaev 已提交
472
########################### Java Support ##########################
473
if(ANDROID)
A
Andrey Kamaev 已提交
474
  include(cmake/OpenCVDetectApacheAnt.cmake REQUIRED)
475 476 477 478
  include(cmake/OpenCVDetectAndroidSDK.cmake REQUIRED)
  
  if(NOT ANDROID_TOOLS_Pkg_Revision GREATER 13)
    message(WARNING "OpenCV requires Android SDK tools revision 14 or newer. Otherwise tests and samples will no be compiled.")
A
Andrey Kamaev 已提交
479
  endif()
480 481
endif()

482 483 484 485 486 487
if(ANDROID AND ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND (ANT_VERSION VERSION_GREATER 1.7) AND (ANDROID_TOOLS_Pkg_Revision GREATER 13))
  SET(CAN_BUILD_ANDROID_PROJECTS TRUE)
else()
  SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
endif()

A
Alexander Shishkov 已提交
488 489 490 491
############################### QT ################################
set(HAVE_QT 0)
set(HAVE_QT_OPENGL 0)

A
Andrey Kamaev 已提交
492 493 494 495 496 497 498 499 500 501 502 503 504 505
if(WITH_QT)
  find_package(Qt4)
  if(QT4_FOUND)
    set(HAVE_QT 1)
    add_definitions(-DHAVE_QT) #We need to define te macro this way, using cvconfig.h.cmake does not work

    if(WITH_OPENGL)
      find_package (OpenGL QUIET)
      if(QT_QTOPENGL_FOUND AND OPENGL_FOUND)
        set(HAVE_OPENGL 1)
        set(HAVE_QT_OPENGL 1)
        add_definitions(-DHAVE_QT_OPENGL)
        set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
      endif()
A
Alexander Shishkov 已提交
506
    endif()
A
Andrey Kamaev 已提交
507
  endif()
A
Alexander Shishkov 已提交
508 509 510
endif()

############################### TBB ################################
A
Andrey Kamaev 已提交
511 512 513
if(WITH_TBB)
  include(cmake/OpenCVDetectTBB.cmake REQUIRED)
endif()
A
Alexander Shishkov 已提交
514 515 516 517 518

############################ Intel IPP #############################
set(IPP_FOUND)

if(WITH_IPP)
A
Andrey Kamaev 已提交
519
  include(cmake/OpenCVFindIPP.cmake)
A
Alexander Shishkov 已提交
520 521 522
endif()

if(IPP_FOUND)
A
Andrey Kamaev 已提交
523
  add_definitions(-DHAVE_IPP)
524
  ocv_include_directories(${IPP_INCLUDE_DIRS})
A
Andrey Kamaev 已提交
525 526
  link_directories(${IPP_LIBRARY_DIRS})
  set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_LIBRARIES})
A
Alexander Shishkov 已提交
527 528 529 530
endif()

############################### CUDA ################################
if(WITH_CUDA)
A
Andrey Kamaev 已提交
531
  include(cmake/OpenCVDetectCUDA.cmake REQUIRED)
A
Alexander Shishkov 已提交
532 533 534 535 536 537 538
endif()

############################### OpenNI ################################
set(HAVE_OPENNI FALSE)
set(HAVE_OPENNI_PRIME_SENSOR_MODULE FALSE)

if(WITH_OPENNI)
A
Andrey Kamaev 已提交
539
  include(cmake/OpenCVFindOpenNI.cmake)
A
Alexander Shishkov 已提交
540 541
endif()

542 543
############################### XIMEA ################################
set(HAVE_XIMEA FALSE)
544

545
if(WITH_XIMEA)
A
Andrey Kamaev 已提交
546
  include(cmake/OpenCVFindXimea.cmake)
547 548 549
endif()

if(XIMEA_FOUND)
A
Andrey Kamaev 已提交
550
  set(HAVE_XIMEA TRUE)
551 552
endif()

A
Alexander Shishkov 已提交
553 554
############################## Eigen ##############################
if(WITH_EIGEN)
A
Andrey Kamaev 已提交
555
  find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
A
Alexander Shishkov 已提交
556
            PATHS "/usr/local/include/eigen2" "/opt/include/eigen2" "/usr/include/eigen2"
A
Andrey Kamaev 已提交
557
                  "/usr/local/include/eigen3" "/opt/include/eigen3" "/usr/include/eigen3"
A
Alexander Shishkov 已提交
558
            DOC "The path to Eigen2/Eigen3 headers")
A
Andrey Kamaev 已提交
559
  if(EIGEN_INCLUDE_PATH)
560
    ocv_include_directories(${EIGEN_INCLUDE_PATH})
561
    ocv_parse_header("${EIGEN_INCLUDE_PATH}/Eigen/src/Core/util/Macros.h" EIGEN_VERSION_LINES EIGEN_WORLD_VERSION EIGEN_MAJOR_VERSION EIGEN_MINOR_VERSION)
A
Andrey Kamaev 已提交
562 563
    set(HAVE_EIGEN 1)
  endif()
A
Alexander Shishkov 已提交
564 565
endif()

566 567 568 569
########################## Clp #####################################
set(HAVE_CLP FALSE)

if(WITH_CLP)
570 571 572 573 574 575 576 577 578 579

  if(UNIX)
    PKG_CHECK_MODULES(CLP clp)
    if(CLP_FOUND)
      set(HAVE_CLP TRUE)
      if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
        ocv_include_directories(${CLP_INCLUDE_DIRS})
      endif()
      link_directories(${CLP_LIBRARY_DIRS})
      set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CLP_LIBRARIES})
580
    endif()
581 582 583
  endif()
  
  if(NOT CLP_FOUND)
584 585 586 587
    find_path(CLP_INCLUDE_PATH "coin"
              PATHS "/usr/local/include" "/usr/include" "/opt/include"
              DOC "The path to Clp headers")
    if(CLP_INCLUDE_PATH)
588
      ocv_include_directories(${CLP_INCLUDE_PATH} "${CLP_INCLUDE_PATH}/coin")
589 590
      set(CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" CACHE PATH "Full path of Clp library directory")
      link_directories(${CLP_LIBRARY_DIR})
591 592 593 594 595
      if(UNIX)
        set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils bz2 z lapack blas m)
      else()
        set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libClp libCoinUtils)
      endif()
596 597
      set(HAVE_CLP TRUE)
    endif()  
598
  endif()
599
  
600 601
endif()

A
Alexander Shishkov 已提交
602 603
################## Extra HighGUI libs on Windows ###################
if(WIN32)
A
Andrey Kamaev 已提交
604
  set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32)
605

A
Andrey Kamaev 已提交
606 607 608
  if(WITH_VIDEOINPUT)
    set(HAVE_VIDEOINPUT 1)
  endif()
609

A
Andrey Kamaev 已提交
610 611 612
  if(MSVC)
    set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32)
  endif()
A
Alexander Shishkov 已提交
613

A
Andrey Kamaev 已提交
614 615 616 617 618
  if(MINGW)
    if(MINGW64)
      set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} msvfw32 avifil32 avicap32 winmm)
    else()
      set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32 winmm)
A
Alexander Shishkov 已提交
619
    endif()
A
Andrey Kamaev 已提交
620
  endif()
621

A
Andrey Kamaev 已提交
622 623
  if(WITH_OPENGL AND NOT HAVE_QT_OPENGL)
    find_package(OpenGL QUIET)
624

A
Andrey Kamaev 已提交
625 626 627
    if(OPENGL_FOUND)
      set(HAVE_OPENGL 1)
      set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
628
      ocv_include_directories(${OPENGL_INCLUDE_DIR})
629
    endif()
A
Andrey Kamaev 已提交
630
  endif()
631
endif()
A
Alexander Shishkov 已提交
632 633


A
Andrey Kamaev 已提交
634 635 636 637 638 639
# ----------------------------------------------------------------------------
# Solution folders:
# ----------------------------------------------------------------------------
if(ENABLE_SOLUTION_FOLDERS)
  set_property(GLOBAL PROPERTY USE_FOLDERS ON)
  set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
640 641
endif()

A
Andrey Kamaev 已提交
642 643
# Extra OpenCV targets: uninstall, package_source, perf, etc.
include(cmake/OpenCVExtraTargets.cmake REQUIRED)
A
Alexander Shishkov 已提交
644

645

A
Andrey Kamaev 已提交
646 647 648
# ----------------------------------------------------------------------------
# Process subdirectories
# ----------------------------------------------------------------------------
A
Alexander Shishkov 已提交
649

A
Andrey Kamaev 已提交
650 651
# opencv.hpp and legacy headers
add_subdirectory(include)
652

A
Andrey Kamaev 已提交
653 654
# OpenCV modules
add_subdirectory(modules)
A
Alexander Shishkov 已提交
655

A
Andrey Kamaev 已提交
656 657
# Generate targets for documentation
add_subdirectory(doc)
658

A
Andrey Kamaev 已提交
659 660
# various data that is used by cv libraries and/or demo applications.
add_subdirectory(data)
A
Andrey Kamaev 已提交
661

A
Andrey Kamaev 已提交
662 663
# extra applications
add_subdirectory(apps)
664

A
Andrey Kamaev 已提交
665 666 667
# examples
if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
  add_subdirectory(samples)
A
Alexander Shishkov 已提交
668 669
endif()

670

A
Alexander Shishkov 已提交
671
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
672
# Finalization: generate configuration-based files
A
Alexander Shishkov 已提交
673
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
674
ocv_track_build_dependencies()
A
Alexander Shishkov 已提交
675

A
Andrey Kamaev 已提交
676 677
# Generate platform-dependent and configuration-dependent headers
include(cmake/OpenCVGenHeaders.cmake REQUIRED)
A
Alexander Shishkov 已提交
678

A
Andrey Kamaev 已提交
679 680
# Generate opencv.pc for pkg-config command
include(cmake/OpenCVGenPkgconfig.cmake REQUIRED)
A
Alexander Shishkov 已提交
681

A
Andrey Kamaev 已提交
682 683
# Generate OpenCV.mk for ndk-build (Android build tool)
include(cmake/OpenCVGenAndroidMK.cmake REQUIRED)
684

A
Andrey Kamaev 已提交
685 686
# Generate OpenCVСonfig.cmake and OpenCVConfig-version.cmake for cmake projects
include(cmake/OpenCVGenConfig.cmake REQUIRED)
A
Alexander Shishkov 已提交
687

688

A
Alexander Shishkov 已提交
689
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
690
# Summary:
A
Alexander Shishkov 已提交
691
# ----------------------------------------------------------------------------
A
Andrey Kamaev 已提交
692
status("")
693
status("General configuration for OpenCV ${OPENCV_VERSION} =====================================")
694 695 696
if(OPENCV_SVNVERSION)
  status("Version control:" ${OPENCV_SVNVERSION})
endif()
697 698

#build platform
A
Andrey Kamaev 已提交
699
status("")
700 701
status("  Platform:")
status("    Host:"             ${CMAKE_HOST_SYSTEM_NAME} ${CMAKE_HOST_SYSTEM_VERSION} ${CMAKE_HOST_SYSTEM_PROCESSOR})
702 703 704
if(CMAKE_CROSSCOMPILING)
  status("    Target:"           ${CMAKE_SYSTEM_NAME} ${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_PROCESSOR})
endif()
705 706 707 708 709 710 711 712 713
status("    CMake:"            ${CMAKE_VERSION})
status("    CMake generator:"  ${CMAKE_GENERATOR})
status("    CMake build tool:" ${CMAKE_BUILD_TOOL})
if(MSVC)
  status("    MSVC:"           ${MSVC_VERSION})
endif()
if(CMAKE_GENERATOR MATCHES Xcode)
  status("    Xcode:"          ${XCODE_VERSION})
endif()
V
Vadim Pisarevsky 已提交
714 715 716
if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
  status("    Configuration:"  ${CMAKE_BUILD_TYPE})
endif()
717 718 719

# C/C++ options
status("")
720
status("  C/C++:")
A
Andrey Kamaev 已提交
721
status("    Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO)
722
status("    C++ Compiler:"           CMAKE_COMPILER_IS_GNUCXX THEN "${CMAKE_CXX_COMPILER} (ver ${CMAKE_GCC_REGEX_VERSION})" ELSE "${CMAKE_CXX_COMPILER}" )
A
Andrey Kamaev 已提交
723 724
status("    C++ flags (Release):"    ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
status("    C++ flags (Debug):"      ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
725 726 727
status("    C Compiler:"             ${CMAKE_C_COMPILER})
status("    C flags (Release):"      ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE})
status("    C flags (Debug):"        ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG})
A
Alexander Shishkov 已提交
728
if(WIN32)
729 730
  status("    Linker flags (Release):" ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE})
  status("    Linker flags (Debug):"   ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
A
Alexander Shishkov 已提交
731
else()
732 733
  status("    Linker flags (Release):" ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
  status("    Linker flags (Debug):"   ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
A
Alexander Shishkov 已提交
734 735
endif()

736
# OpenCV modules
A
Andrey Kamaev 已提交
737 738 739 740 741
status("")
status("  OpenCV modules:")
string(REPLACE "opencv_" "" OPENCV_MODULES_BUILD_ST          "${OPENCV_MODULES_BUILD}")
string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_USER_ST  "${OPENCV_MODULES_DISABLED_USER}")
string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_FORCE_ST "${OPENCV_MODULES_DISABLED_FORCE}")
742 743 744 745 746 747 748 749 750 751 752 753
set(OPENCV_MODULES_DISABLED_AUTO_ST "")
foreach(m ${OPENCV_MODULES_DISABLED_AUTO})
  set(__mdeps "")
  foreach(d ${OPENCV_MODULE_${m}_DEPS})
    if(d MATCHES "^opencv_" AND NOT HAVE_${d})
      list(APPEND __mdeps ${d})
    endif()
  endforeach()
  list(APPEND OPENCV_MODULES_DISABLED_AUTO_ST "${m}(deps: ${__mdeps})")
endforeach()
string(REPLACE "opencv_" "" OPENCV_MODULES_DISABLED_AUTO_ST  "${OPENCV_MODULES_DISABLED_AUTO_ST}")

A
Andrey Kamaev 已提交
754 755 756 757 758
status("    To be built:"            OPENCV_MODULES_BUILD          THEN ${OPENCV_MODULES_BUILD_ST}          ELSE "-")
status("    Disabled by user:"       OPENCV_MODULES_DISABLED_USER  THEN ${OPENCV_MODULES_DISABLED_USER_ST}  ELSE "-")
status("    Disabled by dependency:" OPENCV_MODULES_DISABLED_AUTO  THEN ${OPENCV_MODULES_DISABLED_AUTO_ST}  ELSE "-")
status("    Unavailable:"            OPENCV_MODULES_DISABLED_FORCE THEN ${OPENCV_MODULES_DISABLED_FORCE_ST} ELSE "-")

759
# Android extra
760
if(ANDROID)
761 762 763 764 765 766 767 768 769 770 771 772
  status("")
  status("  Android: ")
  status("    Android ABI:" ${ANDROID_ABI})
  status("    Native API level:" android-${ANDROID_NATIVE_API_LEVEL})
  status("    SDK target:" "${ANDROID_SDK_TARGET}")
  if(BUILD_WITH_ANDROID_NDK)
    status("    Android NDK:" "${ANDROID_NDK} (toolchain: ${ANDROID_TOOLCHAIN_NAME})")
  elseif(BUILD_WITH_STANDALONE_TOOLCHAIN)
    status("    Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
  endif()
  status("    android tool:"  ANDROID_EXECUTABLE  THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
  status("    ant:"           ANT_EXECUTABLE      THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})"            ELSE NO)
773 774
endif()

A
Alexander Shishkov 已提交
775
#YV
A
Andrey Kamaev 已提交
776 777
status("")
status("  GUI: ")
A
Alexander Shishkov 已提交
778 779

if (HAVE_QT)
780 781
  status("    QT 4.x:"            HAVE_QT        THEN "YES (ver ${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}.${QT_VERSION_PATCH} ${QT_EDITION})" ELSE NO)
  status("    QT OpenGL support:" HAVE_QT_OPENGL THEN "YES (${QT_QTOPENGL_LIBRARY})" ELSE NO)
A
Alexander Shishkov 已提交
782
else()
783 784 785 786 787 788 789 790 791
  if(WIN32)
    status("    Win32 UI:" YES)
  else()
    if(APPLE)
      if(WITH_CARBON)
        status("    Carbon:" YES)
      else()
        status("    Cocoa:"  YES)
      endif()
A
Alexander Shishkov 已提交
792
    else()
793 794 795
      status("    GTK+ 2.x:" HAVE_GTK      THEN "YES (ver ${ALIASOF_gtk+-2.0_VERSION})"     ELSE NO)
      status("    GThread :" HAVE_GTHREAD  THEN "YES (ver ${ALIASOF_gthread-2.0_VERSION})"  ELSE NO)
      status("    GtkGlExt:" HAVE_GTKGLEXT THEN "YES (ver ${ALIASOF_gtkglext-1.0_VERSION})" ELSE NO)
A
Alexander Shishkov 已提交
796
    endif()
797
  endif()
A
Alexander Shishkov 已提交
798 799
endif()

800
status("    OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO)
801

A
Andrey Kamaev 已提交
802 803 804
# media
status("")
status("  Media I/O: ")
805
status("    ZLib:"         BUILD_ZLIB    THEN "build (ver ${ZLIB_VERSION_STRING})"               ELSE "${ZLIB_LIBRARY} (ver ${ZLIB_VERSION_STRING})")
A
Alexander Shishkov 已提交
806

807
if(WITH_JPEG)
808
  status("    JPEG:"       JPEG_FOUND    THEN "${JPEG_LIBRARY} (ver ${JPEG_LIB_VERSION})"        ELSE "build (ver ${JPEG_LIB_VERSION})")
809 810 811 812
else()
  status("    JPEG:"       "NO")
endif()
if(WITH_PNG)
813
  status("    PNG:"        PNG_FOUND     THEN "${PNG_LIBRARY} (ver ${PNG_VERSION})"              ELSE "build (ver ${PNG_VERSION})")
814 815 816 817
else()
  status("    PNG:"        "NO")
endif()
if(WITH_TIFF)
V
Vadim Pisarevsky 已提交
818 819 820 821 822
  if(TIFF_VERSION_STRING AND TIFF_FOUND)
    status("    TIFF:"     "${TIFF_LIBRARY} (ver ${TIFF_VERSION} - ${TIFF_VERSION_STRING})")
  else()
    status("    TIFF:"     TIFF_FOUND    THEN "${TIFF_LIBRARY} (ver ${TIFF_VERSION})"            ELSE "build (ver ${TIFF_VERSION})")
  endif()
823 824 825 826
else()
  status("    TIFF:"       "NO")
endif()
if(WITH_JASPER)
827
  status("    JPEG 2000:"  JASPER_FOUND  THEN "${JASPER_LIBRARY} (ver ${JASPER_VERSION_STRING})" ELSE "build (ver ${JASPER_VERSION_STRING})")
828 829 830 831
else()
  status("    JPEG 2000:"  "NO")
endif()

832 833
status("    OpenEXR:"   WITH_OPENEXR AND OPENEXR_FOUND     THEN "${OPENEXR_LIBRARIES} (ver ${OPENEXR_VERSION})"                     ELSE NO)
status("    OpenNI:"    HAVE_OPENNI                        THEN "YES (ver ${OPENNI_VERSION_STRING}, build ${OPENNI_VERSION_BUILD})" ELSE NO)
834
status("    OpenNI PrimeSensor Modules:"
835
                        HAVE_OPENNI_PRIME_SENSOR_MODULE    THEN "YES (${OPENNI_PRIME_SENSOR_MODULE})"                               ELSE NO)
836
if(WIN32)
837
  status("    XIMEA:"     HAVE_XIMEA  THEN YES ELSE NO)
838
endif()
A
Alexander Shishkov 已提交
839

A
Andrey Kamaev 已提交
840 841 842
# video
status("")
if(UNIX AND NOT APPLE)
843
  status("  Video I/O:")
844 845 846 847 848 849 850 851 852 853
  status("    DC1394 1.x:"     HAVE_DC1394         THEN "YES (ver ${ALIASOF_libdc1394_VERSION})"   ELSE NO)
  status("    DC1394 2.x:"     HAVE_DC1394_2       THEN "YES (ver ${ALIASOF_libdc1394-2_VERSION})" ELSE NO)
  status("    GStreamer:"      HAVE_GSTREAMER      THEN "" ELSE NO)
  if(HAVE_GSTREAMER)
    status("      base:"       "YES (ver ${ALIASOF_gstreamer-base-0.10_VERSION})")
    status("      app:"        "YES (ver ${ALIASOF_gstreamer-app-0.10_VERSION})")
    status("      video:"      "YES (ver ${ALIASOF_gstreamer-video-0.10_VERSION})")
  endif()
  status("    UniCap:"         HAVE_UNICAP         THEN "YES (ver ${ALIASOF_libunicap_VERSION})"        ELSE NO)
  status("    UniCap ucil:"    HAVE_UNICAP_UCIL    THEN "YES (ver ${ALIASOF_libucil_VERSION})"          ELSE NO)
854
  status("    PvAPI:"          HAVE_PVAPI          THEN YES ELSE NO)
855 856 857 858 859 860 861 862 863 864 865 866
  if(HAVE_CAMV4L)
    set(HAVE_CAMV4L_STR "YES")
  else()
    set(HAVE_CAMV4L_STR "NO")
  endif()
 if(HAVE_CAMV4L2)
    set(HAVE_CAMV4L2_STR "YES")
  else()
    set(HAVE_CAMV4L2_STR "NO")
  endif()
  status("    V4L/V4L2:"       HAVE_LIBV4L         THEN "Using libv4l (ver ${ALIASOF_libv4l1_VERSION})" ELSE "${HAVE_CAMV4L_STR}/${HAVE_CAMV4L2_STR}")
  status("    Xine:"           HAVE_XINE           THEN "YES (ver ${ALIASOF_libxine_VERSION})"          ELSE NO)
867 868 869 870

  if(ANDROID)
    if(HAVE_opencv_androidcamera)
      status("    AndroidNativeCamera:" BUILD_ANDROID_CAMERA_WRAPPER THEN "YES, build for Android ${ANDROID_VERSION}" ELSE "YES, use prebuilt libraries")
871
    else()
872
      status("    AndroidNativeCamera:" "NO (native camera requires Android API level 8 or higher)")
873
    endif()
874 875 876 877 878 879 880
  endif()
elseif(APPLE)
  if(NOT IOS)
    status("  Video I/O:"    WITH_QUICKTIME      THEN QuickTime ELSE QTKit)
  else()
    status("  Video I/O: AVFoundation")
  endif()
A
Andrey Kamaev 已提交
881
elseif(WIN32)
882
  status("  Video I/O:"      HAVE_VIDEOINPUT     THEN DirectShow ELSE NO)
A
Alexander Shishkov 已提交
883 884
endif()

885 886 887 888 889 890 891 892 893 894 895
if(WIN32)
  status("    FFMPEG:"         WITH_FFMPEG         THEN "YES (prebuilt binaries)" ELSE NO)
else()
  status("    FFMPEG:"         HAVE_FFMPEG         THEN YES ELSE NO)
endif()
status("      codec:"        HAVE_FFMPEG_CODEC   THEN "YES (ver ${ALIASOF_libavcodec_VERSION})"  ELSE NO)
status("      format:"       HAVE_FFMPEG_FORMAT  THEN "YES (ver ${ALIASOF_libavformat_VERSION})" ELSE NO)
status("      util:"         HAVE_FFMPEG_UTIL    THEN "YES (ver ${ALIASOF_libavutil_VERSION})"   ELSE NO)
status("      swscale:"      HAVE_FFMPEG_SWSCALE THEN "YES (ver ${ALIASOF_libswscale_VERSION})"  ELSE NO)
status("      gentoo-style:" HAVE_GENTOO_FFMPEG  THEN YES ELSE NO)

A
Andrey Kamaev 已提交
896 897
# Other third-party libraries
status("")
898
status("  Other third-party libraries:")
A
Alexander Shishkov 已提交
899 900

if(WITH_IPP AND IPP_FOUND)
901 902
  status("    Use IPP:" "${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]")
  status("         at:" "${IPP_ROOT_DIR}")
A
Alexander Shishkov 已提交
903
else()
904
  status("    Use IPP:"   WITH_IPP AND NOT IPP_FOUND THEN "IPP not found" ELSE NO)
A
Alexander Shishkov 已提交
905 906
endif()

907 908 909
status("    Use TBB:"   HAVE_TBB   THEN "YES (ver ${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR} interface ${TBB_INTERFACE_VERSION})" ELSE NO)
status("    Use Cuda:"  HAVE_CUDA  THEN "YES (ver ${CUDA_VERSION_STRING})" ELSE NO)
status("    Use Eigen:" HAVE_EIGEN THEN "YES (ver ${EIGEN_WORLD_VERSION}.${EIGEN_MAJOR_VERSION}.${EIGEN_MINOR_VERSION})" ELSE NO)
910
status("    Use Clp:"   HAVE_CLP   THEN YES ELSE NO)
A
Alexander Shishkov 已提交
911

912 913
if(HAVE_CUDA)
  status("")
V
Vadim Pisarevsky 已提交
914
  status("  NVIDIA CUDA:"            "(ver ${CUDA_VERSION_STRING})")
915 916 917 918 919 920 921 922

  status("    Use CUFFT:"            HAVE_CUFFT  THEN YES ELSE NO)
  status("    Use CUBLAS:"           HAVE_CUBLAS THEN YES ELSE NO)
  status("    NVIDIA GPU arch:"      ${OPENCV_CUDA_ARCH_BIN})
  status("    NVIDIA PTX archs:"     ${OPENCV_CUDA_ARCH_BIN})
  status("    NVIDIA GPU features:"  ${OPENCV_CUDA_ARCH_FEATURES})
endif()

923 924
# interfaces to other languages
status("")
925 926 927
status("  Python:")
status("    Interpreter:"   PYTHON_EXECUTABLE     THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_FULL})"         ELSE NO)
if(BUILD_opencv_python)
V
Vadim Pisarevsky 已提交
928 929 930 931 932
  if(PYTHONLIBS_VERSION_STRING)
    status("    Libraries:"     HAVE_opencv_python  THEN  "${PYTHON_LIBRARIES} (ver ${PYTHONLIBS_VERSION_STRING})" ELSE NO)
  else()
    status("    Libraries:"     HAVE_opencv_python  THEN  ${PYTHON_LIBRARIES}                                      ELSE NO)
  endif()
933 934 935 936 937 938 939
  status("    numpy:"         PYTHON_USE_NUMPY    THEN "${PYTHON_NUMPY_INCLUDE_DIR} (ver ${PYTHON_NUMPY_VERSION})" ELSE "NO (Python wrappers can not be generated)")
  status("    packages path:" PYTHON_EXECUTABLE   THEN "${PYTHON_PACKAGES_PATH}"                                   ELSE "-")
endif()

if(BUILD_opencv_java)
  status("")
  status("  Java:" HAVE_opencv_java THEN YES ELSE NO)
940
endif()
941

A
Andrey Kamaev 已提交
942
# documentation
943 944 945 946 947 948 949 950 951 952
if(BUILD_DOCS)
  status("")
  status("  Documentation:")
  if(HAVE_SPHINX)
    status("    Build Documentation:" PDFLATEX_COMPILER      THEN YES ELSE "YES (only HTML and without math expressions)")
  else()
    status("    Build Documentation:" NO)
  endif()
  status("    Sphinx:"              HAVE_SPHINX              THEN "${SPHINX_BUILD} (ver ${SPHINX_VERSION})" ELSE NO)
  status("    PdfLaTeX compiler:"   PDFLATEX_COMPILER        THEN "${PDFLATEX_COMPILER}" ELSE NO)
953
endif()
A
Alexander Shishkov 已提交
954

A
Andrey Kamaev 已提交
955 956 957
# samples and tests
status("")
status("  Tests and samples:")
958 959 960
status("    Tests:"             BUILD_TESTS AND HAVE_opencv_ts       THEN YES ELSE NO)
status("    Performance tests:" BUILD_PERF_TESTS AND HAVE_opencv_ts  THEN YES ELSE NO)
status("    Examples:"          BUILD_EXAMPLES                       THEN YES ELSE NO)
A
Andrey Kamaev 已提交
961 962

if(ANDROID)
963 964
  status("    Android tests:"    BUILD_TESTS AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
  status("    Android examples:" BUILD_ANDROID_EXAMPLES                     THEN YES ELSE NO)
A
Alexander Shishkov 已提交
965 966
endif()

967
#auxiliary
A
Andrey Kamaev 已提交
968 969 970 971 972 973
status("")
status("  Install path:" "${CMAKE_INSTALL_PREFIX}")
status("")
status("  cvconfig.h is in:" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
status("-----------------------------------------------------------------")
status("")
974

V
Vadim Pisarevsky 已提交
975 976
ocv_finalize_status()

A
Andrey Kamaev 已提交
977 978 979
# ----------------------------------------------------------------------------
# Warn in the case of in-source build
# ----------------------------------------------------------------------------
980
if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
981
  message(WARNING "The source directory is the same as binary directory. \"make clean\" may damage the source tree")
982
endif()
983