]> rtime.felk.cvut.cz Git - opencv.git/blobdiff - opencv/CMakeLists.txt
added "zip" option to the Package.cmake.in, fixed test failure in cvmorph when built...
[opencv.git] / opencv / CMakeLists.txt
index 012ef5a73ca9fabd84e5ce1e53ec7c78482ba727..01830f34ed4a431c7b961bab7192a02a774c53ef 100644 (file)
 # ----------------------------------------------------------------------------\r
 \r
 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)\r
-\r
+# Add these standard paths to the search paths for FIND_LIBRARY\r
+# to find libraries from these locations first\r
+if(UNIX)\r
+  set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /lib /usr/lib)\r
+endif()\r
 # it _must_ go before PROJECT(OpenCV) in order to work\r
 if (NOT CMAKE_INSTALL_PREFIX)\r
     if (WIN32)\r
@@ -40,6 +44,10 @@ if(MSVC)
     set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)\r
 endif()\r
 \r
+#set(CMAKE_C_COMPILER "/opt/BullseyeCoverage/bin/gcc")\r
+#set(CMAKE_CXX_COMPILER "/opt/BullseyeCoverage/bin/g++")\r
+#set(CMAKE_CXX_COMPILER_INIT "/opt/BullseyeCoverage/bin/gcc")\r
+\r
 # --------------------------------------------------------------\r
 # Indicate CMake 2.7 and above that we don't want to mix relative\r
 #  and absolute paths in linker lib lists.\r
@@ -52,7 +60,7 @@ endif()
 # ----------------------------------------------------------------------------\r
 #  Current version number:\r
 # ----------------------------------------------------------------------------\r
-set(OPENCV_VERSION "1.1.1")\r
+set(OPENCV_VERSION "2.1.0")\r
 \r
 string(REGEX MATCHALL "[0-9]" OPENCV_VERSION_PARTS "${OPENCV_VERSION}")\r
 \r
@@ -63,17 +71,28 @@ list(GET OPENCV_VERSION_PARTS 2 OPENCV_VERSION_PATCH)
 set(OPENCV_SOVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}")\r
 \r
 if(WIN32)\r
-       # Postfix of DLLs:\r
-       set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")\r
-       set(OPENCV_DEBUG_POSTFIX d)\r
+    # Postfix of DLLs:\r
+    set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")\r
+    set(OPENCV_DEBUG_POSTFIX d)\r
 else()\r
-       # Postfix of so's:\r
-       #set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")\r
-       set(OPENCV_DLLVERSION "")\r
-       set(OPENCV_DEBUG_POSTFIX)\r
+    # Postfix of so's:\r
+    #set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")\r
+    set(OPENCV_DLLVERSION "")\r
+    set(OPENCV_DEBUG_POSTFIX)\r
 endif()\r
 \r
 \r
+# ----------------------------------------------------------------------------\r
+# Build static or dynamic libs?\r
+# ----------------------------------------------------------------------------\r
+# Default: dynamic libraries:\r
+SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")\r
+IF(BUILD_SHARED_LIBS)\r
+    SET(OPENCV_BUILD_SHARED_LIB 1) # For cvconfig.h, etc.\r
+ELSE(BUILD_SHARED_LIBS)\r
+    SET(OPENCV_BUILD_SHARED_LIB 0)\r
+ENDIF(BUILD_SHARED_LIBS)\r
+\r
 # ----------------------------------------------------------------------------\r
 #  Variables for cvconfig.h.cmake\r
 # ----------------------------------------------------------------------------\r
@@ -123,13 +142,38 @@ if(CMAKE_COMPILER_IS_GNUCXX)
 \r
     list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR)\r
     list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR)\r
-\r
+    \r
     set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})\r
-    message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION}")\r
+    math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}")\r
+    message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})")\r
+endif()\r
+\r
+# ----------------------------------------------------------------------------\r
+# Detect Intel ICC compiler -- for -fPIC in 3rdparty ( UNIX ONLY ):\r
+#  see  include/opencv/cxtypes.h file for related   ICC & CV_ICC defines.\r
+# NOTE: The system needs to determine if the '-fPIC' option needs to be added\r
+#  for the 3rdparty static libs being compiled.  The CMakeLists.txt files\r
+#  in 3rdparty use the CV_ICC definition being set here to determine if\r
+#  the -fPIC flag should be used.\r
+# ----------------------------------------------------------------------------\r
+if(UNIX)\r
+    if  (__ICL)\r
+        set(CV_ICC   __ICL)\r
+    elseif(__ICC)\r
+        set(CV_ICC   __ICC)\r
+    elseif(__ECL)\r
+        set(CV_ICC   __ECL)\r
+    elseif(__ECC)\r
+        set(CV_ICC   __ECC)\r
+    elseif(__INTEL_COMPILER)\r
+        set(CV_ICC   __INTEL_COMPILER)\r
+    elseif(CMAKE_C_COMPILER MATCHES "icc")\r
+        set(CV_ICC   icc_matches_c_compiler)\r
+    endif()\r
 endif()\r
 \r
 # ----------------------------------------------------------------------------\r
-#              CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..\r
+#       CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..\r
 # ----------------------------------------------------------------------------\r
 \r
 # Build/install (or not) some apps:\r
@@ -146,9 +190,9 @@ set(BUILD_TESTS ON CACHE BOOL "Build tests")
 # Build 3rdparty libraries under unix\r
 # ===================================================\r
 if(WIN32 OR APPLE)\r
-       set(OPENCV_BUILD_3RDPARTY_LIBS TRUE  CACHE BOOL "Build 3rd party libraries")\r
+    set(OPENCV_BUILD_3RDPARTY_LIBS TRUE  CACHE BOOL "Build 3rd party libraries")\r
 else()\r
-       set(OPENCV_BUILD_3RDPARTY_LIBS FALSE CACHE BOOL "Build 3rd party libraries")\r
+    set(OPENCV_BUILD_3RDPARTY_LIBS FALSE CACHE BOOL "Build 3rd party libraries")\r
 endif()\r
 \r
 include(OpenCVPCHSupport.cmake REQUIRED)\r
@@ -159,17 +203,12 @@ if(UNIX)
     include(CheckIncludeFile)\r
 endif()\r
 \r
