From ca758a9dac67732de6020eaf2086f6affcef25f7 Mon Sep 17 00:00:00 2001 From: Alexander Shishkov Date: Tue, 14 Jun 2011 10:11:16 +0000 Subject: [PATCH] fixed #768 ticket --- CMakeLists.txt | 3183 ++++++++++++++++++----------------- OpenCVPCHSupport.cmake | 2 +- doc/CMakeLists.txt | 2 +- modules/gpu/CMakeLists.txt | 2 +- modules/haartraining/CMakeLists.txt | 22 +- modules/python/CMakeLists.txt | 42 +- modules/stitching/CMakeLists.txt | 80 +- modules/traincascade/CMakeLists.txt | 20 +- 8 files changed, 1677 insertions(+), 1676 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0f07bb1..1db9c80 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,1591 +1,1592 @@ -# ---------------------------------------------------------------------------- -# Root CMake file for OpenCV -# -# From the off-tree build directory, invoke: -# $ cmake -# -# -# - OCT-2008: Initial version -# -# ---------------------------------------------------------------------------- - -set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) - - -# Add these standard paths to the search paths for FIND_LIBRARY -# to find libraries from these locations first -if(UNIX) - set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /lib /usr/lib) -endif() - - -# 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() - -set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") -set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) - -set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE) -set(CMAKE_C_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) -set(CMAKE_C_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) -set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) -set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) -set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) -set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) -set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) -set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) -set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) -set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) -set(CMAKE_VERBOSE OFF CACHE BOOL "Verbose mode") - -if(CMAKE_VERBOSE) - set(CMAKE_VERBOSE_MAKEFILE 1) -endif() - - -project(OpenCV) - - -cmake_minimum_required(VERSION 2.4) - - -if(MSVC) - set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE) -endif() - - -# -------------------------------------------------------------- -# 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) - cmake_policy(SET CMP0003 NEW) -endif() - - -# ---------------------------------------------------------------------------- -# Current version number: -# ---------------------------------------------------------------------------- -set(OPENCV_VERSION "2.2.9") - -string(REGEX MATCHALL "[0-9]" OPENCV_VERSION_PARTS "${OPENCV_VERSION}") - -list(GET OPENCV_VERSION_PARTS 0 OPENCV_VERSION_MAJOR) -list(GET OPENCV_VERSION_PARTS 1 OPENCV_VERSION_MINOR) -list(GET OPENCV_VERSION_PARTS 2 OPENCV_VERSION_PATCH) - -set(OPENCV_SOVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}") - -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 "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}") - set(OPENCV_DLLVERSION "") - set(OPENCV_DEBUG_POSTFIX) -endif() - - -# ---------------------------------------------------------------------------- -# Build static or dynamic libs? -# Default: dynamic libraries: -# ---------------------------------------------------------------------------- -set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)") - -# ---------------------------------------------------------------------------- -# Use statically or dynamically linked CRT? -# Default: dynamic -# ---------------------------------------------------------------------------- -if(MSVC AND NOT BUILD_SHARED_LIBS) - option (BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT" OFF) -endif() - -if(MSVC) - if(BUILD_WITH_STATIC_CRT) - foreach(flag_var - CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - if(${flag_var} MATCHES "/MD") - string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MD") - - if(${flag_var} MATCHES "/MDd") - string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MDd") - endforeach(flag_var) - - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib") - - set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd.lib") - - else(BUILD_WITH_STATIC_CRT) - foreach(flag_var - CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - if(${flag_var} MATCHES "/MT") - string(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MT") - - if(${flag_var} MATCHES "/MTd") - string(REGEX REPLACE "/MTd" "/MDd" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MTd") - endforeach(flag_var) - - endif(BUILD_WITH_STATIC_CRT) -endif(MSVC) - - - -# ---------------------------------------------------------------------------- -# Variables for cvconfig.h.cmake -# ---------------------------------------------------------------------------- -set(PACKAGE "opencv") -set(PACKAGE_BUGREPORT "opencvlibrary-devel@lists.sourceforge.net") -set(PACKAGE_NAME "opencv") -set(PACKAGE_STRING "${PACKAGE} ${OPENCV_VERSION}") -set(PACKAGE_TARNAME "${PACKAGE}") -set(PACKAGE_VERSION "${OPENCV_VERSION}") - - -# ---------------------------------------------------------------------------- -# Autodetect if we are in a SVN repository -# ---------------------------------------------------------------------------- -find_program(SVNVERSION_PATH svnversion) -mark_as_advanced(force SVNVERSION_PATH) -if(SVNVERSION_PATH) - message(STATUS "Extracting svn version, please wait...") - execute_process(COMMAND ${SVNVERSION_PATH} -n ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT) - - if(SVNVERSION_RESULT MATCHES "exported") - # This is NOT a svn repository: - set(OPENCV_SVNVERSION "") - else() - set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}") - endif() - - message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}") -else() - # We don't have svnversion: - set(OPENCV_SVNVERSION "") -endif() - -# ---------------------------------------------------------------------------- -# Detect Microsoft compiler: -# ---------------------------------------------------------------------------- -if(CMAKE_CL_64) - set(MSVC64 1) -endif() - -# ---------------------------------------------------------------------------- -# Detect GNU version: -# ---------------------------------------------------------------------------- -if(CMAKE_COMPILER_IS_GNUCXX) - execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version - OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL - OUTPUT_STRIP_TRAILING_WHITESPACE) - - # Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)" - # Look for the version number - string(REGEX MATCH "[0-9].[0-9].[0-9]" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}") - - # Split the three parts: - string(REGEX MATCHALL "[0-9]" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}") - - list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR) - list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR) - - set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR}) - math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}") - message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})") - - if(WIN32) - execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine - OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "64") - set(MINGW64 1) - endif() - endif() - -endif() - - -# ---------------------------------------------------------------------------- -# Detect Intel ICC compiler -- for -fPIC in 3rdparty ( UNIX ONLY ): -# see include/opencv/cxtypes.h file for related ICC & CV_ICC defines. -# NOTE: The system needs to determine if the '-fPIC' option needs to be added -# for the 3rdparty static libs being compiled. The CMakeLists.txt files -# in 3rdparty use the CV_ICC definition being set here to determine if -# the -fPIC flag should be used. -# ---------------------------------------------------------------------------- -if(UNIX) - if (__ICL) - set(CV_ICC __ICL) - elseif(__ICC) - set(CV_ICC __ICC) - elseif(__ECL) - set(CV_ICC __ECL) - elseif(__ECC) - set(CV_ICC __ECC) - elseif(__INTEL_COMPILER) - set(CV_ICC __INTEL_COMPILER) - elseif(CMAKE_C_COMPILER MATCHES "icc") - set(CV_ICC icc_matches_c_compiler) - endif() -endif() - - -# ---------------------------------------------------------------------------- -# CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC.. -# ---------------------------------------------------------------------------- - -# Build/install (or not) some apps: -# =================================================== -set(BUILD_EXAMPLES OFF CACHE BOOL "Build all examples") -set(INSTALL_C_EXAMPLES OFF CACHE BOOL "Install C examples") -set(INSTALL_PYTHON_EXAMPLES OFF CACHE BOOL "Install Python examples") - -# Build tests: -# =================================================== -set(BUILD_TESTS ON CACHE BOOL "Build tests") - -# Build 3rdparty libraries under unix -# =================================================== -if(WIN32) - set(OPENCV_BUILD_3RDPARTY_LIBS TRUE CACHE BOOL "Build 3rd party libraries") -else() - set(OPENCV_BUILD_3RDPARTY_LIBS FALSE CACHE BOOL "Build 3rd party libraries") -endif() - -include(OpenCVPCHSupport.cmake REQUIRED) -include(OpenCVModule.cmake REQUIRED) - -if(PCHSupport_FOUND) - SET(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Use precompiled headers") -else() - SET(USE_PRECOMPILED_HEADERS OFF CACHE BOOL "Use precompiled headers" FORCE) -endif() - -if(UNIX) - include(OpenCVFindPkgConfig.cmake OPTIONAL) - include(CheckFunctionExists) - include(CheckIncludeFile) -endif() - -#if(MSVC) -# set(DEFAULT_ENABLE_OPENMP ON) -#else() -# set(DEFAULT_ENABLE_OPENMP OFF) -#endif() -#set(ENABLE_OPENMP ${DEFAULT_ENABLE_OPENMP} CACHE BOOL "") - -if(CMAKE_COMPILER_IS_GNUCXX) - set(ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)") - set(USE_OMIT_FRAME_POINTER ON CACHE BOOL "Enable -fomit-frame-pointer for GCC") - - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64*) - set(X86_64 1) - endif() - - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*|i386*|x86*) - set(X86 1) - endif() - - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc*) - set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC") - set(ENABLE_POWERPC ON CACHE BOOL "Enable PowerPC for GCC") - endif () - - if(X86 OR X86_64) - # enable everything, since the available set of instructions is checked at runtime - set(USE_O3 ON CACHE BOOL "Enable -O3") - set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math") - set(ENABLE_SSE ON CACHE BOOL "Enable SSE instructions") - set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 instructions") - set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 instructions") - set(ENABLE_SSSE3 OFF CACHE BOOL "Enable SSSE3 instructions") - set(ENABLE_SSE41 OFF CACHE BOOL "Enable SSE4.1 instructions") - set(ENABLE_SSE42 OFF CACHE BOOL "Enable SSE4.2 instructions") - endif() -endif() - -if(MSVC) - set(ENABLE_SSE ON CACHE BOOL "Enable SSE instructions for MSVC") - set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 instructions for MSVC") - if(CMAKE_C_COMPILER MATCHES "icc") - set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 instructions for ICC") - set(ENABLE_SSE4_1 OFF CACHE BOOL "Enable SSE4.1 instructions for ICC") - endif() -endif() - -# allow fine grained control over which libraries not to link, even if -# they are available on the system -# ==================================================================== -set(WITH_PNG ON CACHE BOOL "Include PNG support") -set(WITH_JPEG ON CACHE BOOL "Include JPEG support") -set(WITH_JASPER ON CACHE BOOL "Include JPEG2K support") -set(WITH_TIFF ON CACHE BOOL "Include TIFF support") -set(WITH_OPENEXR ON CACHE BOOL "Include ILM support via OpenEXR") - -if(UNIX) - set(WITH_FFMPEG ON CACHE BOOL "Include FFMPEG support") - if(NOT APPLE) - set(WITH_UNICAP OFF CACHE BOOL "Include Unicap support (GPL)") - set(WITH_GTK ON CACHE BOOL "Include GTK support") - set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support") - set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support") - set(WITH_XINE OFF CACHE BOOL "Include Xine support (GPL)") - endif() - set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support") - set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support") -endif() - -if(APPLE) - set(WITH_CARBON OFF CACHE BOOL "Use Carbon for UI instead of Cocoa") - set(WITH_QUICKTIME OFF CACHE BOOL "Use QuickTime for Video I/O insted of QTKit") -endif() - -set(WITH_TBB OFF CACHE BOOL "Include Intel TBB support") -set(WITH_IPP OFF CACHE BOOL "Include Intel IPP support") -set(WITH_EIGEN ON CACHE BOOL "Include Eigen2/Eigen3 support") -set(WITH_CUDA OFF CACHE BOOL "Include NVidia Cuda Runtime support") - -if(WIN32) - set(WITH_VIDEOINPUT ON CACHE BOOL "Enable VideoInput support") -endif() - -set(WITH_OPENNI OFF CACHE BOOL "Include OpenNI support") - -# =================================================== -# Macros that checks if module have been installed. -# After it adds module to build and define -# constants passed as second arg -# =================================================== - -macro(CHECK_MODULE module_name define) - set(${define} 0) - if(PKG_CONFIG_FOUND) - set(ALIAS ALIASOF_${module_name}) - set(ALIAS_FOUND ${ALIAS}_FOUND) - set(ALIAS_INCLUDE_DIRS ${ALIAS}_INCLUDE_DIRS) - set(ALIAS_LIBRARY_DIRS ${ALIAS}_LIBRARY_DIRS) - set(ALIAS_LIBRARIES ${ALIAS}_LIBRARIES) - - PKG_CHECK_MODULES(${ALIAS} ${module_name}) - - if (${ALIAS_FOUND}) - set(${define} 1) - foreach(P "${ALIAS_INCLUDE_DIRS}") - if (${P}) - list(APPEND HIGHGUI_INCLUDE_DIRS ${${P}}) - endif() - endforeach() - - foreach(P "${ALIAS_LIBRARY_DIRS}") - if (${P}) - list(APPEND HIGHGUI_LIBRARY_DIRS ${${P}}) - endif() - endforeach() - - list(APPEND HIGHGUI_LIBRARIES ${${ALIAS_LIBRARIES}}) - endif() - endif() -endmacro() - -if(UNIX) - if(NOT APPLE) - if(WITH_GTK) - CHECK_MODULE(gtk+-2.0 HAVE_GTK) - CHECK_MODULE(gthread-2.0 HAVE_GTHREAD) - 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) - if(HAVE_FFMPEG_SWSCALE OR NOT HAVE_GENTOO_FFMPEG) - set(HAVE_FFMPEG 1) - endif() - endif() - # 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() - - if(NOT OPENCV_BUILD_3RDPARTY_LIBS) - include(FindZLIB) - if(WITH_PNG) - include(FindPNG) - if(PNG_FOUND) - CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/png.h HAVE_PNG_H) - CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/libpng/png.h HAVE_LIBPNG_PNG_H) - endif() - else() - set(PNG_FOUND FALSE) - endif() - if(WITH_TIFF) - include(FindTIFF) - else() - set(TIFF_FOUND FALSE) - endif() - if(WITH_JASPER) - include(FindJasper) - else() - set(JASPER_FOUND FALSE) - endif() - if(WITH_JPEG) - include(FindJPEG) - else() - set(JPEG_FOUND FALSE) - endif() - endif() - - if(NOT APPLE) - 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() - - if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "NetBSD" AND NOT ANDROID) - set(OPENCV_LINKER_LIBS m pthread) - elseif(ANDROID) - set(OPENCV_LINKER_LIBS dl m log) - else() - set(OPENCV_LINKER_LIBS dl m pthread rt) - endif() - else() - add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H) - endif() -endif() - -if(WITH_PNG AND NOT PNG_FOUND) - set(PNG_LIBRARIES libpng) -endif() - -if(WITH_JPEG AND NOT JPEG_FOUND) - set(JPEG_LIBRARIES libjpeg) -endif() - -if(WITH_TIFF AND NOT TIFF_FOUND) - set(TIFF_LIBRARIES libtiff) -endif() - -if(WITH_JASPER AND NOT JASPER_FOUND) - set(JASPER_LIBRARIES libjasper) -endif() - -if (ANDROID) - #android camera support - set(NativeCamera_DIR "${CMAKE_SOURCE_DIR}/android/native-camera/build") - FIND_PACKAGE(NativeCamera QUIET) - if(NativeCamera_FOUND) - set(HAVE_ANDROID_NATIVE_CAMERA TRUE) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${NativeCamera_LIBS}) - else() - set(HAVE_ANDROID_NATIVE_CAMERA FALSE) - message(STATUS "Could NOT find NativeCamera for Android") - endif() -endif() - -#message(STATUS "Graphic libraries: ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${JASPER_LIBRARIES}") - -if(WITH_OPENEXR) - include(OpenCVFindOpenEXR.cmake) -endif() - -set(BUILD_NEW_PYTHON_SUPPORT ON CACHE BOOL "Build with Python support") - -if(BUILD_NEW_PYTHON_SUPPORT) - find_package(PythonInterp) - find_package(PythonLibs) - - # cmake 2.4 (at least on Ubuntu 8.04 (hardy)) don't define PYTHONLIBS_FOUND - if(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH) - set(PYTHONLIBS_FOUND ON) - endif(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH) - - execute_process(COMMAND ${PYTHON_EXECUTABLE} --version - ERROR_VARIABLE PYTHON_VERSION_FULL - OUTPUT_STRIP_TRAILING_WHITESPACE) - - string(REGEX MATCH "[0-9].[0-9]" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}") - if(UNIX) - set(PYTHON_PLUGIN_INSTALL_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages/opencv) - if(APPLE) - set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages CACHE PATH "Where to install the python packages.") - else() #debian based assumed, install to the dist-packages. - set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/dist-packages CACHE PATH "Where to install the python packages.") - endif() - endif() - if(WIN32) - get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE CACHE) - set(PYTHON_PLUGIN_INSTALL_PATH "${PYTHON_PATH}/Lib/site-packages/opencv") - set(PYTHON_PACKAGES_PATH "${PYTHON_PATH}/Lib/site-packages") - endif() - - # Attempt to discover the NumPy include directory. If this succeeds, build with NumPy - - execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import numpy.distutils; print numpy.distutils.misc_util.get_numpy_include_dirs()[0]" - RESULT_VARIABLE PYTHON_NUMPY_PROCESS - OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(PYTHON_NUMPY_PROCESS EQUAL 0) - set(PYTHON_USE_NUMPY 1) - add_definitions(-D PYTHON_USE_NUMPY=1) - include_directories(AFTER ${PYTHON_NUMPY_INCLUDE_DIRS}) - message(STATUS " Use INCLUDE: ${PYTHON_NUMPY_INCLUDE_DIRS}") - else() - set(PYTHON_USE_NUMPY 0) - endif() - - execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sphinx; print sphinx.__version__" - RESULT_VARIABLE SPHINX_PROCESS - OUTPUT_VARIABLE SPHINX_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE) - - set(HAVE_SPHINX 0) - if(SPHINX_PROCESS EQUAL 0) - find_program(SPHINX_BUILD sphinx-build) - if(SPHINX_BUILD) - set(HAVE_SPHINX 1) - message(STATUS " Found Sphinx ${SPHINX_VERSION}: ${SPHINX_BUILD}") - endif() - endif() -endif() - -#YV -############################### QT ################################ - -set(WITH_QT OFF CACHE BOOL "Build with Qt Backend support") -set(WITH_QT_OPENGL OFF CACHE BOOL "Add OpenGL extension to Qt") - -set(HAVE_QT 0) -set(HAVE_QT_OPENGL 0) - -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 - - find_package (OpenGL QUIET) - - - #if (NOT WIN32) - if (WITH_QT_OPENGL) - if (QT_QTOPENGL_FOUND AND OPENGL_FOUND) - set(HAVE_QT_OPENGL 1) - add_definitions(-DHAVE_QT_OPENGL) - #link_directories("${OPENGL_LIBRARIES}") - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES}) - endif() - endif() - #endif() - - endif() -endif() - -############################### TBB ################################ - -if (WITH_TBB) - if (UNIX AND NOT APPLE) - PKG_CHECK_MODULES(TBB tbb) - message(STATUS "TBB detected: ${TBBLIB_FOUND}") - - if (TBB_FOUND) - set(HAVE_TBB 1) - if(NOT ${TBB_INCLUDE_DIRS} STREQUAL "") - include_directories(${TBB_INCLUDE_DIRS}) - endif() - link_directories(${TBB_LIBRARY_DIRS}) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES}) - endif() - endif() - - if (NOT HAVE_TBB) - set(TBB_DEFAULT_INCLUDE_DIRS "/opt/intel/tbb" "/usr/local/include" "/usr/include" "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB" "C:/Program Files (x86)/TBB") - - find_path(TBB_INCLUDE_DIR "tbb/tbb.h" PATHS ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers") - if (TBB_INCLUDE_DIR) - if (UNIX) - set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory") - link_directories("${TBB_LIB_DIR}") - endif() - if (APPLE) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libtbb.dylib) - elseif (UNIX) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb) - elseif (WIN32) - if (CMAKE_COMPILER_IS_GNUCXX) - set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory") - link_directories("${TBB_LIB_DIR}") - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb) - else() - get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib" ABSOLUTE) - - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64*) - set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64") - endif() - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*|i386*|i686*) - set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/ia32") - endif() - - if (MSVC80) - set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8") - elseif(MSVC90) - set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9") - elseif(MSVC10) - set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10") - endif() - set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory") - link_directories("${TBB_LIB_DIR}") - endif() - endif() - - set(HAVE_TBB 1) - if(NOT "${TBB_INCLUDE_DIR}" STREQUAL "") - include_directories("${TBB_INCLUDE_DIR}") - endif() - endif() - endif() -endif(WITH_TBB) - -#Threading Framework -- temporary decision for ARM-s instead of TBB -if (NOT HAVE_TBB) - file(GLOB THREADING_FRAMEWORK_HEADER "${CMAKE_SOURCE_DIR}/modules/core/include/opencv2/core/threading_framework.hpp") - file(GLOB THREADING_FRAMEWORK_SOURCE "${CMAKE_SOURCE_DIR}/modules/core/src/threading_framework.cpp") - if(THREADING_FRAMEWORK_HEADER AND THREADING_FRAMEWORK_SOURCE) - set(HAVE_THREADING_FRAMEWORK 1) - endif() -endif() - -############################ Intel IPP ############################# -set(IPP_FOUND) - -if(WITH_IPP) - include(OpenCVFindIPP.cmake) -endif() - -if(IPP_FOUND) - add_definitions(-DHAVE_IPP) - include_directories(${IPP_INCLUDE_DIRS}) - link_directories(${IPP_LIBRARY_DIRS}) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_LIBRARIES}) -endif() - - -############################### CUDA ################################ - -if(WITH_CUDA) - find_package(CUDA 4.0) - - if(CUDA_FOUND) - set(HAVE_CUDA 1) - message(STATUS "CUDA detected: " ${CUDA_VERSION}) - - set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") - set(CUDA_ARCH_PTX "1.1 1.3" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") - - string(REGEX REPLACE "\\." "" ARCH_BIN_NO_POINTS "${CUDA_ARCH_BIN}") - string(REGEX REPLACE "\\." "" ARCH_PTX_NO_POINTS "${CUDA_ARCH_PTX}") - - # Ckeck if user specified 1.0 compute capability: we don't support it - string(REGEX MATCH "1.0" HAS_ARCH_10 "${CUDA_ARCH_BIN} ${CUDA_ARCH_PTX}") - set(CUDA_ARCH_BIN_OR_PTX_10 0) - if(NOT ${HAS_ARCH_10} STREQUAL "") - set(CUDA_ARCH_BIN_OR_PTX_10 1) - endif() - - # NVCC flags to be set - set(NVCC_FLAGS_EXTRA "") - - # These vars will be passed into the templates - set(OPENCV_CUDA_ARCH_BIN "") - set(OPENCV_CUDA_ARCH_PTX "") - set(OPENCV_CUDA_ARCH_FEATURES "") - - # Tell NVCC to add binaries for the specified GPUs - string(REGEX MATCHALL "[0-9()]+" ARCH_LIST "${ARCH_BIN_NO_POINTS}") - foreach(ARCH IN LISTS ARCH_LIST) - if (ARCH MATCHES "([0-9]+)\\(([0-9]+)\\)") - # User explicitly specified PTX for the concrete BIN - set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1}) - set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${CMAKE_MATCH_1}") - set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${CMAKE_MATCH_2}") - else() - # User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN - set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=sm_${ARCH}) - set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${ARCH}") - set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}") - endif() - endforeach() - - # Tell NVCC to add PTX intermediate code for the specified architectures - string(REGEX MATCHALL "[0-9]+" ARCH_LIST "${ARCH_PTX_NO_POINTS}") - foreach(ARCH IN LISTS ARCH_LIST) - set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=compute_${ARCH}) - set(OPENCV_CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX} ${ARCH}") - set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}") - endforeach() - - # These vars will be processed in other scripts - set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${NVCC_FLAGS_EXTRA}) - set(OpenCV_CUDA_CC "${NVCC_FLAGS_EXTRA}") - - message(STATUS "CUDA NVCC flags: ${CUDA_NVCC_FLAGS}") - else() - unset(CUDA_ARCH_BIN CACHE) - unset(CUDA_ARCH_PTX CACHE) - endif() -endif() - - -############################### VideoInput ################################ - -if (WIN32 AND WITH_VIDEOINPUT) - if(CMAKE_CXX_COMPILER MATCHES "dw2") - else() - if(NOT MINGW64) - set(HAVE_VIDEOINPUT 1) - endif() - endif() -endif() - -############################### OpenNI ################################ -set(HAVE_OPENNI FALSE) -set(HAVE_OPENNI_PRIME_SENSOR_MODULE FALSE) - -if(WITH_OPENNI) - include(OpenCVFindOpenNI.cmake) -endif() - -############################## Eigen ############################## - -if(WITH_EIGEN) - find_path(EIGEN_INCLUDE_PATH "Eigen/Core" - PATHS "/usr/local/include/eigen2" "/opt/include/eigen2" "/usr/include/eigen2" - "/usr/local/include/eigen3" "/opt/include/eigen3" "/usr/include/eigen3" - DOC "The path to Eigen2/Eigen3 headers") - if(EIGEN_INCLUDE_PATH) - include_directories(${EIGEN_INCLUDE_PATH}) - set(HAVE_EIGEN 1) - endif() -endif() - - -################## Extra HighGUI libs on Windows ################### - -if(WIN32) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32) - - if (MSVC) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32) - if (NOT BUILD_SHARED_LIBS) - if (MSVC64) - if(HAVE_VIDEOINPUT) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${CMAKE_SOURCE_DIR}/3rdparty/lib/videoInput64.lib strmiids) - endif() - elseif (MSVC) - if(HAVE_VIDEOINPUT) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${CMAKE_SOURCE_DIR}/3rdparty/lib/videoInput.lib strmiids) - endif() - endif() - endif() - endif() - - if(MINGW) - if(MINGW64) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} msvfw32 avifil32 avicap32 winmm) - if(HAVE_VIDEOINPUT) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} videoInput64 strmiids) - endif() - else() - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32 winmm) - if(HAVE_VIDEOINPUT) - set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} videoInput strmiids) - endif() - endif() - endif() -endif() - - - -################## Reference Manual ################## -set(BUILD_DOCS ON CACHE BOOL "Build OpenCV Reference Manual") - - -################### DOXYGEN ############### - -#find_package(Doxygen) -# -#if(DOXYGEN_FOUND) -# set(BUILD_DOXYGEN_DOCS ON CACHE BOOL "Generate HTML docs using Doxygen") -#endif() - - -# ---------------------------------------------------------------------------- -# UPDATE CONFIG FILES & SCRIPTS: -# -# CONFIGURE_FILE(InputFile OutputFile [COPYONLY] [ESCAPE_QUOTES] [@ONLY]) -# If @ONLY is specified, only variables of the form @VAR@ will be -# replaces and ${VAR} will be ignored. -# -# A directory will be created for each platform so the "cvconfig.h" file is -# not overwritten if cmake generates code in the same path. -# ---------------------------------------------------------------------------- -add_definitions(-DHAVE_CVCONFIG_H) - -set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h") - -message(STATUS "Parsing 'cvconfig.h.cmake'") -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cvconfig.h.cmake" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h") - - -# --------------------------------------------------------------------------- -# The C+//0 include & link directories: -# --------------------------------------------------------------------------- -include_directories("." - "${OPENCV_CONFIG_FILE_INCLUDE_DIR}" - "${CMAKE_CURRENT_SOURCE_DIR}/include" - "${CMAKE_CURRENT_SOURCE_DIR}/include/opencv" - ) - - -# ---------------------------------------------------------------------------- -# Set the maximum level of warnings: -# ---------------------------------------------------------------------------- -# Should be set to true for development -set(OPENCV_WARNINGS_ARE_ERRORS OFF CACHE BOOL "Treat warnings as errors") - -set(EXTRA_C_FLAGS "") -set(EXTRA_C_FLAGS_RELEASE "") -set(EXTRA_C_FLAGS_DEBUG "") -set(EXTRA_EXE_LINKER_FLAGS "") -set(EXTRA_EXE_LINKER_FLAGS_RELEASE "") -set(EXTRA_EXE_LINKER_FLAGS_DEBUG "") - -if(MSVC) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS") - # 64-bit portability warnings, in MSVC8 - if(MSVC80) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Wp64") - - endif() - #if(MSVC90) - # set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _BIND_TO_CURRENT_CRT_VERSION=1 /D _BIND_TO_CURRENT_VCLIBS_VERSION=1") - #endif() - - set(EXTRA_EXE_LINKER_FLAGS_RELEASE "${EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug") - - #if(ENABLE_OPENMP) - # set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /openmp") - #endif() - - # Remove unreferenced functions: function level linking - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Gy") - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Zi") -endif() - -if(CMAKE_COMPILER_IS_GNUCXX) - - # High level of warnings. - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall") - - # The -Wno-long-long is required in 64bit systems when including sytem headers. - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long") - endif() - if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long") - endif() - - # We need pthread's - if(UNIX) - if(NOT ANDROID) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -pthread") - endif() - endif() - - if(OPENCV_WARNINGS_ARE_ERRORS) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror") - endif() - - if(X86) - if(NOT MINGW64) - if(NOT X86_64) - if(NOT APPLE) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -march=i686") - endif() - endif() - endif() - endif() - - # Other optimizations - if(USE_OMIT_FRAME_POINTER) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fomit-frame-pointer") - endif() - if(USE_O2) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O2") - endif() - if(USE_O3) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O3") - endif() - if(USE_FAST_MATH) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -ffast-math") - endif() - if(ENABLE_POWERPC) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mcpu=G3 -mtune=G5") - endif() - if(ENABLE_SSE) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse") - endif() - if(ENABLE_SSE2) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse2") - endif() - # SSE3 and further should be disabled under MingW because it generates compiler errors - if(NOT MINGW) - if(ENABLE_SSE3) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3") - endif() - - if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 402) - set(HAVE_GCC43_OR_NEWER 1) - endif() - if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 401) - set(HAVE_GCC42_OR_NEWER 1) - endif() - - if(HAVE_GCC43_OR_NEWER OR APPLE) - if(ENABLE_SSSE3) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mssse3") - endif() - if(HAVE_GCC42_OR_NEWER) - if(ENABLE_SSE41) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.1") - endif() - if(ENABLE_SSE42) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.2") - endif() - endif() - endif() - endif() - - if(X86 OR X86_64) - if(NOT APPLE) - if(${CMAKE_SIZEOF_VOID_P} EQUAL 4) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mfpmath=387") - endif() - endif() - endif() - - # Profiling? - if(ENABLE_PROFILING) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -pg -g") - else() - # Remove unreferenced functions: function level linking - if(NOT APPLE) - set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -ffunction-sections") - endif() - endif() - - # Parallel mode - #if(ENABLE_OPENMP) - # set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -D_GLIBCXX_PARALLEL -fopenmp") - # set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} gomp) - #endif() - - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG") - set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -O0 -ggdb3 -DDEBUG -D_DEBUG") - -endif() - -if(MSVC) - if(ENABLE_SSE) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE") - endif() - if(ENABLE_SSE2) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE2") - endif() - if(ENABLE_SSE3) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE3") - endif() - if(ENABLE_SSE4_1) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE4.1") - endif() - if (ENABLE_SSE OR ENABLE_SSE2 OR ENABLE_SSE3 OR ENABLE_SSE4_1) - set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Oi") - endif() -endif() - -# Extra link libs if the user selects building static libs: -IF(NOT BUILD_SHARED_LIBS) - if(CMAKE_COMPILER_IS_GNUCXX) - set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} stdc++) - endif() -endif() - - -# Add user supplied extra options (optimization, etc...) -# ========================================================== -set(OPENCV_EXTRA_C_FLAGS "" CACHE STRING "Extra compiler options") -set(OPENCV_EXTRA_C_FLAGS_RELEASE "" CACHE STRING "Extra compiler options for Release build") -set(OPENCV_EXTRA_C_FLAGS_DEBUG "" CACHE STRING "Extra compiler options for Debug build") -set(OPENCV_EXTRA_EXE_LINKER_FLAGS "" CACHE STRING "Extra linker flags" FORCE) -set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "Extra linker flags for Release build" FORCE) -set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "Extra linker flags for Debug build" FORCE) - -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}") -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}") -set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}") -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}") -set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}") - -# In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release: -if (${CMAKE_GENERATOR} MATCHES ".*Makefiles") - if("${CMAKE_BUILD_TYPE}" STREQUAL "") - set(CMAKE_BUILD_TYPE Release) - endif() -endif() - -if (WIN32 AND MSVC) - # avoid warnings from MSVC about overriding the /W* option - # we replace /W3 with /W4 only for C++ files, - # since all the 3rd-party libraries OpenCV uses are in C, - # and we do not care about their warnings. - string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - - # allow extern "C" functions throw exceptions - string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") - string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") - string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") - string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - - string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") - string(REPLACE "/Zm1000" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") -endif() - -if("${CMAKE_CONFIGURE_LDFLAGS}") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_CONFIGURE_LDFLAGS}") -endif("${CMAKE_CONFIGURE_LDFLAGS}") - - -# ---------------------------------------------------------------------------- -# PROCESS SUBDIRECTORIES: -# ---------------------------------------------------------------------------- -# Save libs and executables in the same place -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" ) - -if(WIN32) -set(OPENCV_DOC_INSTALL_PATH doc) -else() -set(OPENCV_DOC_INSTALL_PATH share/opencv/doc) -endif() - - -# -------------------------------------------------------------------------------------------- -# Installation for CMake Module: OpenCVConfig.cmake -# Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install" -# Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use with "make install" -# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages -# ------------------------------------------------------------------------------------------- - -# ------------------------------------------------------------------------------------------- -# Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install" -# ------------------------------------------------------------------------------------------- - -# Name of libraries is: libcv.so.1.1.0, etc... -# OPENCV_DLLVERSION must be set to "110", etc.. -# Already done above. - -# Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories: -set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${CMAKE_CURRENT_SOURCE_DIR}/include\" \"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"") -set(CMAKE_BASE_INCLUDE_DIRS_CONFIGCMAKE "\"${CMAKE_CURRENT_SOURCE_DIR}\"") - -set(CMAKE_LIB_DIRS_CONFIGCMAKE "${LIBRARY_OUTPUT_PATH}") - -if( HAVE_ANDROID_NATIVE_CAMERA ) - set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_LIB_DIRS_CONFIGCMAKE} ${NativeCamera_LIB_DIR}) -endif() - -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY) - -# -------------------------------------------------------------------------------------------- -# Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install" -# ------------------------------------------------------------------------------------------- -# Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories: - -set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/include/opencv" "${CMAKE_INSTALL_PREFIX}/include") -set(CMAKE_BASE_INCLUDE_DIRS_CONFIGCMAKE "\"\"") - -set(CMAKE_LIB_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/lib") - -exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/unix-install/\"" OUTPUT_VARIABLE RET_VAL) -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" IMMEDIATE @ONLY) - -if(UNIX) - # For a command "FIND_PACKAGE(FOO)", CMake will look at the directory /usr/share|lib/FOO/FOOConfig.cmake, so: - install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake DESTINATION share/opencv/) -endif() - -# -------------------------------------------------------------------------------------------- -# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages -# ------------------------------------------------------------------------------------------- -if(WIN32) - # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories: - # support for 3rdparty libraries. - # This will expand to, for example, /OpenCV 1.1.0/include - set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/include\" - \"\${THIS_OPENCV_CONFIG_PATH}/include/opencv\" - \"\${THIS_OPENCV_CONFIG_PATH}/3rdparty/include\"") - - set(CMAKE_BASE_INCLUDE_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}\"") - - # This will expand to, for example, /OpenCV 1.1.0/lib - # support for 3rdparty libraries. - set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/lib\" - \"\${THIS_OPENCV_CONFIG_PATH}/3rdparty/lib\"") - - #exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/win-install/\"") - exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"" OUTPUT_VARIABLE RET_VAL) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY) - # Install the OpenCVConfig.cmake file which has the right paths pointing to the install directory - install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/") - - # if videoInput support is enabled (which is by default on WIN32) copy the static library required to the installation path - # DESTINATION could also be "${CMAKE_INSTALL_PREFIX}/lib") to simplify dev environment setup of client applications - IF(HAVE_VIDEOINPUT) - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/lib/videoInput.lib" "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/lib/videoInput64.lib" - DESTINATION "${CMAKE_INSTALL_PREFIX}/3rdparty/lib") - - install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/include/videoInput.h" DESTINATION "${CMAKE_INSTALL_PREFIX}/3rdparty/include") - ENDIF() - - # Add the OpenCV configuration header to the install path - # Useful for instance if a client application checks against the features OpenCV has been compiled with - install(FILES "${CMAKE_BINARY_DIR}/cvconfig.h" DESTINATION "${CMAKE_INSTALL_PREFIX}/include") -endif() - - -# -------------------------------------------------------------------------------------------- -# Part 2/2: ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install" -# prefix=/usr -# exec_prefix=${prefix} -# libdir=${exec_prefix}/lib -# includedir=${prefix}/include/opencv -# ------------------------------------------------------------------------------------------- -set(prefix ${CMAKE_INSTALL_PREFIX}) -set(exec_prefix "\${prefix}") -set(libdir "\${exec_prefix}/lib") -set(includedir "\${prefix}/include") -set(VERSION ${OPENCV_VERSION}) - -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/opencv.pc.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/opencv.pc" @ONLY IMMEDIATE) - -if(UNIX) - install(FILES ${CMAKE_BINARY_DIR}/unix-install/opencv.pc DESTINATION lib/pkgconfig) -endif() - - -# ---------------------------------------------------------------------------- -# Uninstall target, for "make uninstall" -# ---------------------------------------------------------------------------- -CONFIGURE_FILE( - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" - "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" - IMMEDIATE @ONLY) - -ADD_CUSTOM_TARGET(uninstall - "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") - - -# ---------------------------------------------------------------------------- -# CPack target -# ---------------------------------------------------------------------------- - -set(BUILD_PACKAGE OFF CACHE BOOL "Build a installer with the SDK") - -if(BUILD_PACKAGE) - - configure_file( - Package.cmake.in - ${CMAKE_BINARY_DIR}/.cpack/Package.cmake - @ONLY - ) - - include(${CMAKE_BINARY_DIR}/.cpack/Package.cmake) - - set(root_files README) - - file(GLOB root_src_files *.in *.cmake CMakeLists.txt) - - if (NOT WIN32) - install(FILES ${root_files} - DESTINATION ${OPENCV_DOC_INSTALL_PATH} - COMPONENT main) - else() - install(FILES ${root_files} - DESTINATION "." - COMPONENT main) - install(FILES ${root_src_files} - DESTINATION "." - COMPONENT src) - # Add the "win-install/OpenCVConfig.cmake" file to the "main" install component - install(FILES - "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" - DESTINATION "." - COMPONENT main - ) - install(FILES - "include/CMakeLists.txt" - DESTINATION "include/" - COMPONENT src - ) - - if(CMAKE_INSTALL_DEBUG_LIBRARIES) - foreach(m calib3d core contrib features2d ffmpeg flann gpu highgui imgproc legacy ml objdetect video) - install(FILES ${EXECUTABLE_OUTPUT_PATH}/Debug/opencv_${m}${OPENCV_DLLVERSION}d.dll - DESTINATION bin COMPONENT main) - install(FILES ${LIBRARY_OUTPUT_PATH}/Debug/opencv_${m}${OPENCV_DLLVERSION}d.lib - DESTINATION lib COMPONENT main) - endforeach() - endif() - - install(DIRECTORY data samples DESTINATION "." COMPONENT main PATTERN ".svn" EXCLUDE) - install(DIRECTORY 3rdparty android modules tests DESTINATION "." COMPONENT src PATTERN ".svn" EXCLUDE) - #install(DIRECTORY doc/ DESTINATION doc COMPONENT src FILES_MATCHING PATTERN "*.tex") - #install(DIRECTORY doc/pics DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE) - #install(DIRECTORY doc/latex2sphinx DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE) - - endif() -endif() - - -#----------------------------------- -# Solution folders: -#----------------------------------- - -if(${CMAKE_VERSION} VERSION_GREATER "2.8.0") - set(ENABLE_SOLUTION_FOLDERS OFF CACHE BOOL "Solution folder in Visual Studio or in other IDEs") -endif() - -if(ENABLE_SOLUTION_FOLDERS) - set_property(GLOBAL PROPERTY USE_FOLDERS ON) - set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets") -endif() - -#----------------------------------- -# Subdirectories: -#----------------------------------- -add_subdirectory(include) -add_subdirectory(modules) - -if(BUILD_DOCS) - include(OpenCVFindLATEX.cmake REQUIRED) - - if(PDFLATEX_COMPILER) - message(STATUS "PDF LaTeX found!") - endif() -endif() - -add_subdirectory(doc) -add_subdirectory(data) - -if(BUILD_EXAMPLES OR INSTALL_PYTHON_EXAMPLES) - add_subdirectory(samples) -endif() - -#if(BUILD_TESTS) -# enable_testing() -# add_subdirectory(tests) -#endif() - -add_subdirectory(3rdparty) - - -# ---------------------------------------------------------------------------- -# Summary: -# ---------------------------------------------------------------------------- -message(STATUS "") -message(STATUS "General configuration for opencv ${OPENCV_VERSION} =====================================") -message(STATUS "") -message(STATUS " Built as dynamic libs?: ${BUILD_SHARED_LIBS}") -message(STATUS " Compiler: ${CMAKE_COMPILER}") -message(STATUS " C++ flags (Release): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") -message(STATUS " C++ flags (Debug): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") -if(WIN32) -message(STATUS " Linker flags (Release): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -message(STATUS " Linker flags (Debug): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG}") -else() -message(STATUS " Linker flags (Release): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -message(STATUS " Linker flags (Debug): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}") -endif() - -#YV -message(STATUS "") -message(STATUS " GUI: ") - -if (HAVE_QT) - message(STATUS " QT 4.x: ${HAVE_QT}") - message(STATUS " QT OpenGL support: ${HAVE_QT_OPENGL}") -else() - if(WIN32) - message(STATUS " Win32 UI: YES") - else() - if(APPLE) - if(WITH_CARBON) - message(STATUS " Carbon: YES") - else() - message(STATUS " Cocoa: YES") - endif() - else() - message(STATUS " GTK+ 2.x: ${HAVE_GTK}") - message(STATUS " GThread: ${HAVE_GTHREAD}") - endif() - endif() -endif() - -message(STATUS "") -message(STATUS " Media I/O: ") -if(ZLIB_FOUND) -message(STATUS " ZLib: ${ZLIB_FOUND}") -else() -message(STATUS " ZLib: build") -endif() - -if(NOT WITH_JPEG OR JPEG_FOUND) -message(STATUS " JPEG: ${JPEG_FOUND}") -else() -message(STATUS " JPEG: build") -endif() - -if(NOT WITH_PNG OR PNG_FOUND) -message(STATUS " PNG: ${PNG_FOUND}") -else() -message(STATUS " PNG: build") -endif() - -if(NOT WITH_TIFF OR TIFF_FOUND) -message(STATUS " TIFF: ${TIFF_FOUND}") -else() -message(STATUS " TIFF: build") -endif() - -if(NOT WITH_JASPER OR JASPER_FOUND) -message(STATUS " JPEG 2000: ${JASPER_FOUND}") -else() -message(STATUS " JPEG 2000: build") -endif() - -if(WITH_OPENEXR AND OPENEXR_FOUND) -message(STATUS " OpenEXR: YES") -else() -message(STATUS " OpenEXR: NO") -endif() - -if(NOT HAVE_OPENNI OR HAVE_OPENNI_PRIME_SENSOR_MODULE) -message(STATUS " OpenNI: ${HAVE_OPENNI}") -else() -message(STATUS " OpenNI: ${HAVE_OPENNI} (WARNING: PrimeSensor Modules for OpenNI are not installed (not found in OPENNI_PRIME_SENSOR_MODULE_BIN_DIR).)") -endif() - -if(UNIX AND NOT APPLE) -message(STATUS "") -message(STATUS " Video I/O: ") -message(STATUS " DC1394 1.x: ${HAVE_DC1394}") -message(STATUS " DC1394 2.x: ${HAVE_DC1394_2}") -message(STATUS " FFMPEG: ${HAVE_FFMPEG}") -message(STATUS " codec: ${HAVE_FFMPEG_CODEC}") -message(STATUS " format: ${HAVE_FFMPEG_FORMAT}") -message(STATUS " util: ${HAVE_FFMPEG_UTIL}") -message(STATUS " swscale: ${HAVE_FFMPEG_SWSCALE}") -message(STATUS " gentoo-style: ${HAVE_GENTOO_FFMPEG}") -message(STATUS " GStreamer: ${HAVE_GSTREAMER}") -message(STATUS " UniCap: ${HAVE_UNICAP}") -message(STATUS " PvAPI: ${HAVE_PVAPI}") -if(HAVE_LIBV4L) -message(STATUS " V4L/V4L2: Using libv4l") -else() -message(STATUS " V4L/V4L2: ${HAVE_CAMV4L}/${HAVE_CAMV4L2}") -endif() -message(STATUS " Xine: ${HAVE_XINE}") -if(ANDROID) -message(STATUS " AndroidNativeCamera: ${HAVE_ANDROID_NATIVE_CAMERA}") -endif() -endif() #if(UNIX AND NOT APPLE) - -if(APPLE) -message(STATUS "") -if(WITH_QUICKTIME) -message(STATUS " Video I/O: QuickTime") -else() -message(STATUS " Video I/O: QTKit") -endif() -endif() - -if(WIN32) -message(STATUS "") -message(STATUS " Video I/O: ") -if(HAVE_VIDEOINPUT) -message(STATUS " VideoInput: YES") -else() -message(STATUS " VideoInput: NO") -endif() -endif() - -message(STATUS "") -message(STATUS " Interfaces: ") -message(STATUS " Python: ${BUILD_NEW_PYTHON_SUPPORT}") -message(STATUS " Python interpreter: ${PYTHON_EXECUTABLE}") -if (PYTHON_USE_NUMPY) -message(STATUS " Python numpy: YES") -else() -message(STATUS " Python numpy: NO (Python interface will not cover OpenCV 2.x API)") -endif() - -if(WITH_IPP AND IPP_FOUND) -message(STATUS " Use IPP: ${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]") -message(STATUS " at: ${IPP_ROOT_DIR}") -elseif(WITH_IPP AND NOT IPP_FOUND) -message(STATUS " Use IPP: IPP not found") -else() -message(STATUS " Use IPP: NO") -endif() - -if(HAVE_TBB) -message(STATUS " Use TBB: YES") -else() -message(STATUS " Use TBB: NO") -if(HAVE_THREADING_FRAMEWORK) -message(STATUS " Use ThreadingFramework: YES") -else() -message(STATUS " Use ThreadingFramework: NO") -endif() -endif() - -if (HAVE_CUDA) -message(STATUS " Use Cuda: YES") -else() -message(STATUS " Use Cuda: NO") -endif() - -if(HAVE_EIGEN) -message(STATUS " Use Eigen: YES") -else() -message(STATUS " Use Eigen: NO") -endif() - -message(STATUS "") -message(STATUS " Documentation: ") - -if(BUILD_DOCS AND PDFLATEX_COMPILER AND HAVE_SPHINX) -message(STATUS " Build Documentation: YES") -else() -message(STATUS " Build Documentation: NO") -endif() - -#if(BUILD_DOXYGEN_DOCS AND DOXYGEN_FOUND) -#message(STATUS " Doxygen HTMLs YES") -#else() -#message(STATUS " Doxygen HTMLs NO") -#endif() - -message(STATUS "") -message(STATUS " Install path: ${CMAKE_INSTALL_PREFIX}") -message(STATUS "") -message(STATUS " cvconfig.h is in: ${OPENCV_CONFIG_FILE_INCLUDE_DIR}") -message(STATUS "-----------------------------------------------------------------") -message(STATUS "") - -#---------------------------------------------------------------------------- -# Generate the OpenCVConfig.cmake file for unix -# installation in CMAKE_INSTALL_PREFIX -#---------------------------------------------------------------------------- +# ---------------------------------------------------------------------------- +# Root CMake file for OpenCV +# +# From the off-tree build directory, invoke: +# $ cmake +# +# +# - OCT-2008: Initial version +# +# ---------------------------------------------------------------------------- + +set(OPENCV_SOURCE_DIR ${CMAKE_SOURCE_DIR}) + +set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true) + +# Add these standard paths to the search paths for FIND_LIBRARY +# to find libraries from these locations first +if(UNIX) + set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /lib /usr/lib) +endif() + + +# 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() + +set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + +set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE) +set(CMAKE_C_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) +set(CMAKE_C_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) +set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) +set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) +set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) +set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) +set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) +set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE) +set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE) +set(CMAKE_VERBOSE OFF CACHE BOOL "Verbose mode") + +if(CMAKE_VERBOSE) + set(CMAKE_VERBOSE_MAKEFILE 1) +endif() + + +project(OpenCV) + + +cmake_minimum_required(VERSION 2.4) + + +if(MSVC) + set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE) +endif() + + +# -------------------------------------------------------------- +# 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) + cmake_policy(SET CMP0003 NEW) +endif() + + +# ---------------------------------------------------------------------------- +# Current version number: +# ---------------------------------------------------------------------------- +set(OPENCV_VERSION "2.2.9") + +string(REGEX MATCHALL "[0-9]" OPENCV_VERSION_PARTS "${OPENCV_VERSION}") + +list(GET OPENCV_VERSION_PARTS 0 OPENCV_VERSION_MAJOR) +list(GET OPENCV_VERSION_PARTS 1 OPENCV_VERSION_MINOR) +list(GET OPENCV_VERSION_PARTS 2 OPENCV_VERSION_PATCH) + +set(OPENCV_SOVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}") + +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 "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}") + set(OPENCV_DLLVERSION "") + set(OPENCV_DEBUG_POSTFIX) +endif() + + +# ---------------------------------------------------------------------------- +# Build static or dynamic libs? +# Default: dynamic libraries: +# ---------------------------------------------------------------------------- +set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)") + +# ---------------------------------------------------------------------------- +# Use statically or dynamically linked CRT? +# Default: dynamic +# ---------------------------------------------------------------------------- +if(MSVC AND NOT BUILD_SHARED_LIBS) + option (BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT" OFF) +endif() + +if(MSVC) + if(BUILD_WITH_STATIC_CRT) + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MD") + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MD") + + if(${flag_var} MATCHES "/MDd") + string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MDd") + endforeach(flag_var) + + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib") + + set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd.lib") + + else(BUILD_WITH_STATIC_CRT) + foreach(flag_var + CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if(${flag_var} MATCHES "/MT") + string(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MT") + + if(${flag_var} MATCHES "/MTd") + string(REGEX REPLACE "/MTd" "/MDd" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MTd") + endforeach(flag_var) + + endif(BUILD_WITH_STATIC_CRT) +endif(MSVC) + + + +# ---------------------------------------------------------------------------- +# Variables for cvconfig.h.cmake +# ---------------------------------------------------------------------------- +set(PACKAGE "opencv") +set(PACKAGE_BUGREPORT "opencvlibrary-devel@lists.sourceforge.net") +set(PACKAGE_NAME "opencv") +set(PACKAGE_STRING "${PACKAGE} ${OPENCV_VERSION}") +set(PACKAGE_TARNAME "${PACKAGE}") +set(PACKAGE_VERSION "${OPENCV_VERSION}") + + +# ---------------------------------------------------------------------------- +# Autodetect if we are in a SVN repository +# ---------------------------------------------------------------------------- +find_program(SVNVERSION_PATH svnversion) +mark_as_advanced(force SVNVERSION_PATH) +if(SVNVERSION_PATH) + message(STATUS "Extracting svn version, please wait...") + execute_process(COMMAND ${SVNVERSION_PATH} -n ${OPENCV_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT) + + if(SVNVERSION_RESULT MATCHES "exported") + # This is NOT a svn repository: + set(OPENCV_SVNVERSION "") + else() + set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}") + endif() + + message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}") +else() + # We don't have svnversion: + set(OPENCV_SVNVERSION "") +endif() + +# ---------------------------------------------------------------------------- +# Detect Microsoft compiler: +# ---------------------------------------------------------------------------- +if(CMAKE_CL_64) + set(MSVC64 1) +endif() + +# ---------------------------------------------------------------------------- +# Detect GNU version: +# ---------------------------------------------------------------------------- +if(CMAKE_COMPILER_IS_GNUCXX) + execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version + OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL + OUTPUT_STRIP_TRAILING_WHITESPACE) + + # Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)" + # Look for the version number + string(REGEX MATCH "[0-9].[0-9].[0-9]" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}") + + # Split the three parts: + string(REGEX MATCHALL "[0-9]" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}") + + list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR) + list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR) + + set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR}) + math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}") + message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})") + + if(WIN32) + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine + OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "64") + set(MINGW64 1) + endif() + endif() + +endif() + + +# ---------------------------------------------------------------------------- +# Detect Intel ICC compiler -- for -fPIC in 3rdparty ( UNIX ONLY ): +# see include/opencv/cxtypes.h file for related ICC & CV_ICC defines. +# NOTE: The system needs to determine if the '-fPIC' option needs to be added +# for the 3rdparty static libs being compiled. The CMakeLists.txt files +# in 3rdparty use the CV_ICC definition being set here to determine if +# the -fPIC flag should be used. +# ---------------------------------------------------------------------------- +if(UNIX) + if (__ICL) + set(CV_ICC __ICL) + elseif(__ICC) + set(CV_ICC __ICC) + elseif(__ECL) + set(CV_ICC __ECL) + elseif(__ECC) + set(CV_ICC __ECC) + elseif(__INTEL_COMPILER) + set(CV_ICC __INTEL_COMPILER) + elseif(CMAKE_C_COMPILER MATCHES "icc") + set(CV_ICC icc_matches_c_compiler) + endif() +endif() + + +# ---------------------------------------------------------------------------- +# CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC.. +# ---------------------------------------------------------------------------- + +# Build/install (or not) some apps: +# =================================================== +set(BUILD_EXAMPLES OFF CACHE BOOL "Build all examples") +set(INSTALL_C_EXAMPLES OFF CACHE BOOL "Install C examples") +set(INSTALL_PYTHON_EXAMPLES OFF CACHE BOOL "Install Python examples") + +# Build tests: +# =================================================== +set(BUILD_TESTS ON CACHE BOOL "Build tests") + +# Build 3rdparty libraries under unix +# =================================================== +if(WIN32) + set(OPENCV_BUILD_3RDPARTY_LIBS TRUE CACHE BOOL "Build 3rd party libraries") +else() + set(OPENCV_BUILD_3RDPARTY_LIBS FALSE CACHE BOOL "Build 3rd party libraries") +endif() + +include(OpenCVPCHSupport.cmake REQUIRED) +include(OpenCVModule.cmake REQUIRED) + +if(PCHSupport_FOUND) + SET(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Use precompiled headers") +else() + SET(USE_PRECOMPILED_HEADERS OFF CACHE BOOL "Use precompiled headers" FORCE) +endif() + +if(UNIX) + include(OpenCVFindPkgConfig.cmake OPTIONAL) + include(CheckFunctionExists) + include(CheckIncludeFile) +endif() + +#if(MSVC) +# set(DEFAULT_ENABLE_OPENMP ON) +#else() +# set(DEFAULT_ENABLE_OPENMP OFF) +#endif() +#set(ENABLE_OPENMP ${DEFAULT_ENABLE_OPENMP} CACHE BOOL "") + +if(CMAKE_COMPILER_IS_GNUCXX) + set(ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)") + set(USE_OMIT_FRAME_POINTER ON CACHE BOOL "Enable -fomit-frame-pointer for GCC") + + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64*) + set(X86_64 1) + endif() + + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*|i386*|x86*) + set(X86 1) + endif() + + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc*) + set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC") + set(ENABLE_POWERPC ON CACHE BOOL "Enable PowerPC for GCC") + endif () + + if(X86 OR X86_64) + # enable everything, since the available set of instructions is checked at runtime + set(USE_O3 ON CACHE BOOL "Enable -O3") + set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math") + set(ENABLE_SSE ON CACHE BOOL "Enable SSE instructions") + set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 instructions") + set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 instructions") + set(ENABLE_SSSE3 OFF CACHE BOOL "Enable SSSE3 instructions") + set(ENABLE_SSE41 OFF CACHE BOOL "Enable SSE4.1 instructions") + set(ENABLE_SSE42 OFF CACHE BOOL "Enable SSE4.2 instructions") + endif() +endif() + +if(MSVC) + set(ENABLE_SSE ON CACHE BOOL "Enable SSE instructions for MSVC") + set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 instructions for MSVC") + if(CMAKE_C_COMPILER MATCHES "icc") + set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 instructions for ICC") + set(ENABLE_SSE4_1 OFF CACHE BOOL "Enable SSE4.1 instructions for ICC") + endif() +endif() + +# allow fine grained control over which libraries not to link, even if +# they are available on the system +# ==================================================================== +set(WITH_PNG ON CACHE BOOL "Include PNG support") +set(WITH_JPEG ON CACHE BOOL "Include JPEG support") +set(WITH_JASPER ON CACHE BOOL "Include JPEG2K support") +set(WITH_TIFF ON CACHE BOOL "Include TIFF support") +set(WITH_OPENEXR ON CACHE BOOL "Include ILM support via OpenEXR") + +if(UNIX) + set(WITH_FFMPEG ON CACHE BOOL "Include FFMPEG support") + if(NOT APPLE) + set(WITH_UNICAP OFF CACHE BOOL "Include Unicap support (GPL)") + set(WITH_GTK ON CACHE BOOL "Include GTK support") + set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support") + set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support") + set(WITH_XINE OFF CACHE BOOL "Include Xine support (GPL)") + endif() + set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support") + set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support") +endif() + +if(APPLE) + set(WITH_CARBON OFF CACHE BOOL "Use Carbon for UI instead of Cocoa") + set(WITH_QUICKTIME OFF CACHE BOOL "Use QuickTime for Video I/O insted of QTKit") +endif() + +set(WITH_TBB OFF CACHE BOOL "Include Intel TBB support") +set(WITH_IPP OFF CACHE BOOL "Include Intel IPP support") +set(WITH_EIGEN ON CACHE BOOL "Include Eigen2/Eigen3 support") +set(WITH_CUDA OFF CACHE BOOL "Include NVidia Cuda Runtime support") + +if(WIN32) + set(WITH_VIDEOINPUT ON CACHE BOOL "Enable VideoInput support") +endif() + +set(WITH_OPENNI OFF CACHE BOOL "Include OpenNI support") + +# =================================================== +# Macros that checks if module have been installed. +# After it adds module to build and define +# constants passed as second arg +# =================================================== + +macro(CHECK_MODULE module_name define) + set(${define} 0) + if(PKG_CONFIG_FOUND) + set(ALIAS ALIASOF_${module_name}) + set(ALIAS_FOUND ${ALIAS}_FOUND) + set(ALIAS_INCLUDE_DIRS ${ALIAS}_INCLUDE_DIRS) + set(ALIAS_LIBRARY_DIRS ${ALIAS}_LIBRARY_DIRS) + set(ALIAS_LIBRARIES ${ALIAS}_LIBRARIES) + + PKG_CHECK_MODULES(${ALIAS} ${module_name}) + + if (${ALIAS_FOUND}) + set(${define} 1) + foreach(P "${ALIAS_INCLUDE_DIRS}") + if (${P}) + list(APPEND HIGHGUI_INCLUDE_DIRS ${${P}}) + endif() + endforeach() + + foreach(P "${ALIAS_LIBRARY_DIRS}") + if (${P}) + list(APPEND HIGHGUI_LIBRARY_DIRS ${${P}}) + endif() + endforeach() + + list(APPEND HIGHGUI_LIBRARIES ${${ALIAS_LIBRARIES}}) + endif() + endif() +endmacro() + +if(UNIX) + if(NOT APPLE) + if(WITH_GTK) + CHECK_MODULE(gtk+-2.0 HAVE_GTK) + CHECK_MODULE(gthread-2.0 HAVE_GTHREAD) + 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) + if(HAVE_FFMPEG_SWSCALE OR NOT HAVE_GENTOO_FFMPEG) + set(HAVE_FFMPEG 1) + endif() + endif() + # 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() + + if(NOT OPENCV_BUILD_3RDPARTY_LIBS) + include(FindZLIB) + if(WITH_PNG) + include(FindPNG) + if(PNG_FOUND) + CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/png.h HAVE_PNG_H) + CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/libpng/png.h HAVE_LIBPNG_PNG_H) + endif() + else() + set(PNG_FOUND FALSE) + endif() + if(WITH_TIFF) + include(FindTIFF) + else() + set(TIFF_FOUND FALSE) + endif() + if(WITH_JASPER) + include(FindJasper) + else() + set(JASPER_FOUND FALSE) + endif() + if(WITH_JPEG) + include(FindJPEG) + else() + set(JPEG_FOUND FALSE) + endif() + endif() + + if(NOT APPLE) + 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() + + if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "NetBSD" AND NOT ANDROID) + set(OPENCV_LINKER_LIBS m pthread) + elseif(ANDROID) + set(OPENCV_LINKER_LIBS dl m log) + else() + set(OPENCV_LINKER_LIBS dl m pthread rt) + endif() + else() + add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H) + endif() +endif() + +if(WITH_PNG AND NOT PNG_FOUND) + set(PNG_LIBRARIES libpng) +endif() + +if(WITH_JPEG AND NOT JPEG_FOUND) + set(JPEG_LIBRARIES libjpeg) +endif() + +if(WITH_TIFF AND NOT TIFF_FOUND) + set(TIFF_LIBRARIES libtiff) +endif() + +if(WITH_JASPER AND NOT JASPER_FOUND) + set(JASPER_LIBRARIES libjasper) +endif() + +if (ANDROID) + #android camera support + set(NativeCamera_DIR "${OPENCV_SOURCE_DIR}/android/native-camera/build") + FIND_PACKAGE(NativeCamera QUIET) + if(NativeCamera_FOUND) + set(HAVE_ANDROID_NATIVE_CAMERA TRUE) + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${NativeCamera_LIBS}) + else() + set(HAVE_ANDROID_NATIVE_CAMERA FALSE) + message(STATUS "Could NOT find NativeCamera for Android") + endif() +endif() + +#message(STATUS "Graphic libraries: ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${JASPER_LIBRARIES}") + +if(WITH_OPENEXR) + include(OpenCVFindOpenEXR.cmake) +endif() + +set(BUILD_NEW_PYTHON_SUPPORT ON CACHE BOOL "Build with Python support") + +if(BUILD_NEW_PYTHON_SUPPORT) + find_package(PythonInterp) + find_package(PythonLibs) + + # cmake 2.4 (at least on Ubuntu 8.04 (hardy)) don't define PYTHONLIBS_FOUND + if(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH) + set(PYTHONLIBS_FOUND ON) + endif(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH) + + execute_process(COMMAND ${PYTHON_EXECUTABLE} --version + ERROR_VARIABLE PYTHON_VERSION_FULL + OUTPUT_STRIP_TRAILING_WHITESPACE) + + string(REGEX MATCH "[0-9].[0-9]" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}") + if(UNIX) + set(PYTHON_PLUGIN_INSTALL_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages/opencv) + if(APPLE) + set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages CACHE PATH "Where to install the python packages.") + else() #debian based assumed, install to the dist-packages. + set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/dist-packages CACHE PATH "Where to install the python packages.") + endif() + endif() + if(WIN32) + get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE CACHE) + set(PYTHON_PLUGIN_INSTALL_PATH "${PYTHON_PATH}/Lib/site-packages/opencv") + set(PYTHON_PACKAGES_PATH "${PYTHON_PATH}/Lib/site-packages") + endif() + + # Attempt to discover the NumPy include directory. If this succeeds, build with NumPy + + execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import numpy.distutils; print numpy.distutils.misc_util.get_numpy_include_dirs()[0]" + RESULT_VARIABLE PYTHON_NUMPY_PROCESS + OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS + OUTPUT_STRIP_TRAILING_WHITESPACE) + if(PYTHON_NUMPY_PROCESS EQUAL 0) + set(PYTHON_USE_NUMPY 1) + add_definitions(-D PYTHON_USE_NUMPY=1) + include_directories(AFTER ${PYTHON_NUMPY_INCLUDE_DIRS}) + message(STATUS " Use INCLUDE: ${PYTHON_NUMPY_INCLUDE_DIRS}") + else() + set(PYTHON_USE_NUMPY 0) + endif() + + execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sphinx; print sphinx.__version__" + RESULT_VARIABLE SPHINX_PROCESS + OUTPUT_VARIABLE SPHINX_VERSION + OUTPUT_STRIP_TRAILING_WHITESPACE) + + set(HAVE_SPHINX 0) + if(SPHINX_PROCESS EQUAL 0) + find_program(SPHINX_BUILD sphinx-build) + if(SPHINX_BUILD) + set(HAVE_SPHINX 1) + message(STATUS " Found Sphinx ${SPHINX_VERSION}: ${SPHINX_BUILD}") + endif() + endif() +endif() + +#YV +############################### QT ################################ + +set(WITH_QT OFF CACHE BOOL "Build with Qt Backend support") +set(WITH_QT_OPENGL OFF CACHE BOOL "Add OpenGL extension to Qt") + +set(HAVE_QT 0) +set(HAVE_QT_OPENGL 0) + +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 + + find_package (OpenGL QUIET) + + + #if (NOT WIN32) + if (WITH_QT_OPENGL) + if (QT_QTOPENGL_FOUND AND OPENGL_FOUND) + set(HAVE_QT_OPENGL 1) + add_definitions(-DHAVE_QT_OPENGL) + #link_directories("${OPENGL_LIBRARIES}") + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES}) + endif() + endif() + #endif() + + endif() +endif() + +############################### TBB ################################ + +if (WITH_TBB) + if (UNIX AND NOT APPLE) + PKG_CHECK_MODULES(TBB tbb) + message(STATUS "TBB detected: ${TBBLIB_FOUND}") + + if (TBB_FOUND) + set(HAVE_TBB 1) + if(NOT ${TBB_INCLUDE_DIRS} STREQUAL "") + include_directories(${TBB_INCLUDE_DIRS}) + endif() + link_directories(${TBB_LIBRARY_DIRS}) + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES}) + endif() + endif() + + if (NOT HAVE_TBB) + set(TBB_DEFAULT_INCLUDE_DIRS "/opt/intel/tbb" "/usr/local/include" "/usr/include" "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB" "C:/Program Files (x86)/TBB") + + find_path(TBB_INCLUDE_DIR "tbb/tbb.h" PATHS ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers") + if (TBB_INCLUDE_DIR) + if (UNIX) + set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory") + link_directories("${TBB_LIB_DIR}") + endif() + if (APPLE) + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libtbb.dylib) + elseif (UNIX) + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb) + elseif (WIN32) + if (CMAKE_COMPILER_IS_GNUCXX) + set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory") + link_directories("${TBB_LIB_DIR}") + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb) + else() + get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib" ABSOLUTE) + + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64*) + set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64") + endif() + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*|i386*|i686*) + set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/ia32") + endif() + + if (MSVC80) + set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8") + elseif(MSVC90) + set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9") + elseif(MSVC10) + set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10") + endif() + set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory") + link_directories("${TBB_LIB_DIR}") + endif() + endif() + + set(HAVE_TBB 1) + if(NOT "${TBB_INCLUDE_DIR}" STREQUAL "") + include_directories("${TBB_INCLUDE_DIR}") + endif() + endif() + endif() +endif(WITH_TBB) + +#Threading Framework -- temporary decision for ARM-s instead of TBB +if (NOT HAVE_TBB) + file(GLOB THREADING_FRAMEWORK_HEADER "${OPENCV_SOURCE_DIR}/modules/core/include/opencv2/core/threading_framework.hpp") + file(GLOB THREADING_FRAMEWORK_SOURCE "${OPENCV_SOURCE_DIR}/modules/core/src/threading_framework.cpp") + if(THREADING_FRAMEWORK_HEADER AND THREADING_FRAMEWORK_SOURCE) + set(HAVE_THREADING_FRAMEWORK 1) + endif() +endif() + +############################ Intel IPP ############################# +set(IPP_FOUND) + +if(WITH_IPP) + include(OpenCVFindIPP.cmake) +endif() + +if(IPP_FOUND) + add_definitions(-DHAVE_IPP) + include_directories(${IPP_INCLUDE_DIRS}) + link_directories(${IPP_LIBRARY_DIRS}) + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_LIBRARIES}) +endif() + + +############################### CUDA ################################ + +if(WITH_CUDA) + find_package(CUDA 4.0) + + if(CUDA_FOUND) + set(HAVE_CUDA 1) + message(STATUS "CUDA detected: " ${CUDA_VERSION}) + + set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") + set(CUDA_ARCH_PTX "1.1 1.3" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") + + string(REGEX REPLACE "\\." "" ARCH_BIN_NO_POINTS "${CUDA_ARCH_BIN}") + string(REGEX REPLACE "\\." "" ARCH_PTX_NO_POINTS "${CUDA_ARCH_PTX}") + + # Ckeck if user specified 1.0 compute capability: we don't support it + string(REGEX MATCH "1.0" HAS_ARCH_10 "${CUDA_ARCH_BIN} ${CUDA_ARCH_PTX}") + set(CUDA_ARCH_BIN_OR_PTX_10 0) + if(NOT ${HAS_ARCH_10} STREQUAL "") + set(CUDA_ARCH_BIN_OR_PTX_10 1) + endif() + + # NVCC flags to be set + set(NVCC_FLAGS_EXTRA "") + + # These vars will be passed into the templates + set(OPENCV_CUDA_ARCH_BIN "") + set(OPENCV_CUDA_ARCH_PTX "") + set(OPENCV_CUDA_ARCH_FEATURES "") + + # Tell NVCC to add binaries for the specified GPUs + string(REGEX MATCHALL "[0-9()]+" ARCH_LIST "${ARCH_BIN_NO_POINTS}") + foreach(ARCH IN LISTS ARCH_LIST) + if (ARCH MATCHES "([0-9]+)\\(([0-9]+)\\)") + # User explicitly specified PTX for the concrete BIN + set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1}) + set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${CMAKE_MATCH_1}") + set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${CMAKE_MATCH_2}") + else() + # User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN + set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=sm_${ARCH}) + set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${ARCH}") + set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}") + endif() + endforeach() + + # Tell NVCC to add PTX intermediate code for the specified architectures + string(REGEX MATCHALL "[0-9]+" ARCH_LIST "${ARCH_PTX_NO_POINTS}") + foreach(ARCH IN LISTS ARCH_LIST) + set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=compute_${ARCH}) + set(OPENCV_CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX} ${ARCH}") + set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}") + endforeach() + + # These vars will be processed in other scripts + set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${NVCC_FLAGS_EXTRA}) + set(OpenCV_CUDA_CC "${NVCC_FLAGS_EXTRA}") + + message(STATUS "CUDA NVCC flags: ${CUDA_NVCC_FLAGS}") + else() + unset(CUDA_ARCH_BIN CACHE) + unset(CUDA_ARCH_PTX CACHE) + endif() +endif() + + +############################### VideoInput ################################ + +if (WIN32 AND WITH_VIDEOINPUT) + if(CMAKE_CXX_COMPILER MATCHES "dw2") + else() + if(NOT MINGW64) + set(HAVE_VIDEOINPUT 1) + endif() + endif() +endif() + +############################### OpenNI ################################ +set(HAVE_OPENNI FALSE) +set(HAVE_OPENNI_PRIME_SENSOR_MODULE FALSE) + +if(WITH_OPENNI) + include(OpenCVFindOpenNI.cmake) +endif() + +############################## Eigen ############################## + +if(WITH_EIGEN) + find_path(EIGEN_INCLUDE_PATH "Eigen/Core" + PATHS "/usr/local/include/eigen2" "/opt/include/eigen2" "/usr/include/eigen2" + "/usr/local/include/eigen3" "/opt/include/eigen3" "/usr/include/eigen3" + DOC "The path to Eigen2/Eigen3 headers") + if(EIGEN_INCLUDE_PATH) + include_directories(${EIGEN_INCLUDE_PATH}) + set(HAVE_EIGEN 1) + endif() +endif() + + +################## Extra HighGUI libs on Windows ################### + +if(WIN32) + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32) + + if (MSVC) + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32) + if (NOT BUILD_SHARED_LIBS) + if (MSVC64) + if(HAVE_VIDEOINPUT) + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${OPENCV_SOURCE_DIR}/3rdparty/lib/videoInput64.lib strmiids) + endif() + elseif (MSVC) + if(HAVE_VIDEOINPUT) + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} ${OPENCV_SOURCE_DIR}/3rdparty/lib/videoInput.lib strmiids) + endif() + endif() + endif() + endif() + + if(MINGW) + if(MINGW64) + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} msvfw32 avifil32 avicap32 winmm) + if(HAVE_VIDEOINPUT) + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} videoInput64 strmiids) + endif() + else() + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32 winmm) + if(HAVE_VIDEOINPUT) + set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} videoInput strmiids) + endif() + endif() + endif() +endif() + + + +################## Reference Manual ################## +set(BUILD_DOCS ON CACHE BOOL "Build OpenCV Reference Manual") + + +################### DOXYGEN ############### + +#find_package(Doxygen) +# +#if(DOXYGEN_FOUND) +# set(BUILD_DOXYGEN_DOCS ON CACHE BOOL "Generate HTML docs using Doxygen") +#endif() + + +# ---------------------------------------------------------------------------- +# UPDATE CONFIG FILES & SCRIPTS: +# +# CONFIGURE_FILE(InputFile OutputFile [COPYONLY] [ESCAPE_QUOTES] [@ONLY]) +# If @ONLY is specified, only variables of the form @VAR@ will be +# replaces and ${VAR} will be ignored. +# +# A directory will be created for each platform so the "cvconfig.h" file is +# not overwritten if cmake generates code in the same path. +# ---------------------------------------------------------------------------- +add_definitions(-DHAVE_CVCONFIG_H) + +set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h") + +message(STATUS "Parsing 'cvconfig.h.cmake'") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cvconfig.h.cmake" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h") + + +# --------------------------------------------------------------------------- +# The C+//0 include & link directories: +# --------------------------------------------------------------------------- +include_directories("." + "${OPENCV_CONFIG_FILE_INCLUDE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/include" + "${CMAKE_CURRENT_SOURCE_DIR}/include/opencv" + ) + + +# ---------------------------------------------------------------------------- +# Set the maximum level of warnings: +# ---------------------------------------------------------------------------- +# Should be set to true for development +set(OPENCV_WARNINGS_ARE_ERRORS OFF CACHE BOOL "Treat warnings as errors") + +set(EXTRA_C_FLAGS "") +set(EXTRA_C_FLAGS_RELEASE "") +set(EXTRA_C_FLAGS_DEBUG "") +set(EXTRA_EXE_LINKER_FLAGS "") +set(EXTRA_EXE_LINKER_FLAGS_RELEASE "") +set(EXTRA_EXE_LINKER_FLAGS_DEBUG "") + +if(MSVC) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS") + # 64-bit portability warnings, in MSVC8 + if(MSVC80) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Wp64") + + endif() + #if(MSVC90) + # set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _BIND_TO_CURRENT_CRT_VERSION=1 /D _BIND_TO_CURRENT_VCLIBS_VERSION=1") + #endif() + + set(EXTRA_EXE_LINKER_FLAGS_RELEASE "${EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug") + + #if(ENABLE_OPENMP) + # set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /openmp") + #endif() + + # Remove unreferenced functions: function level linking + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Gy") + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Zi") +endif() + +if(CMAKE_COMPILER_IS_GNUCXX) + + # High level of warnings. + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall") + + # The -Wno-long-long is required in 64bit systems when including sytem headers. + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long") + endif() + if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long") + endif() + + # We need pthread's + if(UNIX) + if(NOT ANDROID) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -pthread") + endif() + endif() + + if(OPENCV_WARNINGS_ARE_ERRORS) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror") + endif() + + if(X86) + if(NOT MINGW64) + if(NOT X86_64) + if(NOT APPLE) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -march=i686") + endif() + endif() + endif() + endif() + + # Other optimizations + if(USE_OMIT_FRAME_POINTER) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fomit-frame-pointer") + endif() + if(USE_O2) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O2") + endif() + if(USE_O3) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O3") + endif() + if(USE_FAST_MATH) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -ffast-math") + endif() + if(ENABLE_POWERPC) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mcpu=G3 -mtune=G5") + endif() + if(ENABLE_SSE) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse") + endif() + if(ENABLE_SSE2) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse2") + endif() + # SSE3 and further should be disabled under MingW because it generates compiler errors + if(NOT MINGW) + if(ENABLE_SSE3) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3") + endif() + + if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 402) + set(HAVE_GCC43_OR_NEWER 1) + endif() + if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 401) + set(HAVE_GCC42_OR_NEWER 1) + endif() + + if(HAVE_GCC43_OR_NEWER OR APPLE) + if(ENABLE_SSSE3) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mssse3") + endif() + if(HAVE_GCC42_OR_NEWER) + if(ENABLE_SSE41) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.1") + endif() + if(ENABLE_SSE42) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.2") + endif() + endif() + endif() + endif() + + if(X86 OR X86_64) + if(NOT APPLE) + if(${CMAKE_SIZEOF_VOID_P} EQUAL 4) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mfpmath=387") + endif() + endif() + endif() + + # Profiling? + if(ENABLE_PROFILING) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -pg -g") + else() + # Remove unreferenced functions: function level linking + if(NOT APPLE) + set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -ffunction-sections") + endif() + endif() + + # Parallel mode + #if(ENABLE_OPENMP) + # set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -D_GLIBCXX_PARALLEL -fopenmp") + # set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} gomp) + #endif() + + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG") + set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -O0 -ggdb3 -DDEBUG -D_DEBUG") + +endif() + +if(MSVC) + if(ENABLE_SSE) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE") + endif() + if(ENABLE_SSE2) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE2") + endif() + if(ENABLE_SSE3) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE3") + endif() + if(ENABLE_SSE4_1) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE4.1") + endif() + if (ENABLE_SSE OR ENABLE_SSE2 OR ENABLE_SSE3 OR ENABLE_SSE4_1) + set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Oi") + endif() +endif() + +# Extra link libs if the user selects building static libs: +IF(NOT BUILD_SHARED_LIBS) + if(CMAKE_COMPILER_IS_GNUCXX) + set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} stdc++) + endif() +endif() + + +# Add user supplied extra options (optimization, etc...) +# ========================================================== +set(OPENCV_EXTRA_C_FLAGS "" CACHE STRING "Extra compiler options") +set(OPENCV_EXTRA_C_FLAGS_RELEASE "" CACHE STRING "Extra compiler options for Release build") +set(OPENCV_EXTRA_C_FLAGS_DEBUG "" CACHE STRING "Extra compiler options for Debug build") +set(OPENCV_EXTRA_EXE_LINKER_FLAGS "" CACHE STRING "Extra linker flags" FORCE) +set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "Extra linker flags for Release build" FORCE) +set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "Extra linker flags for Debug build" FORCE) + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}") +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}") +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}") + +# In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release: +if (${CMAKE_GENERATOR} MATCHES ".*Makefiles") + if("${CMAKE_BUILD_TYPE}" STREQUAL "") + set(CMAKE_BUILD_TYPE Release) + endif() +endif() + +if (WIN32 AND MSVC) + # avoid warnings from MSVC about overriding the /W* option + # we replace /W3 with /W4 only for C++ files, + # since all the 3rd-party libraries OpenCV uses are in C, + # and we do not care about their warnings. + string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + + # allow extern "C" functions throw exceptions + string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}") + string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") + string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") + string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") + + string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") + string(REPLACE "/Zm1000" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") +endif() + +if("${CMAKE_CONFIGURE_LDFLAGS}") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_CONFIGURE_LDFLAGS}") +endif("${CMAKE_CONFIGURE_LDFLAGS}") + + +# ---------------------------------------------------------------------------- +# PROCESS SUBDIRECTORIES: +# ---------------------------------------------------------------------------- +# Save libs and executables in the same place +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" ) + +if(WIN32) +set(OPENCV_DOC_INSTALL_PATH doc) +else() +set(OPENCV_DOC_INSTALL_PATH share/opencv/doc) +endif() + + +# -------------------------------------------------------------------------------------------- +# Installation for CMake Module: OpenCVConfig.cmake +# Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install" +# Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use with "make install" +# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages +# ------------------------------------------------------------------------------------------- + +# ------------------------------------------------------------------------------------------- +# Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install" +# ------------------------------------------------------------------------------------------- + +# Name of libraries is: libcv.so.1.1.0, etc... +# OPENCV_DLLVERSION must be set to "110", etc.. +# Already done above. + +# Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories: +set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${CMAKE_CURRENT_SOURCE_DIR}/include\" \"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"") +set(CMAKE_BASE_INCLUDE_DIRS_CONFIGCMAKE "\"${CMAKE_CURRENT_SOURCE_DIR}\"") + +set(CMAKE_LIB_DIRS_CONFIGCMAKE "${LIBRARY_OUTPUT_PATH}") + +if( HAVE_ANDROID_NATIVE_CAMERA ) + set(CMAKE_LIB_DIRS_CONFIGCMAKE ${CMAKE_LIB_DIRS_CONFIGCMAKE} ${NativeCamera_LIB_DIR}) +endif() + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY) + +# -------------------------------------------------------------------------------------------- +# Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install" +# ------------------------------------------------------------------------------------------- +# Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories: + +set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/include/opencv" "${CMAKE_INSTALL_PREFIX}/include") +set(CMAKE_BASE_INCLUDE_DIRS_CONFIGCMAKE "\"\"") + +set(CMAKE_LIB_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/lib") + +exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/unix-install/\"" OUTPUT_VARIABLE RET_VAL) +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" IMMEDIATE @ONLY) + +if(UNIX) + # For a command "FIND_PACKAGE(FOO)", CMake will look at the directory /usr/share|lib/FOO/FOOConfig.cmake, so: + install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake DESTINATION share/opencv/) +endif() + +# -------------------------------------------------------------------------------------------- +# Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages +# ------------------------------------------------------------------------------------------- +if(WIN32) + # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories: + # support for 3rdparty libraries. + # This will expand to, for example, /OpenCV 1.1.0/include + set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/include\" + \"\${THIS_OPENCV_CONFIG_PATH}/include/opencv\" + \"\${THIS_OPENCV_CONFIG_PATH}/3rdparty/include\"") + + set(CMAKE_BASE_INCLUDE_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}\"") + + # This will expand to, for example, /OpenCV 1.1.0/lib + # support for 3rdparty libraries. + set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/lib\" + \"\${THIS_OPENCV_CONFIG_PATH}/3rdparty/lib\"") + + #exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/win-install/\"") + exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"" OUTPUT_VARIABLE RET_VAL) + configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY) + # Install the OpenCVConfig.cmake file which has the right paths pointing to the install directory + install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/") + + # if videoInput support is enabled (which is by default on WIN32) copy the static library required to the installation path + # DESTINATION could also be "${CMAKE_INSTALL_PREFIX}/lib") to simplify dev environment setup of client applications + IF(HAVE_VIDEOINPUT) + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/lib/videoInput.lib" "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/lib/videoInput64.lib" + DESTINATION "${CMAKE_INSTALL_PREFIX}/3rdparty/lib") + + install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/include/videoInput.h" DESTINATION "${CMAKE_INSTALL_PREFIX}/3rdparty/include") + ENDIF() + + # Add the OpenCV configuration header to the install path + # Useful for instance if a client application checks against the features OpenCV has been compiled with + install(FILES "${CMAKE_BINARY_DIR}/cvconfig.h" DESTINATION "${CMAKE_INSTALL_PREFIX}/include") +endif() + + +# -------------------------------------------------------------------------------------------- +# Part 2/2: ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install" +# prefix=/usr +# exec_prefix=${prefix} +# libdir=${exec_prefix}/lib +# includedir=${prefix}/include/opencv +# ------------------------------------------------------------------------------------------- +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix "\${prefix}") +set(libdir "\${exec_prefix}/lib") +set(includedir "\${prefix}/include") +set(VERSION ${OPENCV_VERSION}) + +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/opencv.pc.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/opencv.pc" @ONLY IMMEDIATE) + +if(UNIX) + install(FILES ${CMAKE_BINARY_DIR}/unix-install/opencv.pc DESTINATION lib/pkgconfig) +endif() + + +# ---------------------------------------------------------------------------- +# Uninstall target, for "make uninstall" +# ---------------------------------------------------------------------------- +CONFIGURE_FILE( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" + IMMEDIATE @ONLY) + +ADD_CUSTOM_TARGET(uninstall + "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") + + +# ---------------------------------------------------------------------------- +# CPack target +# ---------------------------------------------------------------------------- + +set(BUILD_PACKAGE OFF CACHE BOOL "Build a installer with the SDK") + +if(BUILD_PACKAGE) + + configure_file( + Package.cmake.in + ${CMAKE_BINARY_DIR}/.cpack/Package.cmake + @ONLY + ) + + include(${CMAKE_BINARY_DIR}/.cpack/Package.cmake) + + set(root_files README) + + file(GLOB root_src_files *.in *.cmake CMakeLists.txt) + + if (NOT WIN32) + install(FILES ${root_files} + DESTINATION ${OPENCV_DOC_INSTALL_PATH} + COMPONENT main) + else() + install(FILES ${root_files} + DESTINATION "." + COMPONENT main) + install(FILES ${root_src_files} + DESTINATION "." + COMPONENT src) + # Add the "win-install/OpenCVConfig.cmake" file to the "main" install component + install(FILES + "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" + DESTINATION "." + COMPONENT main + ) + install(FILES + "include/CMakeLists.txt" + DESTINATION "include/" + COMPONENT src + ) + + if(CMAKE_INSTALL_DEBUG_LIBRARIES) + foreach(m calib3d core contrib features2d ffmpeg flann gpu highgui imgproc legacy ml objdetect video) + install(FILES ${EXECUTABLE_OUTPUT_PATH}/Debug/opencv_${m}${OPENCV_DLLVERSION}d.dll + DESTINATION bin COMPONENT main) + install(FILES ${LIBRARY_OUTPUT_PATH}/Debug/opencv_${m}${OPENCV_DLLVERSION}d.lib + DESTINATION lib COMPONENT main) + endforeach() + endif() + + install(DIRECTORY data samples DESTINATION "." COMPONENT main PATTERN ".svn" EXCLUDE) + install(DIRECTORY 3rdparty android modules tests DESTINATION "." COMPONENT src PATTERN ".svn" EXCLUDE) + #install(DIRECTORY doc/ DESTINATION doc COMPONENT src FILES_MATCHING PATTERN "*.tex") + #install(DIRECTORY doc/pics DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE) + #install(DIRECTORY doc/latex2sphinx DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE) + + endif() +endif() + + +#----------------------------------- +# Solution folders: +#----------------------------------- + +if(${CMAKE_VERSION} VERSION_GREATER "2.8.0") + set(ENABLE_SOLUTION_FOLDERS OFF CACHE BOOL "Solution folder in Visual Studio or in other IDEs") +endif() + +if(ENABLE_SOLUTION_FOLDERS) + set_property(GLOBAL PROPERTY USE_FOLDERS ON) + set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets") +endif() + +#----------------------------------- +# Subdirectories: +#----------------------------------- +add_subdirectory(include) +add_subdirectory(modules) + +if(BUILD_DOCS) + include(OpenCVFindLATEX.cmake REQUIRED) + + if(PDFLATEX_COMPILER) + message(STATUS "PDF LaTeX found!") + endif() +endif() + +add_subdirectory(doc) +add_subdirectory(data) + +if(BUILD_EXAMPLES OR INSTALL_PYTHON_EXAMPLES) + add_subdirectory(samples) +endif() + +#if(BUILD_TESTS) +# enable_testing() +# add_subdirectory(tests) +#endif() + +add_subdirectory(3rdparty) + + +# ---------------------------------------------------------------------------- +# Summary: +# ---------------------------------------------------------------------------- +message(STATUS "") +message(STATUS "General configuration for opencv ${OPENCV_VERSION} =====================================") +message(STATUS "") +message(STATUS " Built as dynamic libs?: ${BUILD_SHARED_LIBS}") +message(STATUS " Compiler: ${CMAKE_COMPILER}") +message(STATUS " C++ flags (Release): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") +message(STATUS " C++ flags (Debug): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") +if(WIN32) +message(STATUS " Linker flags (Release): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +message(STATUS " Linker flags (Debug): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG}") +else() +message(STATUS " Linker flags (Release): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +message(STATUS " Linker flags (Debug): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}") +endif() + +#YV +message(STATUS "") +message(STATUS " GUI: ") + +if (HAVE_QT) + message(STATUS " QT 4.x: ${HAVE_QT}") + message(STATUS " QT OpenGL support: ${HAVE_QT_OPENGL}") +else() + if(WIN32) + message(STATUS " Win32 UI: YES") + else() + if(APPLE) + if(WITH_CARBON) + message(STATUS " Carbon: YES") + else() + message(STATUS " Cocoa: YES") + endif() + else() + message(STATUS " GTK+ 2.x: ${HAVE_GTK}") + message(STATUS " GThread: ${HAVE_GTHREAD}") + endif() + endif() +endif() + +message(STATUS "") +message(STATUS " Media I/O: ") +if(ZLIB_FOUND) +message(STATUS " ZLib: ${ZLIB_FOUND}") +else() +message(STATUS " ZLib: build") +endif() + +if(NOT WITH_JPEG OR JPEG_FOUND) +message(STATUS " JPEG: ${JPEG_FOUND}") +else() +message(STATUS " JPEG: build") +endif() + +if(NOT WITH_PNG OR PNG_FOUND) +message(STATUS " PNG: ${PNG_FOUND}") +else() +message(STATUS " PNG: build") +endif() + +if(NOT WITH_TIFF OR TIFF_FOUND) +message(STATUS " TIFF: ${TIFF_FOUND}") +else() +message(STATUS " TIFF: build") +endif() + +if(NOT WITH_JASPER OR JASPER_FOUND) +message(STATUS " JPEG 2000: ${JASPER_FOUND}") +else() +message(STATUS " JPEG 2000: build") +endif() + +if(WITH_OPENEXR AND OPENEXR_FOUND) +message(STATUS " OpenEXR: YES") +else() +message(STATUS " OpenEXR: NO") +endif() + +if(NOT HAVE_OPENNI OR HAVE_OPENNI_PRIME_SENSOR_MODULE) +message(STATUS " OpenNI: ${HAVE_OPENNI}") +else() +message(STATUS " OpenNI: ${HAVE_OPENNI} (WARNING: PrimeSensor Modules for OpenNI are not installed (not found in OPENNI_PRIME_SENSOR_MODULE_BIN_DIR).)") +endif() + +if(UNIX AND NOT APPLE) +message(STATUS "") +message(STATUS " Video I/O: ") +message(STATUS " DC1394 1.x: ${HAVE_DC1394}") +message(STATUS " DC1394 2.x: ${HAVE_DC1394_2}") +message(STATUS " FFMPEG: ${HAVE_FFMPEG}") +message(STATUS " codec: ${HAVE_FFMPEG_CODEC}") +message(STATUS " format: ${HAVE_FFMPEG_FORMAT}") +message(STATUS " util: ${HAVE_FFMPEG_UTIL}") +message(STATUS " swscale: ${HAVE_FFMPEG_SWSCALE}") +message(STATUS " gentoo-style: ${HAVE_GENTOO_FFMPEG}") +message(STATUS " GStreamer: ${HAVE_GSTREAMER}") +message(STATUS " UniCap: ${HAVE_UNICAP}") +message(STATUS " PvAPI: ${HAVE_PVAPI}") +if(HAVE_LIBV4L) +message(STATUS " V4L/V4L2: Using libv4l") +else() +message(STATUS " V4L/V4L2: ${HAVE_CAMV4L}/${HAVE_CAMV4L2}") +endif() +message(STATUS " Xine: ${HAVE_XINE}") +if(ANDROID) +message(STATUS " AndroidNativeCamera: ${HAVE_ANDROID_NATIVE_CAMERA}") +endif() +endif() #if(UNIX AND NOT APPLE) + +if(APPLE) +message(STATUS "") +if(WITH_QUICKTIME) +message(STATUS " Video I/O: QuickTime") +else() +message(STATUS " Video I/O: QTKit") +endif() +endif() + +if(WIN32) +message(STATUS "") +message(STATUS " Video I/O: ") +if(HAVE_VIDEOINPUT) +message(STATUS " VideoInput: YES") +else() +message(STATUS " VideoInput: NO") +endif() +endif() + +message(STATUS "") +message(STATUS " Interfaces: ") +message(STATUS " Python: ${BUILD_NEW_PYTHON_SUPPORT}") +message(STATUS " Python interpreter: ${PYTHON_EXECUTABLE}") +if (PYTHON_USE_NUMPY) +message(STATUS " Python numpy: YES") +else() +message(STATUS " Python numpy: NO (Python interface will not cover OpenCV 2.x API)") +endif() + +if(WITH_IPP AND IPP_FOUND) +message(STATUS " Use IPP: ${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]") +message(STATUS " at: ${IPP_ROOT_DIR}") +elseif(WITH_IPP AND NOT IPP_FOUND) +message(STATUS " Use IPP: IPP not found") +else() +message(STATUS " Use IPP: NO") +endif() + +if(HAVE_TBB) +message(STATUS " Use TBB: YES") +else() +message(STATUS " Use TBB: NO") +if(HAVE_THREADING_FRAMEWORK) +message(STATUS " Use ThreadingFramework: YES") +else() +message(STATUS " Use ThreadingFramework: NO") +endif() +endif() + +if (HAVE_CUDA) +message(STATUS " Use Cuda: YES") +else() +message(STATUS " Use Cuda: NO") +endif() + +if(HAVE_EIGEN) +message(STATUS " Use Eigen: YES") +else() +message(STATUS " Use Eigen: NO") +endif() + +message(STATUS "") +message(STATUS " Documentation: ") + +if(BUILD_DOCS AND PDFLATEX_COMPILER AND HAVE_SPHINX) +message(STATUS " Build Documentation: YES") +else() +message(STATUS " Build Documentation: NO") +endif() + +#if(BUILD_DOXYGEN_DOCS AND DOXYGEN_FOUND) +#message(STATUS " Doxygen HTMLs YES") +#else() +#message(STATUS " Doxygen HTMLs NO") +#endif() + +message(STATUS "") +message(STATUS " Install path: ${CMAKE_INSTALL_PREFIX}") +message(STATUS "") +message(STATUS " cvconfig.h is in: ${OPENCV_CONFIG_FILE_INCLUDE_DIR}") +message(STATUS "-----------------------------------------------------------------") +message(STATUS "") + +#---------------------------------------------------------------------------- +# Generate the OpenCVConfig.cmake file for unix +# installation in CMAKE_INSTALL_PREFIX +#---------------------------------------------------------------------------- diff --git a/OpenCVPCHSupport.cmake b/OpenCVPCHSupport.cmake index a631a64..0343461 100644 --- a/OpenCVPCHSupport.cmake +++ b/OpenCVPCHSupport.cmake @@ -57,7 +57,7 @@ MACRO(_PCH_GET_COMPILE_FLAGS _out_compile_flags) ENDFOREACH(item) GET_DIRECTORY_PROPERTY(_directory_flags DEFINITIONS) - GET_DIRECTORY_PROPERTY(_global_definitions DIRECTORY ${CMAKE_SOURCE_DIR} DEFINITIONS) + GET_DIRECTORY_PROPERTY(_global_definitions DIRECTORY ${OPENCV_SOURCE_DIR} DEFINITIONS) #MESSAGE("_directory_flags ${_directory_flags} ${_global_definitions}" ) LIST(APPEND ${_out_compile_flags} ${_directory_flags}) LIST(APPEND ${_out_compile_flags} ${_global_definitions}) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 460e78a..b0e422b 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -76,7 +76,7 @@ set(DOXYGEN_SOURCE_DIR) set(doxy_html_dep_list) foreach(m ${module_names}) - set(module_hdr_path "${CMAKE_SOURCE_DIR}/modules/${m}/include/opencv2/${m}") + set(module_hdr_path "${OPENCV_SOURCE_DIR}/modules/${m}/include/opencv2/${m}") set(DOXYGEN_SOURCE_DIR ${DOXYGEN_SOURCE_DIR} ${module_hdr_path}) file(GLOB module_hdrs "${module_hdr_path}/*.h*") set(doxy_html_dep_list ${doxy_html_dep_list} ${module_hdrs}) diff --git a/modules/gpu/CMakeLists.txt b/modules/gpu/CMakeLists.txt index 2b2e968..a910f7b 100644 --- a/modules/gpu/CMakeLists.txt +++ b/modules/gpu/CMakeLists.txt @@ -194,7 +194,7 @@ if(BUILD_TESTS AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/test) source_group("Src" FILES ${test_hdrs} ${test_srcs}) if(HAVE_CUDA) - include_directories(${CUDA_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR}/modules/gpu/src/nvidia ${CMAKE_SOURCE_DIR}/modules/gpu/src/nvidia/core ${CMAKE_SOURCE_DIR}/modules/gpu/src/nvidia/NPP_staging) + include_directories(${CUDA_INCLUDE_DIRS} ${OPENCV_SOURCE_DIR}/modules/gpu/src/nvidia ${OPENCV_SOURCE_DIR}/modules/gpu/src/nvidia/core ${OPENCV_SOURCE_DIR}/modules/gpu/src/nvidia/NPP_staging) file(GLOB nvidia "test/nvidia/*.cpp" "test/nvidia/*.h*") source_group("Src\\NVidia" FILES ${nvidia}) diff --git a/modules/haartraining/CMakeLists.txt b/modules/haartraining/CMakeLists.txt index 5628826..ceaad33 100644 --- a/modules/haartraining/CMakeLists.txt +++ b/modules/haartraining/CMakeLists.txt @@ -2,20 +2,20 @@ project(haartraining) include_directories( "${CMAKE_CURRENT_SOURCE_DIR}" - "${CMAKE_SOURCE_DIR}/modules/core/include" - "${CMAKE_SOURCE_DIR}/modules/imgproc/include" - "${CMAKE_SOURCE_DIR}/modules/objdetect/include" - "${CMAKE_SOURCE_DIR}/modules/ml/include" - "${CMAKE_SOURCE_DIR}/modules/highgui/include" - "${CMAKE_SOURCE_DIR}/modules/video/include" - "${CMAKE_SOURCE_DIR}/modules/features2d/include" - "${CMAKE_SOURCE_DIR}/modules/flann/include" - "${CMAKE_SOURCE_DIR}/modules/calib3d/include" - "${CMAKE_SOURCE_DIR}/modules/legacy/include" + "${OPENCV_SOURCE_DIR}/modules/core/include" + "${OPENCV_SOURCE_DIR}/modules/imgproc/include" + "${OPENCV_SOURCE_DIR}/modules/objdetect/include" + "${OPENCV_SOURCE_DIR}/modules/ml/include" + "${OPENCV_SOURCE_DIR}/modules/highgui/include" + "${OPENCV_SOURCE_DIR}/modules/video/include" + "${OPENCV_SOURCE_DIR}/modules/features2d/include" + "${OPENCV_SOURCE_DIR}/modules/flann/include" + "${OPENCV_SOURCE_DIR}/modules/calib3d/include" + "${OPENCV_SOURCE_DIR}/modules/legacy/include" ) if(WIN32) - link_directories(${CMAKE_SOURCE_DIR}/lib ${CMAKE_SOURCE_DIR}/bin ${CMAKE_CURRENT_BINARY_DIR}) + link_directories(${OPENCV_SOURCE_DIR}/lib ${OPENCV_SOURCE_DIR}/bin ${CMAKE_CURRENT_BINARY_DIR}) endif() set(haartraining_libs opencv_core opencv_imgproc opencv_highgui opencv_objdetect opencv_calib3d opencv_haartraining_engine) diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index 73f3f50..a7f0fbc 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -7,31 +7,31 @@ include_directories(${PYTHON_INCLUDE_PATH}) include_directories( "${CMAKE_CURRENT_SOURCE_DIR}/src1" "${CMAKE_CURRENT_SOURCE_DIR}/src2" - "${CMAKE_SOURCE_DIR}/modules/core/include" - "${CMAKE_SOURCE_DIR}/modules/imgproc/include" - "${CMAKE_SOURCE_DIR}/modules/video/include" - "${CMAKE_SOURCE_DIR}/modules/highgui/include" - "${CMAKE_SOURCE_DIR}/modules/ml/include" - "${CMAKE_SOURCE_DIR}/modules/features2d/include" - "${CMAKE_SOURCE_DIR}/modules/flann/include" - "${CMAKE_SOURCE_DIR}/modules/calib3d/include" - "${CMAKE_SOURCE_DIR}/modules/objdetect/include" - "${CMAKE_SOURCE_DIR}/modules/legacy/include" - "${CMAKE_SOURCE_DIR}/modules/contrib/include" + "${OPENCV_SOURCE_DIR}/modules/core/include" + "${OPENCV_SOURCE_DIR}/modules/imgproc/include" + "${OPENCV_SOURCE_DIR}/modules/video/include" + "${OPENCV_SOURCE_DIR}/modules/highgui/include" + "${OPENCV_SOURCE_DIR}/modules/ml/include" + "${OPENCV_SOURCE_DIR}/modules/features2d/include" + "${OPENCV_SOURCE_DIR}/modules/flann/include" + "${OPENCV_SOURCE_DIR}/modules/calib3d/include" + "${OPENCV_SOURCE_DIR}/modules/objdetect/include" + "${OPENCV_SOURCE_DIR}/modules/legacy/include" + "${OPENCV_SOURCE_DIR}/modules/contrib/include" ) include_directories(${CMAKE_CURRENT_BINARY_DIR}) -set(opencv_hdrs "${CMAKE_SOURCE_DIR}/modules/core/include/opencv2/core/core.hpp" - "${CMAKE_SOURCE_DIR}/modules/imgproc/include/opencv2/imgproc/imgproc.hpp" - "${CMAKE_SOURCE_DIR}/modules/video/include/opencv2/video/background_segm.hpp" - "${CMAKE_SOURCE_DIR}/modules/video/include/opencv2/video/tracking.hpp" - "${CMAKE_SOURCE_DIR}/modules/highgui/include/opencv2/highgui/highgui.hpp" - "${CMAKE_SOURCE_DIR}/modules/ml/include/opencv2/ml/ml.hpp" - "${CMAKE_SOURCE_DIR}/modules/features2d/include/opencv2/features2d/features2d.hpp" - "${CMAKE_SOURCE_DIR}/modules/calib3d/include/opencv2/calib3d/calib3d.hpp" - "${CMAKE_SOURCE_DIR}/modules/objdetect/include/opencv2/objdetect/objdetect.hpp" - "${CMAKE_SOURCE_DIR}/modules/python/src2/opencv_extra_api.hpp") +set(opencv_hdrs "${OPENCV_SOURCE_DIR}/modules/core/include/opencv2/core/core.hpp" + "${OPENCV_SOURCE_DIR}/modules/imgproc/include/opencv2/imgproc/imgproc.hpp" + "${OPENCV_SOURCE_DIR}/modules/video/include/opencv2/video/background_segm.hpp" + "${OPENCV_SOURCE_DIR}/modules/video/include/opencv2/video/tracking.hpp" + "${OPENCV_SOURCE_DIR}/modules/highgui/include/opencv2/highgui/highgui.hpp" + "${OPENCV_SOURCE_DIR}/modules/ml/include/opencv2/ml/ml.hpp" + "${OPENCV_SOURCE_DIR}/modules/features2d/include/opencv2/features2d/features2d.hpp" + "${OPENCV_SOURCE_DIR}/modules/calib3d/include/opencv2/calib3d/calib3d.hpp" + "${OPENCV_SOURCE_DIR}/modules/objdetect/include/opencv2/objdetect/objdetect.hpp" + "${OPENCV_SOURCE_DIR}/modules/python/src2/opencv_extra_api.hpp") if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3") diff --git a/modules/stitching/CMakeLists.txt b/modules/stitching/CMakeLists.txt index 2b8d559..31da30c 100644 --- a/modules/stitching/CMakeLists.txt +++ b/modules/stitching/CMakeLists.txt @@ -1,40 +1,40 @@ -project(stitching) - -include_directories( - "${CMAKE_CURRENT_SOURCE_DIR}" - "${CMAKE_SOURCE_DIR}/modules/core/include" - "${CMAKE_SOURCE_DIR}/modules/imgproc/include" - "${CMAKE_SOURCE_DIR}/modules/objdetect/include" - "${CMAKE_SOURCE_DIR}/modules/ml/include" - "${CMAKE_SOURCE_DIR}/modules/highgui/include" - "${CMAKE_SOURCE_DIR}/modules/video/include" - "${CMAKE_SOURCE_DIR}/modules/features2d/include" - "${CMAKE_SOURCE_DIR}/modules/flann/include" - "${CMAKE_SOURCE_DIR}/modules/calib3d/include" - "${CMAKE_SOURCE_DIR}/modules/legacy/include" - "${CMAKE_SOURCE_DIR}/modules/imgproc/src" # for gcgraph.hpp - "${CMAKE_SOURCE_DIR}/modules/gpu/include" - ) - -set(stitching_libs opencv_core opencv_imgproc opencv_highgui opencv_features2d opencv_calib3d opencv_gpu) - -FILE(GLOB stitching_files "*.hpp" "*.cpp") - -set(the_target opencv_stitching) -add_executable(${the_target} ${stitching_files}) - -add_dependencies(${the_target} ${stitching_libs}) -set_target_properties(${the_target} PROPERTIES - DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" - ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} - RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} - INSTALL_NAME_DIR lib - OUTPUT_NAME "opencv_stitching") - -if(ENABLE_SOLUTION_FOLDERS) - set_target_properties(${the_target} PROPERTIES FOLDER "applications") -endif() - -target_link_libraries(${the_target} ${stitching_libs}) - -install(TARGETS ${the_target} RUNTIME DESTINATION bin COMPONENT main) +project(stitching) + +include_directories( + "${CMAKE_CURRENT_SOURCE_DIR}" + "${OPENCV_SOURCE_DIR}/modules/core/include" + "${OPENCV_SOURCE_DIR}/modules/imgproc/include" + "${OPENCV_SOURCE_DIR}/modules/objdetect/include" + "${OPENCV_SOURCE_DIR}/modules/ml/include" + "${OPENCV_SOURCE_DIR}/modules/highgui/include" + "${OPENCV_SOURCE_DIR}/modules/video/include" + "${OPENCV_SOURCE_DIR}/modules/features2d/include" + "${OPENCV_SOURCE_DIR}/modules/flann/include" + "${OPENCV_SOURCE_DIR}/modules/calib3d/include" + "${OPENCV_SOURCE_DIR}/modules/legacy/include" + "${OPENCV_SOURCE_DIR}/modules/imgproc/src" # for gcgraph.hpp + "${OPENCV_SOURCE_DIR}/modules/gpu/include" + ) + +set(stitching_libs opencv_core opencv_imgproc opencv_highgui opencv_features2d opencv_calib3d opencv_gpu) + +FILE(GLOB stitching_files "*.hpp" "*.cpp") + +set(the_target opencv_stitching) +add_executable(${the_target} ${stitching_files}) + +add_dependencies(${the_target} ${stitching_libs}) +set_target_properties(${the_target} PROPERTIES + DEBUG_POSTFIX "${OPENCV_DEBUG_POSTFIX}" + ARCHIVE_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH} + RUNTIME_OUTPUT_DIRECTORY ${EXECUTABLE_OUTPUT_PATH} + INSTALL_NAME_DIR lib + OUTPUT_NAME "opencv_stitching") + +if(ENABLE_SOLUTION_FOLDERS) + set_target_properties(${the_target} PROPERTIES FOLDER "applications") +endif() + +target_link_libraries(${the_target} ${stitching_libs}) + +install(TARGETS ${the_target} RUNTIME DESTINATION bin COMPONENT main) diff --git a/modules/traincascade/CMakeLists.txt b/modules/traincascade/CMakeLists.txt index 51d423e..0daad84 100644 --- a/modules/traincascade/CMakeLists.txt +++ b/modules/traincascade/CMakeLists.txt @@ -2,16 +2,16 @@ project(traincascade) include_directories( "${CMAKE_CURRENT_SOURCE_DIR}" - "${CMAKE_SOURCE_DIR}/modules/core/include" - "${CMAKE_SOURCE_DIR}/modules/imgproc/include" - "${CMAKE_SOURCE_DIR}/modules/objdetect/include" - "${CMAKE_SOURCE_DIR}/modules/ml/include" - "${CMAKE_SOURCE_DIR}/modules/highgui/include" - "${CMAKE_SOURCE_DIR}/modules/video/include" - "${CMAKE_SOURCE_DIR}/modules/features2d/include" - "${CMAKE_SOURCE_DIR}/modules/flann/include" - "${CMAKE_SOURCE_DIR}/modules/calib3d/include" - "${CMAKE_SOURCE_DIR}/modules/legacy/include" + "${OPENCV_SOURCE_DIR}/modules/core/include" + "${OPENCV_SOURCE_DIR}/modules/imgproc/include" + "${OPENCV_SOURCE_DIR}/modules/objdetect/include" + "${OPENCV_SOURCE_DIR}/modules/ml/include" + "${OPENCV_SOURCE_DIR}/modules/highgui/include" + "${OPENCV_SOURCE_DIR}/modules/video/include" + "${OPENCV_SOURCE_DIR}/modules/features2d/include" + "${OPENCV_SOURCE_DIR}/modules/flann/include" + "${OPENCV_SOURCE_DIR}/modules/calib3d/include" + "${OPENCV_SOURCE_DIR}/modules/legacy/include" ) set(traincascade_libs opencv_core opencv_ml opencv_imgproc -- 2.7.4