-# Default value for OPENMP:\r
-#  MSVC: Yes\r
-#  Others: No\r
-# ===================================================\r
-if(MSVC)\r
-       set(DEFAULT_ENABLE_OPENMP ON)\r
-else()\r
-       set(DEFAULT_ENABLE_OPENMP OFF)\r
-endif()\r
-\r
-set(ENABLE_OPENMP ${DEFAULT_ENABLE_OPENMP} CACHE BOOL "")\r
+#if(MSVC)\r
+#   set(DEFAULT_ENABLE_OPENMP ON)\r
+#else()\r
+#   set(DEFAULT_ENABLE_OPENMP OFF)\r
+#endif()\r
+#set(ENABLE_OPENMP ${DEFAULT_ENABLE_OPENMP} CACHE BOOL "")\r
 \r
 if(CMAKE_COMPILER_IS_GNUCXX)\r
     set(ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)")\r
@@ -179,63 +218,69 @@ if(CMAKE_COMPILER_IS_GNUCXX)
         set(USE_O2 ON CACHE BOOL "Enable -O2 for GCC")\r
         set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
     endif()\r
+    \r
     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*)\r
-        set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
-        set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
-        set(USE_MMX ON CACHE BOOL "Enable MMX for GCC")\r
-        set(USE_SSE ON CACHE BOOL "Enable SSE for GCC")\r
-        set(USE_SSE2 ON CACHE BOOL "Enable SSE2 for GCC")\r
-        set(USE_SSE3 ON CACHE BOOL "Enable SSE3 for GCC")\r
+        set(X86_64 1)\r
     endif()\r
     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)\r
-        set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
-        set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
-        set(USE_MMX ON CACHE BOOL "Enable MMX for GCC")\r
-        set(USE_SSE ON CACHE BOOL "Enable SSE for GCC")\r
-        set(USE_SSE2 ON CACHE BOOL "Enable SSE2 for GCC")\r
-        set(USE_SSE3 ON CACHE BOOL "Enable SSE3 for GCC")\r
+        set(X86_64 1)\r
     endif()\r
-    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc*)\r
-        set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
-        set(USE_POWERPC ON CACHE BOOL "Enable PowerPC for GCC")\r
-    endif ()\r
+    \r
     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*)\r
+        set(X86 1)\r
+    endif()\r
+    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i386*)\r
+        set(X86 1)\r
+    endif()\r
+    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*)\r
+        set(X86 1)\r
+    endif()\r
+        \r
+    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc*)\r
         set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
-        set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
-        set(USE_MMX ON CACHE BOOL "Enable MMX for GCC")\r
-               set(USE_SSE OFF CACHE BOOL "Enable SSE for GCC")\r
-        set(USE_SSE2 OFF CACHE BOOL "Enable SSE2 for GCC")\r
-        set(USE_SSE3 OFF CACHE BOOL "Enable SSE3 for GCC")\r
-       # SSE/SSE2 might probably be not available for some old AMD or VIA processors\r
+        set(ENABLE_POWERPC ON CACHE BOOL "Enable PowerPC for GCC")\r
     endif ()\r
-    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86)\r
+    \r
+    if(X86 OR X86_64)\r
+        # enable everything, since the available set of instructions is checked at runtime\r
         set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
         set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
-        set(USE_MMX ON CACHE BOOL "Enable MMX for GCC")\r
-               set(USE_SSE OFF CACHE BOOL "Enable SSE for GCC")\r
-        set(USE_SSE2 OFF CACHE BOOL "Enable SSE2 for GCC")\r
-        set(USE_SSE3 OFF CACHE BOOL "Enable SSE3 for GCC")\r
-       # SSE/SSE2 might probably be not available for some old AMD or VIA processors\r
-    endif ()\r
+        set(ENABLE_SSE ON CACHE BOOL "Enable SSE for GCC")\r
+        set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 for GCC")\r
+        set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 for GCC")\r
+        set(ENABLE_SSSE3 OFF CACHE BOOL "Enable SSSE3 for GCC")\r
+        #set(ENABLE_SSE4_1 OFF CACHE BOOL "Enable SSE4.1 for GCC")\r
+    endif()\r
 endif()\r
 \r
 # allow fine grained control over which libraries not to link, even if\r
 # they are available on the system\r
 # ====================================================================\r
+set(WITH_PNG ON CACHE BOOL "Include PNG support")\r
+set(WITH_JPEG ON CACHE BOOL "Include JPEG support")\r
+set(WITH_JASPER ON CACHE BOOL "Include JPEG2K support")\r
+set(WITH_TIFF ON CACHE BOOL "Include TIFF support")\r
+\r
 if(UNIX)\r
-    set(WITH_PNG ON CACHE BOOL "Include PNG support")\r
-    set(WITH_JPEG ON CACHE BOOL "Include JPEG support")\r
-    set(WITH_JASPER ON CACHE BOOL "Include JPEG2K support")\r
-    set(WITH_TIFF ON CACHE BOOL "Include TIFF support")\r
     set(WITH_FFMPEG ON CACHE BOOL "Include FFMPEG support")\r
-    set(WITH_UNICAP ON CACHE BOOL "Include Unicap support")\r
-    set(WITH_GTK ON CACHE BOOL "Include GTK support")\r
-    set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support")\r
+    if(NOT APPLE)\r
+        set(WITH_UNICAP OFF CACHE BOOL "Include Unicap support (GPL)")\r
+        set(WITH_GTK ON CACHE BOOL "Include GTK support")\r
+        set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support")\r
+        set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support")\r
+        set(WITH_XINE OFF CACHE BOOL "Include Xine support (GPL)")\r
+    endif()\r
+    set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support")\r
     set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support")\r
-    set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support")\r
-    set(WITH_XINE ON CACHE BOOL "Include Xine support")\r
 endif()\r
 \r
+if(APPLE)\r
+    set(WITH_CARBON OFF CACHE BOOL "Use Carbon for UI instead of Cocoa")\r
+    set(WITH_QUICKTIME OFF CACHE BOOL "Use QuickTime for Video I/O insted of QTKit")\r
+endif()\r
+\r
+set(WITH_TBB OFF CACHE BOOL "Include TBB support")\r
+\r
 # ===================================================\r
 # Macros that checks if module have been installed.\r
 # After it adds module to build and define\r
@@ -283,6 +328,8 @@ if(UNIX)
       endif()\r
       if(WITH_GSTREAMER)\r
         CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)\r
+        CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER_APP)\r
+        CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)\r
       else()\r
         set(HAVE_GSTREAMER FALSE)\r
       endif()\r
@@ -297,23 +344,40 @@ if(UNIX)
     else()\r
       set(HAVE_UNICAP FALSE)\r
     endif()\r
+    \r
+    if(WITH_PVAPI)\r
+      find_path(PVAPI_INCLUDE_PATH "PvApi.h"\r
+                PATHS "/usr/include" "/usr/local/include"\r
+                DOC "The path to PvAPI header")\r
+      if(PVAPI_INCLUDE_PATH)\r
+        set(HAVE_PVAPI 1)\r
+      endif()\r
+    endif()\r
 \r
+    set(HAVE_FFMPEG 0)\r
     if(WITH_FFMPEG)\r
       CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)\r
       CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)\r
       CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)\r
       CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)\r
       CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)\r
-      if(NOT HAVE_GENTOO_FFMPEG)\r
-        if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h)\r
+      CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)\r
+      if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)\r
+        if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)\r
           set(HAVE_GENTOO_FFMPEG 1)\r
         endif()\r
       endif()\r
       if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL)\r
-        set(HAVE_FFMPEG 1)\r
+        if(HAVE_FFMPEG_SWSCALE OR NOT HAVE_GENTOO_FFMPEG)\r
+            set(HAVE_FFMPEG 1)\r
+        endif()    \r
+      endif()\r
+      # Find the bzip2 library because it is required on some systems\r
+      FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)\r
+      if(NOT BZIP2_LIBRARIES)\r
+        # Do an other trial\r
+        FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)\r
       endif()\r
-    else()\r
-      set(HAVE_FFMPEG FALSE)\r
     endif()\r
 \r
     if(WITH_1394)\r
@@ -366,7 +430,7 @@ if(UNIX)
                 include(FindJasper)\r
             else()\r
                 set(JASPER_FOUND FALSE)\r
-            endif()          \r
+            endif()\r
             if(WITH_JPEG)\r
                 include(FindJPEG)\r
             else()\r
@@ -384,47 +448,180 @@ if(UNIX)
     endif()\r
 endif()\r
 \r
-set(BUILD_PYTHON_SUPPORT OFF CACHE BOOL "Build with Python support")\r
+set(BUILD_NEW_PYTHON_SUPPORT ON CACHE BOOL "Build with Python support")\r
+set(BUILD_SWIG_PYTHON_SUPPORT OFF CACHE BOOL "Build with older SWIG-based Python support")\r
 set(BUILD_OCTAVE_SUPPORT OFF CACHE BOOL "Build with Octave support")\r
 \r
-find_package(SWIG)\r
-if(SWIG_FOUND)\r
-\r
+if(BUILD_SWIG_PYTHON_SUPPORT OR BUILD_NEW_PYTHON_SUPPORT)\r
     find_package(PythonInterp)\r
     find_package(PythonLibs)\r
-    \r
+\r
     # cmake 2.4 (at least on Ubuntu 8.04 (hardy)) don't define PYTHONLIBS_FOUND\r
     if(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH)\r
         set(PYTHONLIBS_FOUND ON)\r
     endif(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH)\r
+        \r
+    execute_process(COMMAND ${PYTHON_EXECUTABLE} --version\r
+              ERROR_VARIABLE PYTHON_VERSION_FULL\r
+              OUTPUT_STRIP_TRAILING_WHITESPACE)\r
+\r
+    string(REGEX MATCH "[0-9].[0-9]" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}")\r
+    if(UNIX)\r
+        set(PYTHON_PLUGIN_INSTALL_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages/opencv)\r
+        set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages)\r
+    endif()\r
+    if(WIN32)\r
+        get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE CACHE)\r
+        set(PYTHON_PLUGIN_INSTALL_PATH "${PYTHON_PATH}/Lib/site-packages/opencv")\r
+        set(PYTHON_PACKAGES_PATH "${PYTHON_PATH}/Lib/site-packages")\r
+    endif()\r
+\r
+    # Attempt to discover the NumPy include directory.  If this succeeds, build with NumPy\r
+\r
+    execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import numpy.distutils; print numpy.distutils.misc_util.get_numpy_include_dirs()[0]"\r
+                    RESULT_VARIABLE PYTHON_NUMPY_PROCESS\r
+                    OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS\r
+                    OUTPUT_STRIP_TRAILING_WHITESPACE)\r
+    if(PYTHON_NUMPY_PROCESS EQUAL 0)\r
+      set(PYTHON_USE_NUMPY 1)\r
+      add_definitions(-D PYTHON_USE_NUMPY=1)\r
+      include_directories(AFTER ${PYTHON_NUMPY_INCLUDE_DIRS})\r
+      message(STATUS "    Use INCLUDE: ${PYTHON_NUMPY_INCLUDE_DIRS}")\r
+    else()\r
+      set(PYTHON_USE_NUMPY 0)\r
+    endif()\r
+\r
+\r
+endif()\r
     \r
-    # Build with python if installed:\r
-    # ===================================================\r
-    if(PYTHONLIBS_FOUND AND BUILD_PYTHON_SUPPORT)\r
-        execute_process(COMMAND ${PYTHON_EXECUTABLE} --version\r
-                  ERROR_VARIABLE PYTHON_VERSION_FULL\r
-                  OUTPUT_STRIP_TRAILING_WHITESPACE)\r
-    \r
-        string(REGEX MATCH "[0-9].[0-9]" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}")\r
-        if(UNIX)\r
-            set(PYTHON_PLUGIN_INSTALL_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages/opencv)\r
+if(PYTHONLIBS_FOUND AND BUILD_SWIG_PYTHON_SUPPORT)\r
+    find_package(SWIG)\r
+endif()\r
+\r
+############################### TBB ################################\r
+\r
+if (WITH_TBB)\r
+    if (UNIX AND NOT APPLE)\r
+        PKG_CHECK_MODULES(TBB tbb)\r
+        message(STATUS "TBB detected: ${TBBLIB_FOUND}")\r
+            \r
+        if (TBB_FOUND) \r
+            set(HAVE_TBB 1)\r
+            if(NOT "${TBB_INCLUDE_DIRS}" STREQUAL "")\r
+                include_directories("${TBB_INCLUDE_DIRS}")\r
+            endif()\r
+            link_directories("${TBB_LIBRARY_DIRS}")\r
+            set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES})\r
+        else()\r
+            set(TBB_DEFAULT_INCLUDE_DIRS\r
+              "/opt/intel/tbb"\r
+              "/usr/local/include"\r
+              "/usr/include")  \r
         endif()\r
-        if(WIN32)\r
-            get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE CACHE)\r
-            set(PYTHON_PLUGIN_INSTALL_PATH "${PYTHON_PATH}/Lib/site-packages/opencv")\r
+    endif()        \r
+    if (APPLE)\r
+        set(TBB_DEFAULT_INCLUDE_DIRS\r
+          "/usr/include"\r
+          "/usr/local/include")  \r
+    endif() \r
+    if (WIN32)\r
+        set(TBB_DEFAULT_INCLUDE_DIRS\r
+          "C:/Program Files/Intel/TBB"\r
+          "C:/Program Files (x86)/Intel/TBB")     \r
+    endif()    \r
+    if (NOT HAVE_TBB)\r
+        find_path(TBB_INCLUDE_DIR "tbb/tbb.h"\r
+                  PATHS TBB_DEFAULT_INCLUDE_DIRS\r
+                  DOC "The path to TBB headers")\r
+        if (TBB_INCLUDE_DIR)\r
+            if (UNIX)\r
+                set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")\r
+                link_directories("${TBB_LIB_DIR}")\r
+            endif()\r
+            if (APPLE)\r
+                set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libtbb.dylib)\r
+            elseif (UNIX)\r
+                set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)\r
+            elseif (WIN32)\r
+               if (CMAKE_COMPILER_IS_GNUCXX)\r
+                   set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")\r
+                   link_directories("${TBB_LIB_DIR}")\r
+                   set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)\r
+               else()\r
+                   if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*)\r
+                       set(X86_64 1)\r
+                   endif()\r
+                   if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)\r
+                       set(X86_64 1)\r
+                   endif()\r
+                   if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*)\r
+                       set(X86 1)\r
+                   endif()\r
+                   if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i386*)\r
+                       set(X86 1)\r
+                   endif()\r
+                   if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*)\r
+                       set(X86 1)\r
+                   endif()\r
+                   \r
+                   set(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib")\r
+                   if (X86_64)\r
+                       set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64")\r
+                   elseif(X86)\r
+                       set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/ia32")\r
+                   endif()\r
+                   if (MSVC80)\r
+                       set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8")\r
+                   elseif(MSVC90)\r
+                       set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9")\r
+                   endif()\r
+                   set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory")\r
+                   link_directories("${TBB_LIB_DIR}")\r
+               endif()\r
+            endif()\r
+            \r
+            set(HAVE_TBB 1)\r
+            if(NOT "${TBB_INCLUDE_DIR}" STREQUAL "")\r
+                include_directories("${TBB_INCLUDE_DIR}")\r
+            endif()\r
         endif()\r
     endif()\r
-\r
 endif()\r
 \r
-if(WIN32)\r
-\r
+############################### IPP ################################\r
 set(IPP_FOUND)\r
+set(OPENCV_LOADER_PATH)\r
+\r
+if(UNIX)\r
+if(APPLE)\r
+    set(OPENCV_LOADER_PATH DYLD_LIBRARY_PATH)\r
+else()\r
+    set(OPENCV_LOADER_PATH LD_LIBRARY_PATH)\r
+endif()\r
+endif()\r
+\r
 foreach(v "6.1" "6.0" "5.3" "5.2" "5.1")\r
     if(NOT IPP_FOUND)\r
-        find_path(IPP_PATH "ippi-${v}.dll"\r
-            PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}\r
-            DOC "The path to IPP DLLs")\r
+        if(WIN32)\r
+            find_path(IPP_PATH "ippi-${v}.dll"\r
+                PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}\r
+                DOC "The path to IPP dynamic libraries")\r
+            if(NOT IPP_PATH)\r
+                find_path(IPP_PATH "ippiem64t-${v}.dll"\r
+                    PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}\r
+                    DOC "The path to IPP dynamic libraries")\r
+            endif()\r
+        endif()\r
+        if(UNIX)\r
+            find_path(IPP_PATH "libippi${CMAKE_SHARED_LIBRARY_SUFFIX}.${v}"\r
+                PATHS ${CMAKE_LIBRARY_PATH} ${CMAKE_SYSTEM_LIBRARY_PATH} ENV ${OPENCV_LOADER_PATH}\r
+                DOC "The path to IPP dynamic libraries")\r
+            if(NOT IPP_PATH)\r
+                find_path(IPP_PATH "libippiem64t${CMAKE_SHARED_LIBRARY_SUFFIX}.${v}"\r
+                    PATHS ${CMAKE_LIBRARY_PATH} ${CMAKE_SYSTEM_LIBRARY_PATH} ENV ${OPENCV_LOADER_PATH}\r
+                    DOC "The path to IPP dynamic libraries")\r
+            endif()\r
+        endif()\r
         if(IPP_PATH)\r
             file(GLOB IPP_HDRS "${IPP_PATH}/../include")\r
             if(IPP_HDRS)\r
@@ -435,25 +632,45 @@ foreach(v "6.1" "6.0" "5.3" "5.2" "5.1")
 endforeach()\r
 \r
 message(STATUS "IPP detected: ${IPP_FOUND}")\r
+\r
+if(WIN32 AND NOT MSVC)\r
+    set(IPP_FOUND)\r
+endif()\r
+\r
 set(USE_IPP ${IPP_FOUND} CACHE BOOL "Use IPP when available")\r
 \r
 if(IPP_FOUND AND USE_IPP)\r
     add_definitions(-DHAVE_IPP)\r
     include_directories("${IPP_PATH}/../include")\r
     link_directories("${IPP_PATH}/../lib")\r
-    set(IPP_LIBS ippsmerged.lib ippsemerged.lib ippimerged.lib ippiemerged.lib\r
-        ippvmmerged.lib ippvmemerged.lib ippccmerged.lib ippccemerged.lib\r
-        ippcvmerged.lib ippcvemerged.lib ippcorel.lib)\r
+    \r
+    file(GLOB em64t_files "${IPP_PATH}/../lib/*em64t*")\r
+    set(IPP_ARCH)\r
+    if(em64t_files)\r
+        set(IPP_ARCH "em64t")\r
+    endif()\r
+    \r
+    set(A ${CMAKE_STATIC_LIBRARY_PREFIX})\r
+    set(B ${IPP_ARCH}${CMAKE_STATIC_LIBRARY_SUFFIX})\r
+    if(WIN32)\r
+        set(L l)\r
+    else()\r
+        set(L)\r
+    endif()\r
+    set(IPP_LIBS ${A}ippsmerged${B} ${A}ippsemerged${B}\r
+                 ${A}ippimerged${B} ${A}ippiemerged${B}\r
+                 ${A}ippvmmerged${B} ${A}ippvmemerged${B}\r
+                 ${A}ippccmerged${B} ${A}ippccemerged${B}\r
+                 ${A}ippcvmerged${B} ${A}ippcvemerged${B}\r
+                 ${A}ippcore${IPP_ARCH}${L}${CMAKE_STATIC_LIBRARY_SUFFIX})\r
 endif()\r
 \r
-endif()\r
 \r
-if(UNIX OR APPLE OR ${CMAKE_GENERATOR} MATCHES "MSYS Makefiles")\r
-    set(BUILD_LATEX_DOCS OFF CACHE BOOL "Build LaTeX OpenCV Documentation")\r
-endif()\r
+################## LATEX ##################\r
+set(BUILD_LATEX_DOCS OFF CACHE BOOL "Build LaTeX OpenCV Documentation")\r
 \r
 # ----------------------------------------------------------------------------\r
-#                              UPDATE CONFIG FILES & SCRIPTS:\r
+#                   UPDATE CONFIG FILES & SCRIPTS:\r
 #\r
 #  CONFIGURE_FILE(InputFile OutputFile [COPYONLY] [ESCAPE_QUOTES] [@ONLY])\r
 # If @ONLY is specified, only variables of the form @VAR@ will be\r
@@ -479,14 +696,11 @@ include_directories("."
     )\r
 \r
 # ----------------------------------------------------------------------------\r
-#                      Set the maximum level of warnings:\r
+#           Set the maximum level of warnings:\r
 # ----------------------------------------------------------------------------\r
 # Should be set to true for development\r
 set(OPENCV_WARNINGS_ARE_ERRORS OFF CACHE BOOL "Treat warnings as errors")\r
 \r
-# Whole program optimization?\r
-set(OPENCV_WHOLE_PROGRAM_OPTIMIZATION OFF CACHE BOOL "Flags for whole program optimization.")\r
-\r
 set(EXTRA_C_FLAGS "")\r
 set(EXTRA_C_FLAGS_RELEASE "")\r
 set(EXTRA_C_FLAGS_DEBUG "")\r
@@ -500,19 +714,15 @@ if(MSVC)
     if(MSVC80)\r
         set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Wp64")\r
     endif()\r
+    #if(MSVC90)\r
+    #    set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _BIND_TO_CURRENT_CRT_VERSION=1 /D _BIND_TO_CURRENT_VCLIBS_VERSION=1")\r
+    #endif()\r
 \r
     set(EXTRA_EXE_LINKER_FLAGS_RELEASE "${EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug")\r
 \r
-    # Whole program optimization\r
-    if(OPENCV_WHOLE_PROGRAM_OPTIMIZATION AND MSVC_VERSION GREATER 1300)\r
-        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /GL")\r
-        set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /LTCG")\r
-        set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS_RELEASE} /LTCG")\r
-    endif()\r
-\r
-    if(ENABLE_OPENMP)\r
-        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /openmp")\r
-    endif()\r
+    #if(ENABLE_OPENMP)\r
+    #    set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /openmp")\r
+    #endif()\r
 \r
     # Remove unreferenced functions: function level linking\r
     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Gy")\r
@@ -520,11 +730,21 @@ if(MSVC)
 endif()\r
 \r
 if(CMAKE_COMPILER_IS_GNUCXX)\r
+\r
+    if(WIN32)\r
+        if(CMAKE_CXX_COMPILER MATCHES "64")\r
+            set(MINGW64 1)\r
+        endif()\r
+    endif()\r
+\r
     # High level of warnings.\r
     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall")\r
 \r
     # The -Wno-long-long is required in 64bit systems when including sytem headers.\r
-    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64* OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)\r
+    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)\r
+    set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long")\r
+    endif()\r
+    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*)\r
     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long")\r
     endif()\r
 \r
@@ -537,9 +757,12 @@ if(CMAKE_COMPILER_IS_GNUCXX)
         set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror")\r
     endif()\r
 \r
-    # Whole program optimization\r
-    if(OPENCV_WHOLE_PROGRAM_OPTIMIZATION)\r
-        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fwhole-program --combine")\r
+    if(X86)\r
+        if(NOT X86_64)\r
+            if(NOT APPLE)\r
+                set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -march=i686")\r
+            endif()\r
+        endif()\r
     endif()\r
 \r
     # Other optimizations\r
@@ -555,23 +778,39 @@ if(CMAKE_COMPILER_IS_GNUCXX)
     if(USE_FAST_MATH)\r
        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -ffast-math")\r
     endif()\r
-    if(USE_POWERPC)\r
+    if(ENABLE_POWERPC)\r
        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mcpu=G3 -mtune=G5")\r
     endif()\r
-    if(USE_MMX)\r
-       set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mmmx")\r
-    endif()\r
-    # SSE should be disabled under MingW because it generates compiler errors\r
-    if(USE_SSE)\r
+    if(ENABLE_SSE)\r
        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse")\r
     endif()\r
-    # SSE2 should be disabled under MingW because it generates compiler errors\r
-    if(USE_SSE2)\r
+    if(ENABLE_SSE2)\r
        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse2")\r
     endif()\r
-    # SSE3 should be disabled under MingW because it generates compiler errors\r
-    if(USE_SSE3 AND NOT MINGW)\r
-       set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3")\r
+    # SSE3 and further should be disabled under MingW because it generates compiler errors\r
+    if(NOT MINGW)\r
+       if(ENABLE_SSE3)\r
+          set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3")\r
+       endif()\r
+       if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 402)\r
+          set(HAVE_GCC43_OR_NEWER 1)\r
+       endif()\r
+       if(HAVE_GCC43_OR_NEWER OR APPLE)\r
+          if(ENABLE_SSSE3)\r
+             set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mssse3")\r
+          endif()\r
+          #if(ENABLE_SSE4_1)\r
+          #   set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.1")\r
+          #endif()\r
+       endif()\r
+    endif()\r
+    \r
+    if(X86 OR X86_64)\r
+        if(NOT APPLE)\r
+            if(${CMAKE_SIZEOF_VOID_P} EQUAL 4)\r
+                set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mfpmath=387")\r
+            endif()\r
+        endif()\r
     endif()\r
 \r
     # Profiling?\r
@@ -585,33 +824,43 @@ if(CMAKE_COMPILER_IS_GNUCXX)
     endif()\r
 \r
     # Parallel mode\r
-    if(ENABLE_OPENMP)\r
-        set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -D_GLIBCXX_PARALLEL -fopenmp")\r
-    endif()\r
+    #if(ENABLE_OPENMP)\r
+    #    set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -D_GLIBCXX_PARALLEL -fopenmp")\r
+    #    set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} gomp)\r
+    #endif()\r
 \r
     set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG")\r
     set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -O0 -DDEBUG -D_DEBUG")\r
 endif()\r
 \r
+# Extra link libs if the user selects building static libs:\r
+IF(NOT BUILD_SHARED_LIBS)\r
+    if(CMAKE_COMPILER_IS_GNUCXX)\r
+        set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} stdc++)\r
+    endif()\r
+\r
+    set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} flann zlib opencv_lapack)\r
+endif()\r
+\r
 \r
 # Add user supplied extra options (optimization, etc...)\r
 # ==========================================================\r
-set(OPENCV_EXTRA_C_FLAGS ${EXTRA_C_FLAGS} CACHE STRING "Extra compiler options")\r
-set(OPENCV_EXTRA_C_FLAGS_RELEASE ${EXTRA_C_FLAGS_RELEASE} CACHE STRING "Extra compiler options for Release build")\r
-set(OPENCV_EXTRA_C_FLAGS_DEBUG ${EXTRA_C_FLAGS_DEBUG} CACHE STRING "Extra compiler options for Debug build")\r
-set(OPENCV_EXTRA_EXE_LINKER_FLAGS ${EXTRA_EXE_LINKER_FLAGS} CACHE STRING "Extra linker flags" FORCE)\r
-set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE ${EXTRA_EXE_LINKER_FLAGS_RELEASE} CACHE STRING "Extra linker flags for Release build" FORCE)\r
-set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG ${EXTRA_EXE_LINKER_FLAGS_DEBUG} CACHE STRING "Extra linker flags for Debug build" FORCE)\r
-\r
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
-set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
-set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
-set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
-set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}")\r
-set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}")\r
-set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}")\r
+set(OPENCV_EXTRA_C_FLAGS "" CACHE STRING "Extra compiler options")\r
+set(OPENCV_EXTRA_C_FLAGS_RELEASE "" CACHE STRING "Extra compiler options for Release build")\r
+set(OPENCV_EXTRA_C_FLAGS_DEBUG "" CACHE STRING "Extra compiler options for Debug build")\r
+set(OPENCV_EXTRA_EXE_LINKER_FLAGS "" CACHE STRING "Extra linker flags" FORCE)\r
+set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "Extra linker flags for Release build" FORCE)\r
+set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "Extra linker flags for Debug build" FORCE)\r
+\r
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
+set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
+set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
+set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
+set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}")\r
+set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}")\r
+set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}")\r
 \r
 # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:\r
 if (${CMAKE_GENERATOR} MATCHES ".*Makefiles")\r
@@ -628,6 +877,14 @@ if (WIN32 AND MSVC)
     string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")\r
     string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")\r
     string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")\r
+\r
+    # allow extern "C" functions throw exceptions\r
+    string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")\r
+    string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")\r
+    string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")\r
+    string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")\r
+    string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")\r
+    string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")\r
 endif()\r
 \r
 if("${CMAKE_CONFIGURE_LDFLAGS}")\r
@@ -635,7 +892,7 @@ if("${CMAKE_CONFIGURE_LDFLAGS}")
 endif("${CMAKE_CONFIGURE_LDFLAGS}")\r
 \r
 # ----------------------------------------------------------------------------\r
-#                                              PROCESS SUBDIRECTORIES:\r
+#                       PROCESS SUBDIRECTORIES:\r
 # ----------------------------------------------------------------------------\r
 # Save libs and executables in the same place\r
 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Output directory for libraries" )\r
@@ -647,34 +904,6 @@ else()
 set(OPENCV_DOC_INSTALL_PATH share/opencv/doc)\r
 endif()\r
 \r
-#-----------------------------------\r
-# Subdirectories:\r
-#-----------------------------------\r
-add_subdirectory(src)\r
-add_subdirectory(apps)\r
-add_subdirectory(doc)\r
-add_subdirectory(data)\r
-\r
-if(BUILD_EXAMPLES OR INSTALL_PYTHON_EXAMPLES OR INSTALL_OCTAVE_EXAMPLES)\r
-    add_subdirectory(samples)\r
-endif()\r
-\r
-if(BUILD_TESTS)\r
-    enable_testing()\r
-    add_subdirectory(tests)\r
-endif()\r
-\r
-add_subdirectory(interfaces)\r
-add_subdirectory(3rdparty)\r
-\r
-if(BUILD_LATEX_DOCS)\r
-    include(OpenCVFindLATEX.cmake REQUIRED)\r
-    if(PDFLATEX_COMPILER)\r
-        message(STATUS "PDF LaTeX found!")\r
-        add_subdirectory(doc2)\r
-    endif()\r
-endif()\r
-\r
 # --------------------------------------------------------------------------------------------\r
 #   Installation for CMake Module:  OpenCVConfig.cmake\r
 #  Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake              -> For use *without* "make install"\r
@@ -683,7 +912,7 @@ endif()
 # -------------------------------------------------------------------------------------------\r
 \r
 # -------------------------------------------------------------------------------------------\r
-#  Part 1/2: ${BIN_DIR}/OpenCVConfig.cmake              -> For use *without* "make install"\r
+#  Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake              -> For use *without* "make install"\r
 # -------------------------------------------------------------------------------------------\r
 \r
 # Name of libraries is: libcv.so.1.1.0, etc...\r
@@ -691,17 +920,14 @@ endif()
 # Already done above.\r
 \r
 # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
-set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE)\r
-list(APPEND CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\"")\r
-list(APPEND CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${CMAKE_CURRENT_SOURCE_DIR}/include\"")\r
-list(APPEND CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"")\r
+set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${CMAKE_CURRENT_SOURCE_DIR}/include\" \"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"")\r
 \r
-set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"${LIBRARY_OUTPUT_PATH}\"")\r
+set(CMAKE_LIB_DIRS_CONFIGCMAKE "${LIBRARY_OUTPUT_PATH}")\r
 \r
 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
 \r
 # --------------------------------------------------------------------------------------------\r
-#  Part 2/2: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install"\r
+#  Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install"\r
 # -------------------------------------------------------------------------------------------\r
 # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
 \r
@@ -721,17 +947,17 @@ endif()
 #  Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake  -> For use within binary installers/packages\r
 # -------------------------------------------------------------------------------------------\r
 if(WIN32)\r
-       # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
-       \r
-       # This will expand to, for example, <program files>/OpenCV 1.1.0/include\r
-       set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/include\" \"\${THIS_OPENCV_CONFIG_PATH}/include/opencv\"")\r
+    # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
+    \r
+    # This will expand to, for example, <program files>/OpenCV 1.1.0/include\r
+    set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/include\" \"\${THIS_OPENCV_CONFIG_PATH}/include/opencv\"")\r
 \r
-       # This will expand to, for example, <program files>/OpenCV 1.1.0/lib\r
-       set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/lib\"")\r
+    # This will expand to, for example, <program files>/OpenCV 1.1.0/lib\r
+    set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/lib\"")\r
 \r
-       #exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/win-install/\"")\r
-       exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"")\r
-       configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
+    #exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/win-install/\"")\r
+    exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"")\r
+    configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
 endif()\r
 \r
 \r
@@ -742,10 +968,10 @@ endif()
 # libdir=${exec_prefix}/lib\r
 # includedir=${prefix}/include/opencv\r
 # -------------------------------------------------------------------------------------------\r
-set(prefix             ${CMAKE_INSTALL_PREFIX})\r
-set(exec_prefix                "\${prefix}")\r
-set(libdir             "\${exec_prefix}/lib")\r
-set(includedir         "\${prefix}/include")\r
+set(prefix      ${CMAKE_INSTALL_PREFIX})\r
+set(exec_prefix     "\${prefix}")\r
+set(libdir      "\${exec_prefix}/lib")\r
+set(includedir      "\${prefix}/include")\r
 set(VERSION             ${OPENCV_VERSION})\r
 \r
 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/opencv.pc.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/opencv.pc" @ONLY IMMEDIATE)\r
@@ -767,72 +993,100 @@ ADD_CUSTOM_TARGET(uninstall
   "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")\r
 \r
 \r
-# Make sure the system libraries are also copied when doing an "INSTALL":\r
-# ----------------------------------------------------------------------------\r
-include(InstallRequiredSystemLibraries)\r
-\r
-\r
 # ----------------------------------------------------------------------------\r
 #   CPack target\r
 # ----------------------------------------------------------------------------\r
 \r
-option(BUILD_PACKAGE "Build a installer with the SDK")\r
+set(BUILD_PACKAGE OFF CACHE BOOL "Build a installer with the SDK")\r
 \r
 if(BUILD_PACKAGE)\r
 \r
-       configure_file(\r
-       Package.cmake.in\r
-       ${CMAKE_BINARY_DIR}/.cpack/Package.cmake\r
-       @ONLY\r
-       )\r
-       \r
-       install(FILES \r
-               AUTHORS\r
-               ChangeLog\r
-               COPYING\r
-               INSTALL\r
-               NEWS\r
-               README\r
-               THANKS\r
-               TODO\r
-               DESTINATION ${OPENCV_DOC_INSTALL_PATH}\r
-        COMPONENT doc\r
-               )\r
-\r
-       IF (WIN32)\r
-               # Add the "win-install/OpenCVConfig.cmake" file to the "dev" install component \r
-               install(FILES \r
-                       "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake"\r
-                       DESTINATION "."\r
-                       COMPONENT dev\r
-                       )\r
-\r
-               # Add debug libs to "dev" install component \r
-               file(GLOB EXTRA_LIBS_TO_INSTALL "${CMAKE_BINARY_DIR}/lib/Debug/*.lib")\r
-               install(FILES \r
-                       ${EXTRA_LIBS_TO_INSTALL}\r
-                       DESTINATION "lib"\r
-                       COMPONENT dev\r
-                       )\r
-               # Add debug DLLs to "dev" install component \r
-               file(GLOB EXTRA_DLLS_TO_INSTALL "${CMAKE_BINARY_DIR}/bin/Debug/*.dll")\r
-               install(FILES \r
-                       ${EXTRA_DLLS_TO_INSTALL}\r
-                       DESTINATION "bin"\r
-                       COMPONENT dev\r
-                       )\r
-       ENDIF(WIN32)\r
-               \r
-       include(${CMAKE_BINARY_DIR}/.cpack/Package.cmake)\r
-       \r
+    configure_file(\r
+    Package.cmake.in\r
+    ${CMAKE_BINARY_DIR}/.cpack/Package.cmake\r
+    @ONLY\r
+    )\r
+    \r
+    include(${CMAKE_BINARY_DIR}/.cpack/Package.cmake)\r
+\r
+    set(root_files README)\r
+\r
+    file(GLOB root_src_files *.in *.cmake CMakeLists.txt)\r
+\r
+    if (NOT WIN32)\r
+        install(FILES ${root_files}\r
+                DESTINATION ${OPENCV_DOC_INSTALL_PATH}\r
+                COMPONENT main)\r
+    else()\r
+        install(FILES ${root_files}\r
+                DESTINATION "."\r
+                COMPONENT main)\r
+        install(FILES ${root_src_files}\r
+                DESTINATION "."\r
+                COMPONENT src)\r
+        # Add the "win-install/OpenCVConfig.cmake" file to the "main" install component \r
+        install(FILES \r
+            "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake"\r
+            DESTINATION "."\r
+            COMPONENT main\r
+            )\r
+\r
+        if(CMAKE_INSTALL_DEBUG_LIBRARIES)\r
+            foreach(m cxcore cv cvaux ml highgui opencv_ffmpeg)\r
+                install(FILES ${CMAKE_BINARY_DIR}/bin/Debug/${m}${OPENCV_DLLVERSION}d.dll\r
+            DESTINATION bin COMPONENT main)\r
+                install(FILES ${CMAKE_BINARY_DIR}/lib/Debug/${m}${OPENCV_DLLVERSION}d.lib\r
+            DESTINATION lib COMPONENT main)\r
+            endforeach()     \r
+        endif()\r
+\r
+        install(DIRECTORY data samples DESTINATION "." COMPONENT main PATTERN ".svn" EXCLUDE)\r
+        install(DIRECTORY 3rdparty apps interfaces src tests utils DESTINATION "." COMPONENT src PATTERN ".svn" EXCLUDE)\r
+        install(DIRECTORY doc/ DESTINATION doc COMPONENT src FILES_MATCHING PATTERN "*.tex")\r
+        install(DIRECTORY doc/pics DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE)\r
+        install(DIRECTORY doc/plastex DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE)\r
+    \r
+    endif()\r
 endif()\r
 \r
+\r
+#-----------------------------------\r
+# Subdirectories:\r
+#-----------------------------------\r
+add_subdirectory(src)\r
+add_subdirectory(apps)\r
+\r
+if(BUILD_LATEX_DOCS)\r
+  include(OpenCVFindLATEX.cmake REQUIRED)\r
+    \r
+  if(PDFLATEX_COMPILER)\r
+    message(STATUS "PDF LaTeX found!")\r
+  endif()\r
+endif()\r
+\r
+add_subdirectory(doc)\r
+add_subdirectory(data)\r
+\r
+if(BUILD_EXAMPLES OR INSTALL_PYTHON_EXAMPLES OR INSTALL_OCTAVE_EXAMPLES)\r
+    add_subdirectory(samples)\r
+endif()\r
+\r
+if(BUILD_TESTS)\r
+    enable_testing()\r
+    add_subdirectory(tests)\r
+endif()\r
+\r
+add_subdirectory(interfaces)\r
+add_subdirectory(3rdparty)\r
+\r
+\r
 # ----------------------------------------------------------------------------\r
 #   Sumary:\r
 # ----------------------------------------------------------------------------\r
 message(STATUS "")\r
 message(STATUS "General configuration for opencv ${OPENCV_VERSION} =====================================")\r
 message(STATUS "")\r
+message(STATUS "    Built as dynamic libs?:    ${BUILD_SHARED_LIBS}")\r
 message(STATUS "    Compiler:                  ${CMAKE_COMPILER}")\r
 message(STATUS "    C++ flags (Release):       ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")\r
 message(STATUS "    C++ flags (Debug):         ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")\r
@@ -844,27 +1098,50 @@ message(STATUS "    Linker flags (Release):    ${CMAKE_SHARED_LINKER_FLAGS} ${CM
 message(STATUS "    Linker flags (Debug):      ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")\r
 endif()\r
 \r
-if(UNIX)\r
-if(NOT APPLE)\r
+if(UNIX AND NOT APPLE)\r
 message(STATUS "")\r
 message(STATUS "  GUI: ")\r
 message(STATUS "    GTK+ 2.x:                  ${HAVE_GTK}")\r
 message(STATUS "    GThread:                   ${HAVE_GTHREAD}")\r
 message(STATUS "")\r
-if(NOT OPENCV_BUILD_3RDPARTY_LIBS)\r
+endif()\r
+\r
+if(APPLE)\r
+message(STATUS "")\r
+if(HAVE_CARBON)\r
+message(STATUS "  GUI Back-end:                Carbon")\r
+else()\r
+message(STATUS "  GUI Back-end:                Cocoa")\r
+endif()\r
+message(STATUS "")\r
+endif() \r
+\r
 message(STATUS "  Image I/O: ")\r
+if(NOT WITH_JPEG OR JPEG_FOUND)\r
 message(STATUS "    JPEG:                      ${JPEG_FOUND}")\r
-message(STATUS "    PNG:                       ${PNG_FOUND}")\r
-message(STATUS "    TIFF:                      ${TIFF_FOUND}")\r
-message(STATUS "    JASPER:                    ${JASPER_FOUND}")\r
 else()\r
-message(STATUS "  Image I/O: ")\r
 message(STATUS "    JPEG:                      build")\r
+endif()\r
+\r
+if(NOT WITH_PNG OR PNG_FOUND)\r
+message(STATUS "    PNG:                       ${PNG_FOUND}")\r
+else()\r
 message(STATUS "    PNG:                       build")\r
+endif()\r
+\r
+if(NOT WITH_TIFF OR TIFF_FOUND)\r
+message(STATUS "    TIFF:                      ${TIFF_FOUND}")\r
+else()\r
 message(STATUS "    TIFF:                      build")\r
-message(STATUS "    JASPER:                    build")\r
 endif()\r
+\r
+if(NOT WITH_JASPER OR JASPER_FOUND)\r
+message(STATUS "    JPEG 2000:                 ${JASPER_FOUND}")\r
+else()\r
+message(STATUS "    JPEG 2000:                 build")\r
 endif()\r
+\r
+if(UNIX AND NOT APPLE)\r
 message(STATUS "")\r
 message(STATUS "  Video I/O: ")\r
 message(STATUS "    DC1394 1.x:                ${HAVE_DC1394}")\r
@@ -873,9 +1150,11 @@ message(STATUS "    FFMPEG:                    ${HAVE_FFMPEG}")
 message(STATUS "      codec:                   ${HAVE_FFMPEG_CODEC}")\r
 message(STATUS "      format:                  ${HAVE_FFMPEG_FORMAT}")\r
 message(STATUS "      util:                    ${HAVE_FFMPEG_UTIL}")\r
+message(STATUS "      swscale:                 ${HAVE_FFMPEG_SWSCALE}")\r
 message(STATUS "      gentoo-style:            ${HAVE_GENTOO_FFMPEG}")\r
 message(STATUS "    GStreamer:                 ${HAVE_GSTREAMER}")\r
 message(STATUS "    UniCap:                    ${HAVE_UNICAP}")\r
+message(STATUS "    PvAPI:                     ${HAVE_PVAPI}")\r
 if(HAVE_LIBV4L)\r
 message(STATUS "    V4L/V4L2:                  Using libv4l")\r
 else()\r
@@ -883,18 +1162,39 @@ message(STATUS "    V4L/V4L2:                  ${HAVE_CAMV4L}/${HAVE_CAMV4L2}")
 endif()\r
 message(STATUS "    Xine:                      ${HAVE_XINE}")\r
 endif()\r
+\r
+if(APPLE)\r
+message(STATUS "")\r
+if(WITH_QUICKTIME)\r
+message(STATUS "  Video I/O:                   QuickTime")\r
+else()\r
+message(STATUS "  Video I/O:                   QTKit")\r
+endif()\r
+endif()\r
+\r
 message(STATUS "")\r
 message(STATUS "  Interfaces: ")\r
-if(PYTHONLIBS_FOUND AND BUILD_PYTHON_SUPPORT)\r
-message(STATUS "    Python:                    1")\r
+if(PYTHONLIBS_FOUND AND BUILD_SWIG_PYTHON_SUPPORT)\r
+message(STATUS "    Old Python:                1")\r
 else()\r
-message(STATUS "    Python:                    0")\r
+message(STATUS "    Old Python:                0")\r
 endif()\r
+message(STATUS "    Python:                    ${BUILD_NEW_PYTHON_SUPPORT}")\r
+message(STATUS "    Python interpreter:        ${PYTHON_EXECUTABLE}")\r
+message(STATUS "    Python numpy:              ${PYTHON_USE_NUMPY}")\r
+\r
 if(IPP_FOUND AND USE_IPP)\r
-message(STATUS "    Use IPP:                   1")\r
+message(STATUS "    Use IPP:                   ${IPP_PATH}")\r
 else()\r
-message(STATUS "    Use IPP:                   0")\r
+message(STATUS "    Use IPP:                   NO")\r
 endif()\r
+\r
+if(HAVE_TBB)\r
+message(STATUS "    Use TBB:                   YES")\r
+else()\r
+message(STATUS "    Use TBB:                   NO")\r
+endif()\r
+\r
 if(BUILD_LATEX_DOCS AND PDFLATEX_COMPILER)\r
 message(STATUS "    Build Documentation        1")\r
 else()\r