]> rtime.felk.cvut.cz Git - opencv.git/blob - opencv/CMakeLists.txt
Calonder sample parameters were modified
[opencv.git] / opencv / CMakeLists.txt
1 # ----------------------------------------------------------------------------\r
2 #  Root CMake file for OpenCV\r
3 #\r
4 #    From the off-tree build directory, invoke:\r
5 #      $ cmake <PATH_TO_OPENCV_ROOT>\r
6 #\r
7 #\r
8 #   - OCT-2008: Initial version <joseluisblancoc@gmail.com>\r
9 #\r
10 # ----------------------------------------------------------------------------\r
11 \r
12 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)\r
13 # Add these standard paths to the search paths for FIND_LIBRARY\r
14 # to find libraries from these locations first\r
15 if(UNIX)\r
16   set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /lib /usr/lib)\r
17 endif()\r
18 # it _must_ go before PROJECT(OpenCV) in order to work\r
19 if (NOT CMAKE_INSTALL_PREFIX)\r
20     if (WIN32)\r
21         set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR} CACHE INTERNAL "" FORCE)\r
22     elseif()\r
23         set(CMAKE_INSTALL_PREFIX "/usr" CACHE INTERNAL "" FORCE)\r
24     endif()\r
25 endif()\r
26 \r
27 set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)\r
28 set(CMAKE_C_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)\r
29 set(CMAKE_C_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)\r
30 set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)\r
31 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)\r
32 set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)\r
33 set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)\r
34 set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)\r
35 set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)\r
36 set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)\r
37 set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)\r
38 \r
39 project(OpenCV)\r
40 \r
41 cmake_minimum_required(VERSION 2.4)\r
42 \r
43 if(MSVC)\r
44     set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)\r
45 endif()\r
46 \r
47 #set(CMAKE_C_COMPILER "/opt/BullseyeCoverage/bin/gcc")\r
48 #set(CMAKE_CXX_COMPILER "/opt/BullseyeCoverage/bin/g++")\r
49 #set(CMAKE_CXX_COMPILER_INIT "/opt/BullseyeCoverage/bin/gcc")\r
50 \r
51 # --------------------------------------------------------------\r
52 # Indicate CMake 2.7 and above that we don't want to mix relative\r
53 #  and absolute paths in linker lib lists.\r
54 # Run "cmake --help-policy CMP0003" for more information.\r
55 # --------------------------------------------------------------\r
56 if(COMMAND cmake_policy)\r
57     cmake_policy(SET CMP0003 NEW)\r
58 endif()\r
59 \r
60 # ----------------------------------------------------------------------------\r
61 #  Current version number:\r
62 # ----------------------------------------------------------------------------\r
63 set(OPENCV_VERSION "2.1.0")\r
64 \r
65 string(REGEX MATCHALL "[0-9]" OPENCV_VERSION_PARTS "${OPENCV_VERSION}")\r
66 \r
67 list(GET OPENCV_VERSION_PARTS 0 OPENCV_VERSION_MAJOR)\r
68 list(GET OPENCV_VERSION_PARTS 1 OPENCV_VERSION_MINOR)\r
69 list(GET OPENCV_VERSION_PARTS 2 OPENCV_VERSION_PATCH)\r
70 \r
71 set(OPENCV_SOVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}")\r
72 \r
73 if(WIN32)\r
74     # Postfix of DLLs:\r
75     set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")\r
76     set(OPENCV_DEBUG_POSTFIX d)\r
77 else()\r
78     # Postfix of so's:\r
79     #set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")\r
80     set(OPENCV_DLLVERSION "")\r
81     set(OPENCV_DEBUG_POSTFIX)\r
82 endif()\r
83 \r
84 \r
85 # ----------------------------------------------------------------------------\r
86 # Build static or dynamic libs?\r
87 # ----------------------------------------------------------------------------\r
88 # Default: dynamic libraries:\r
89 SET(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")\r
90 IF(BUILD_SHARED_LIBS)\r
91         SET(OPENCV_BUILD_SHARED_LIB 1) # For cvconfig.h, etc.\r
92 ELSE(BUILD_SHARED_LIBS)\r
93         SET(OPENCV_BUILD_SHARED_LIB 0)\r
94 ENDIF(BUILD_SHARED_LIBS)\r
95 \r
96 # ----------------------------------------------------------------------------\r
97 #  Variables for cvconfig.h.cmake\r
98 # ----------------------------------------------------------------------------\r
99 set(PACKAGE "opencv")\r
100 set(PACKAGE_BUGREPORT "opencvlibrary-devel@lists.sourceforge.net")\r
101 set(PACKAGE_NAME "opencv")\r
102 set(PACKAGE_STRING "${PACKAGE} ${OPENCV_VERSION}")\r
103 set(PACKAGE_TARNAME "${PACKAGE}")\r
104 set(PACKAGE_VERSION "${OPENCV_VERSION}")\r
105 \r
106 # ----------------------------------------------------------------------------\r
107 #  Autodetect if we are in a SVN repository\r
108 # ----------------------------------------------------------------------------\r
109 find_program(SVNVERSION_PATH svnversion)\r
110 mark_as_advanced(force SVNVERSION_PATH)\r
111 if(SVNVERSION_PATH)\r
112     message(STATUS "Extracting svn version, please wait...")\r
113     execute_process(COMMAND ${SVNVERSION_PATH} -n ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT)\r
114 \r
115     if(SVNVERSION_RESULT MATCHES "exported")\r
116        # This is NOT a svn repository:\r
117        set(OPENCV_SVNVERSION "")\r
118     else()\r
119         set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}")\r
120     endif()\r
121 \r
122     message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}")\r
123 else()\r
124     # We don't have svnversion:\r
125     set(OPENCV_SVNVERSION "")\r
126 endif()\r
127 \r
128 # ----------------------------------------------------------------------------\r
129 # Detect GNU version:\r
130 # ----------------------------------------------------------------------------\r
131 if(CMAKE_COMPILER_IS_GNUCXX)\r
132     execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version\r
133                   OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL\r
134                   OUTPUT_STRIP_TRAILING_WHITESPACE)\r
135 \r
136     # Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)"\r
137     #  Look for the version number\r
138     string(REGEX MATCH "[0-9].[0-9].[0-9]" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")\r
139 \r
140     # Split the three parts:\r
141     string(REGEX MATCHALL "[0-9]" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}")\r
142 \r
143     list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR)\r
144     list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR)\r
145     \r
146     set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})\r
147     math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}")\r
148     message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})")\r
149 endif()\r
150 \r
151 # ----------------------------------------------------------------------------\r
152 # Detect Intel ICC compiler -- for -fPIC in 3rdparty ( UNIX ONLY ):\r
153 #  see  include/opencv/cxtypes.h file for related   ICC & CV_ICC defines.\r
154 # NOTE: The system needs to determine if the '-fPIC' option needs to be added\r
155 #  for the 3rdparty static libs being compiled.  The CMakeLists.txt files\r
156 #  in 3rdparty use the CV_ICC definition being set here to determine if\r
157 #  the -fPIC flag should be used.\r
158 # ----------------------------------------------------------------------------\r
159 if(UNIX)\r
160         if  (__ICL)\r
161                 set(CV_ICC   __ICL)\r
162         elseif(__ICC)\r
163                 set(CV_ICC   __ICC)\r
164         elseif(__ECL)\r
165                 set(CV_ICC   __ECL)\r
166         elseif(__ECC)\r
167                 set(CV_ICC   __ECC)\r
168         elseif(__INTEL_COMPILER)\r
169                 set(CV_ICC   __INTEL_COMPILER)\r
170         elseif(CMAKE_C_COMPILER MATCHES "icc")\r
171                 set(CV_ICC   icc_matches_c_compiler)\r
172         endif()\r
173 endif()\r
174 \r
175 # ----------------------------------------------------------------------------\r
176 #       CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..\r
177 # ----------------------------------------------------------------------------\r
178 \r
179 # Build/install (or not) some apps:\r
180 # ===================================================\r
181 set(BUILD_EXAMPLES OFF CACHE BOOL "Build all examples")\r
182 set(INSTALL_C_EXAMPLES OFF CACHE BOOL "Install C examples")\r
183 set(INSTALL_PYTHON_EXAMPLES OFF CACHE BOOL "Install Python examples")\r
184 set(INSTALL_OCTAVE_EXAMPLES OFF CACHE BOOL "Install Octave examples")\r
185 \r
186 # Build tests:\r
187 # ===================================================\r
188 set(BUILD_TESTS ON CACHE BOOL "Build tests")\r
189 \r
190 # Build 3rdparty libraries under unix\r
191 # ===================================================\r
192 if(WIN32 OR APPLE)\r
193     set(OPENCV_BUILD_3RDPARTY_LIBS TRUE  CACHE BOOL "Build 3rd party libraries")\r
194 else()\r
195     set(OPENCV_BUILD_3RDPARTY_LIBS FALSE CACHE BOOL "Build 3rd party libraries")\r
196 endif()\r
197 \r
198 include(OpenCVPCHSupport.cmake REQUIRED)\r
199 \r
200 if(UNIX)\r
201     include(OpenCVFindPkgConfig.cmake OPTIONAL)\r
202     include(CheckFunctionExists)\r
203     include(CheckIncludeFile)\r
204 endif()\r
205 \r
206 #if(MSVC)\r
207 #       set(DEFAULT_ENABLE_OPENMP ON)\r
208 #else()\r
209 #       set(DEFAULT_ENABLE_OPENMP OFF)\r
210 #endif()\r
211 #set(ENABLE_OPENMP ${DEFAULT_ENABLE_OPENMP} CACHE BOOL "")\r
212 \r
213 if(CMAKE_COMPILER_IS_GNUCXX)\r
214     set(ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)")\r
215     set(USE_OMIT_FRAME_POINTER ON CACHE BOOL "Enable -fomit-frame-pointer for GCC")\r
216     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES arm*)\r
217         # We can use only -O2 because the -O3 causes gcc crash\r
218         set(USE_O2 ON CACHE BOOL "Enable -O2 for GCC")\r
219         set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
220     endif()\r
221     \r
222     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*)\r
223         set(X86_64 1)\r
224     endif()\r
225     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)\r
226         set(X86_64 1)\r
227     endif()\r
228     \r
229     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686*)\r
230         set(X86 1)\r
231     endif()\r
232     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i386*)\r
233         set(X86 1)\r
234     endif()\r
235     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*)\r
236         set(X86 1)\r
237     endif()\r
238         \r
239     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc*)\r
240         set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
241         set(ENABLE_POWERPC ON CACHE BOOL "Enable PowerPC for GCC")\r
242     endif ()\r
243     \r
244     if(X86 OR X86_64)\r
245         # enable everything, since the available set of instructions is checked at runtime\r
246         set(USE_O3 ON CACHE BOOL "Enable -O3 for GCC")\r
247         set(USE_FAST_MATH ON CACHE BOOL "Enable -ffast-math for GCC")\r
248         set(ENABLE_SSE ON CACHE BOOL "Enable SSE for GCC")\r
249         set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 for GCC")\r
250         set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 for GCC")\r
251         set(ENABLE_SSSE3 OFF CACHE BOOL "Enable SSSE3 for GCC")\r
252         #set(ENABLE_SSE4_1 OFF CACHE BOOL "Enable SSE4.1 for GCC")\r
253     endif()\r
254 endif()\r
255 \r
256 # allow fine grained control over which libraries not to link, even if\r
257 # they are available on the system\r
258 # ====================================================================\r
259 set(WITH_PNG ON CACHE BOOL "Include PNG support")\r
260 set(WITH_JPEG ON CACHE BOOL "Include JPEG support")\r
261 set(WITH_JASPER ON CACHE BOOL "Include JPEG2K support")\r
262 set(WITH_TIFF ON CACHE BOOL "Include TIFF support")\r
263 \r
264 if(UNIX)\r
265     set(WITH_FFMPEG ON CACHE BOOL "Include FFMPEG support")\r
266     if(NOT APPLE)\r
267                 set(WITH_UNICAP OFF CACHE BOOL "Include Unicap support (GPL)")\r
268         set(WITH_GTK ON CACHE BOOL "Include GTK support")\r
269         set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support")\r
270         set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support")\r
271         set(WITH_XINE OFF CACHE BOOL "Include Xine support (GPL)")\r
272         endif()\r
273         set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support")\r
274         set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support")\r
275 endif()\r
276 \r
277 if(APPLE)\r
278         set(WITH_CARBON OFF CACHE BOOL "Use Carbon for UI instead of Cocoa")\r
279 endif()\r
280 \r
281 set(WITH_TBB OFF CACHE BOOL "Include TBB support")\r
282 \r
283 # ===================================================\r
284 # Macros that checks if module have been installed.\r
285 # After it adds module to build and define\r
286 # constants passed as second arg\r
287 # ===================================================\r
288 \r
289 macro(CHECK_MODULE module_name define)\r
290     set(${define} 0)\r
291     if(PKG_CONFIG_FOUND)\r
292         set(ALIAS               ALIASOF_${module_name})\r
293         set(ALIAS_FOUND                 ${ALIAS}_FOUND)\r
294         set(ALIAS_INCLUDE_DIRS   ${ALIAS}_INCLUDE_DIRS)\r
295         set(ALIAS_LIBRARY_DIRS   ${ALIAS}_LIBRARY_DIRS)\r
296         set(ALIAS_LIBRARIES         ${ALIAS}_LIBRARIES)\r
297 \r
298         PKG_CHECK_MODULES(${ALIAS} ${module_name})\r
299 \r
300         if (${ALIAS_FOUND})\r
301             set(${define} 1)\r
302             foreach(P "${ALIAS_INCLUDE_DIRS}")\r
303                 if (${P})\r
304                     list(APPEND HIGHGUI_INCLUDE_DIRS ${${P}})\r
305                 endif()    \r
306             endforeach()\r
307 \r
308             foreach(P "${ALIAS_LIBRARY_DIRS}")\r
309                 if (${P})\r
310                     list(APPEND HIGHGUI_LIBRARY_DIRS ${${P}})\r
311                 endif()\r
312             endforeach()\r
313 \r
314             list(APPEND HIGHGUI_LIBRARIES ${${ALIAS_LIBRARIES}})\r
315         endif()\r
316     endif()\r
317 endmacro()\r
318 \r
319 if(UNIX)\r
320     if(NOT APPLE)\r
321       if(WITH_GTK)\r
322         CHECK_MODULE(gtk+-2.0 HAVE_GTK)\r
323         CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)\r
324       else()\r
325         set(HAVE_GTK FALSE)\r
326         set(HAVE_GTHREAD FALSE)\r
327       endif()\r
328       if(WITH_GSTREAMER)\r
329         CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)\r
330         CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER_APP)\r
331         CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)\r
332       else()\r
333         set(HAVE_GSTREAMER FALSE)\r
334       endif()\r
335     endif()\r
336 \r
337     if(WITH_UNICAP)\r
338       CHECK_MODULE(libunicap HAVE_UNICAP_)\r
339       CHECK_MODULE(libucil HAVE_UNICAP_UCIL)\r
340       if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)\r
341         set(HAVE_UNICAP 1)\r
342       endif()\r
343     else()\r
344       set(HAVE_UNICAP FALSE)\r
345     endif()\r
346     \r
347     if(WITH_PVAPI)\r
348       find_path(PVAPI_INCLUDE_PATH "PvApi.h"\r
349                 PATHS "/usr/include" "/usr/local/include"\r
350                 DOC "The path to PvAPI header")\r
351       if(PVAPI_INCLUDE_PATH)\r
352         set(HAVE_PVAPI 1)\r
353       endif()\r
354     endif()\r
355 \r
356     set(HAVE_FFMPEG 0)\r
357     if(WITH_FFMPEG)\r
358       CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)\r
359       CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)\r
360       CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)\r
361       CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)\r
362       CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)\r
363       CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)\r
364       if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)\r
365         if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)\r
366           set(HAVE_GENTOO_FFMPEG 1)\r
367         endif()\r
368       endif()\r
369       if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL)\r
370         if(HAVE_FFMPEG_SWSCALE OR NOT HAVE_GENTOO_FFMPEG)\r
371             set(HAVE_FFMPEG 1)\r
372         endif()    \r
373       endif()\r
374       # Find the bzip2 library because it is required on some systems\r
375       FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)\r
376       if(NOT BZIP2_LIBRARIES)\r
377         # Do an other trial\r
378         FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)\r
379       endif()\r
380     endif()\r
381 \r
382     if(WITH_1394)\r
383       CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)\r
384       if(NOT HAVE_DC1394_2)\r
385         CHECK_MODULE(libdc1394 HAVE_DC1394)\r
386       endif()\r
387     else()\r
388       set(HAVE_DC1394_2 FALSE)\r
389       set(HAVE_DC1394 FALSE)\r
390     endif()\r
391 \r
392     if(NOT APPLE)\r
393         CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)\r
394         CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)\r
395         CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)\r
396         CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)\r
397 \r
398         if(WITH_XINE)\r
399             CHECK_MODULE(libxine HAVE_XINE)\r
400         else()\r
401             set(HAVE_XINE FALSE)\r
402         endif()\r
403         if(WITH_V4L)\r
404             CHECK_MODULE(libv4l1 HAVE_LIBV4L)\r
405             CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)\r
406             CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)\r
407         else()\r
408             set(HAVE_LIBV4L FALSE)\r
409             set(HAVE_CAMV4L FALSE)\r
410             set(HAVE_CAMV4L2 FALSE)\r
411         endif()\r
412 \r
413         if(NOT OPENCV_BUILD_3RDPARTY_LIBS)\r
414             if(WITH_PNG)\r
415                 include(FindPNG)\r
416                 if(PNG_FOUND)\r
417                     CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/png.h HAVE_PNG_H)\r
418                     CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/libpng/png.h HAVE_LIBPNG_PNG_H)\r
419                 endif()\r
420             else()\r
421                 set(PNG_FOUND FALSE)\r
422             endif()\r
423             if(WITH_TIFF)\r
424                 include(FindTIFF)\r
425             else()\r
426                 set(TIFF_FOUND FALSE)\r
427             endif()\r
428             if(WITH_JASPER)\r
429                 include(FindJasper)\r
430             else()\r
431                 set(JASPER_FOUND FALSE)\r
432             endif()\r
433             if(WITH_JPEG)\r
434                 include(FindJPEG)\r
435             else()\r
436                 set(JPEG_FOUND FALSE)\r
437             endif()\r
438         endif()\r
439         \r
440         if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")\r
441             set(OPENCV_LINKER_LIBS m pthread)\r
442         else()\r
443             set(OPENCV_LINKER_LIBS dl m pthread rt)\r
444         endif()\r
445     else()\r
446         add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H)\r
447     endif()\r
448 endif()\r
449 \r
450 set(BUILD_NEW_PYTHON_SUPPORT ON CACHE BOOL "Build with Python support")\r
451 set(BUILD_SWIG_PYTHON_SUPPORT OFF CACHE BOOL "Build with older SWIG-based Python support")\r
452 set(BUILD_OCTAVE_SUPPORT OFF CACHE BOOL "Build with Octave support")\r
453 \r
454 if(BUILD_SWIG_PYTHON_SUPPORT OR BUILD_NEW_PYTHON_SUPPORT)\r
455     find_package(PythonInterp)\r
456     find_package(PythonLibs)\r
457 \r
458     # cmake 2.4 (at least on Ubuntu 8.04 (hardy)) don't define PYTHONLIBS_FOUND\r
459     if(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH)\r
460         set(PYTHONLIBS_FOUND ON)\r
461     endif(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH)\r
462         \r
463     execute_process(COMMAND ${PYTHON_EXECUTABLE} --version\r
464               ERROR_VARIABLE PYTHON_VERSION_FULL\r
465               OUTPUT_STRIP_TRAILING_WHITESPACE)\r
466 \r
467     string(REGEX MATCH "[0-9].[0-9]" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}")\r
468     if(UNIX)\r
469         set(PYTHON_PLUGIN_INSTALL_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages/opencv)\r
470         set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages)\r
471     endif()\r
472     if(WIN32)\r
473         get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE CACHE)\r
474         set(PYTHON_PLUGIN_INSTALL_PATH "${PYTHON_PATH}/Lib/site-packages/opencv")\r
475         set(PYTHON_PACKAGES_PATH "${PYTHON_PATH}/Lib/site-packages")\r
476     endif()\r
477 \r
478     # Attempt to discover the NumPy include directory.  If this succeeds, build with NumPy\r
479 \r
480     execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import numpy.distutils; print numpy.distutils.misc_util.get_numpy_include_dirs()[0]"\r
481                     RESULT_VARIABLE PYTHON_NUMPY_PROCESS\r
482                     OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS\r
483                     OUTPUT_STRIP_TRAILING_WHITESPACE)\r
484     if(PYTHON_NUMPY_PROCESS EQUAL 0)\r
485       set(PYTHON_USE_NUMPY 1)\r
486       add_definitions(-D PYTHON_USE_NUMPY=1)\r
487       include_directories(AFTER ${PYTHON_NUMPY_INCLUDE_DIRS})\r
488       message(STATUS "    Use INCLUDE: ${PYTHON_NUMPY_INCLUDE_DIRS}")\r
489     else()\r
490       set(PYTHON_USE_NUMPY 0)\r
491     endif()\r
492 \r
493 \r
494 endif()\r
495     \r
496 if(PYTHONLIBS_FOUND AND BUILD_SWIG_PYTHON_SUPPORT)\r
497     find_package(SWIG)\r
498 endif()\r
499 \r
500 ############################### TBB ################################\r
501 \r
502 if (WITH_TBB)\r
503     if (WIN32 OR APPLE)\r
504         find_path(TBB_INCLUDE_DIRS "tbb/tbb.h"\r
505                     PATHS "/usr/include" "/usr/local/include"\r
506                     DOC "The path to TBB headers")\r
507         \r
508         if (TBB_INCLUDE_DIRS)\r
509             if (WIN32)\r
510                 set(TBB_LIB "${TBB_INCLUDE_DIRS}/../lib/tbb.lib" CACHE PATH "Full name of TBB library")\r
511             else()\r
512                 set(TBB_LIB "${TBB_INCLUDE_DIRS}/../lib/libtbb.dylib" CACHE PATH "Full name of TBB library")\r
513             endif()\r
514             set(HAVE_TBB 1)\r
515             include_directories("${TBB_INCLUDE_DIRS}")\r
516             set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIB})\r
517         endif()\r
518     else()\r
519         PKG_CHECK_MODULES(TBB tbb)\r
520         message(STATUS "TBB detected: ${TBBLIB_FOUND}")\r
521 \r
522         if (TBB_FOUND)\r
523             set(HAVE_TBB 1)\r
524 \r
525             if(NOT "${TBB_INCLUDE_DIRS}" STREQUAL "")\r
526                 include_directories("${TBB_INCLUDE_DIRS}")\r
527             endif()\r
528 \r
529             link_directories("${TBB_LIBRARY_DIRS}")\r
530             set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES})\r
531         endif()\r
532     endif()\r
533 endif()\r
534 \r
535 ############################### IPP ################################\r
536 set(IPP_FOUND)\r
537 set(OPENCV_LOADER_PATH)\r
538 \r
539 if(UNIX)\r
540 if(APPLE)\r
541     set(OPENCV_LOADER_PATH DYLD_LIBRARY_PATH)\r
542 else()\r
543     set(OPENCV_LOADER_PATH LD_LIBRARY_PATH)\r
544 endif()\r
545 endif()\r
546 \r
547 foreach(v "6.1" "6.0" "5.3" "5.2" "5.1")\r
548     if(NOT IPP_FOUND)\r
549         if(WIN32)\r
550             find_path(IPP_PATH "ippi-${v}.dll"\r
551                 PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}\r
552                 DOC "The path to IPP dynamic libraries")\r
553             if(NOT IPP_PATH)\r
554                 find_path(IPP_PATH "ippiem64t-${v}.dll"\r
555                     PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}\r
556                     DOC "The path to IPP dynamic libraries")\r
557             endif()\r
558         endif()\r
559         if(UNIX)\r
560             find_path(IPP_PATH "libippi${CMAKE_SHARED_LIBRARY_SUFFIX}.${v}"\r
561                 PATHS ${CMAKE_LIBRARY_PATH} ${CMAKE_SYSTEM_LIBRARY_PATH} ENV ${OPENCV_LOADER_PATH}\r
562                 DOC "The path to IPP dynamic libraries")\r
563             if(NOT IPP_PATH)\r
564                 find_path(IPP_PATH "libippiem64t${CMAKE_SHARED_LIBRARY_SUFFIX}.${v}"\r
565                     PATHS ${CMAKE_LIBRARY_PATH} ${CMAKE_SYSTEM_LIBRARY_PATH} ENV ${OPENCV_LOADER_PATH}\r
566                     DOC "The path to IPP dynamic libraries")\r
567             endif()\r
568         endif()\r
569         if(IPP_PATH)\r
570             file(GLOB IPP_HDRS "${IPP_PATH}/../include")\r
571             if(IPP_HDRS)\r
572                 set(IPP_FOUND TRUE)\r
573             endif()\r
574         endif()\r
575     endif()\r
576 endforeach()\r
577 \r
578 message(STATUS "IPP detected: ${IPP_FOUND}")\r
579 \r
580 if(WIN32 AND NOT MSVC)\r
581     set(IPP_FOUND)\r
582 endif()\r
583 \r
584 set(USE_IPP ${IPP_FOUND} CACHE BOOL "Use IPP when available")\r
585 \r
586 if(IPP_FOUND AND USE_IPP)\r
587     add_definitions(-DHAVE_IPP)\r
588     include_directories("${IPP_PATH}/../include")\r
589     link_directories("${IPP_PATH}/../lib")\r
590     \r
591     file(GLOB em64t_files "${IPP_PATH}/../lib/*em64t*")\r
592     set(IPP_ARCH)\r
593     if(em64t_files)\r
594         set(IPP_ARCH "em64t")\r
595     endif()\r
596     \r
597     set(A ${CMAKE_STATIC_LIBRARY_PREFIX})\r
598     set(B ${IPP_ARCH}${CMAKE_STATIC_LIBRARY_SUFFIX})\r
599     if(WIN32)\r
600         set(L l)\r
601     else()\r
602         set(L)\r
603     endif()\r
604     set(IPP_LIBS ${A}ippsmerged${B} ${A}ippsemerged${B}\r
605                  ${A}ippimerged${B} ${A}ippiemerged${B}\r
606                  ${A}ippvmmerged${B} ${A}ippvmemerged${B}\r
607                  ${A}ippccmerged${B} ${A}ippccemerged${B}\r
608                  ${A}ippcvmerged${B} ${A}ippcvemerged${B}\r
609                  ${A}ippcore${IPP_ARCH}${L}${CMAKE_STATIC_LIBRARY_SUFFIX})\r
610 endif()\r
611 \r
612 \r
613 ################## LATEX ##################\r
614 set(BUILD_LATEX_DOCS OFF CACHE BOOL "Build LaTeX OpenCV Documentation")\r
615 \r
616 # ----------------------------------------------------------------------------\r
617 #                   UPDATE CONFIG FILES & SCRIPTS:\r
618 #\r
619 #  CONFIGURE_FILE(InputFile OutputFile [COPYONLY] [ESCAPE_QUOTES] [@ONLY])\r
620 # If @ONLY is specified, only variables of the form @VAR@ will be\r
621 #  replaces and ${VAR} will be ignored.\r
622 #\r
623 #  A directory will be created for each platform so the "cvconfig.h" file is\r
624 #   not overwritten if cmake generates code in the same path.\r
625 # ----------------------------------------------------------------------------\r
626 add_definitions(-DHAVE_CONFIG_H)\r
627 \r
628 set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")\r
629 \r
630 message(STATUS "Parsing 'cvconfig.h.cmake'")\r
631 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cvconfig.h.cmake" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h")\r
632 \r
633 # ---------------------------------------------------------------------------\r
634 # The C+//0 include & link directories:\r
635 # ---------------------------------------------------------------------------\r
636 include_directories("."\r
637     "${OPENCV_CONFIG_FILE_INCLUDE_DIR}"\r
638     "${CMAKE_CURRENT_SOURCE_DIR}/include"\r
639     "${CMAKE_CURRENT_SOURCE_DIR}/include/opencv"\r
640     )\r
641 \r
642 # ----------------------------------------------------------------------------\r
643 #           Set the maximum level of warnings:\r
644 # ----------------------------------------------------------------------------\r
645 # Should be set to true for development\r
646 set(OPENCV_WARNINGS_ARE_ERRORS OFF CACHE BOOL "Treat warnings as errors")\r
647 \r
648 set(EXTRA_C_FLAGS "")\r
649 set(EXTRA_C_FLAGS_RELEASE "")\r
650 set(EXTRA_C_FLAGS_DEBUG "")\r
651 set(EXTRA_EXE_LINKER_FLAGS "")\r
652 set(EXTRA_EXE_LINKER_FLAGS_RELEASE "")\r
653 set(EXTRA_EXE_LINKER_FLAGS_DEBUG "")\r
654 \r
655 if(MSVC)\r
656     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS")\r
657     # 64-bit portability warnings, in MSVC8\r
658     if(MSVC80)\r
659         set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Wp64")\r
660     endif()\r
661     #if(MSVC90)\r
662     #    set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _BIND_TO_CURRENT_CRT_VERSION=1 /D _BIND_TO_CURRENT_VCLIBS_VERSION=1")\r
663     #endif()\r
664 \r
665     set(EXTRA_EXE_LINKER_FLAGS_RELEASE "${EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug")\r
666 \r
667     #if(ENABLE_OPENMP)\r
668     #    set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /openmp")\r
669     #endif()\r
670 \r
671     # Remove unreferenced functions: function level linking\r
672     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Gy")\r
673     set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Zi")\r
674 endif()\r
675 \r
676 if(CMAKE_COMPILER_IS_GNUCXX)\r
677 \r
678         if(WIN32)\r
679                 if(CMAKE_CXX_COMPILER MATCHES "64")\r
680                         set(MINGW64 1)\r
681                 endif()\r
682         endif()\r
683 \r
684     # High level of warnings.\r
685     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall")\r
686 \r
687     # The -Wno-long-long is required in 64bit systems when including sytem headers.\r
688     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)\r
689     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long")\r
690     endif()\r
691     if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*)\r
692     set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long")\r
693     endif()\r
694 \r
695     # We need pthread's\r
696     if(UNIX)\r
697         set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -pthread")\r
698     endif()\r
699 \r
700     if(OPENCV_WARNINGS_ARE_ERRORS)\r
701         set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror")\r
702     endif()\r
703 \r
704     # Other optimizations\r
705     if(USE_OMIT_FRAME_POINTER)\r
706        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fomit-frame-pointer")\r
707     endif()\r
708     if(USE_O2)\r
709        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O2")\r
710     endif()\r
711     if(USE_O3)\r
712        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -O3")\r
713     endif()\r
714     if(USE_FAST_MATH)\r
715        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -ffast-math")\r
716     endif()\r
717     if(ENABLE_POWERPC)\r
718        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mcpu=G3 -mtune=G5")\r
719     endif()\r
720     if(ENABLE_SSE)\r
721        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse")\r
722     endif()\r
723     if(ENABLE_SSE2)\r
724        set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse2")\r
725     endif()\r
726     # SSE3 and further should be disabled under MingW because it generates compiler errors\r
727     if(NOT MINGW)\r
728        if(ENABLE_SSE3)\r
729           set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3")\r
730        endif()\r
731        if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 402)\r
732           set(HAVE_GCC43_OR_NEWER 1)\r
733        endif()\r
734        if(HAVE_GCC43_OR_NEWER OR APPLE)\r
735           if(ENABLE_SSSE3)\r
736              set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mssse3")\r
737           endif()\r
738           #if(ENABLE_SSE4_1)\r
739           #   set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.1")\r
740           #endif()\r
741        endif()\r
742     endif()\r
743     \r
744     if(X86 OR X86_64)\r
745         if(NOT APPLE)\r
746             if(${CMAKE_SIZEOF_VOID_P} EQUAL 4)\r
747                 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mfpmath=387")\r
748             endif()\r
749         endif()\r
750     endif()\r
751 \r
752     # Profiling?\r
753     if(ENABLE_PROFILING)\r
754         set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -pg -g")\r
755     else()\r
756         # Remove unreferenced functions: function level linking\r
757         if(NOT APPLE)\r
758             set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -ffunction-sections")\r
759         endif()\r
760     endif()\r
761 \r
762     # Parallel mode\r
763     #if(ENABLE_OPENMP)\r
764     #    set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -D_GLIBCXX_PARALLEL -fopenmp")\r
765     #    set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} gomp)\r
766     #endif()\r
767 \r
768     set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG")\r
769     set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -O0 -DDEBUG -D_DEBUG")\r
770 endif()\r
771 \r
772 # Extra link libs if the user selects building static libs:\r
773 IF(NOT BUILD_SHARED_LIBS)\r
774         if(CMAKE_COMPILER_IS_GNUCXX)\r
775                 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} stdc++)\r
776         endif()\r
777 \r
778         set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} flann zlib opencv_lapack)\r
779 endif()\r
780 \r
781 \r
782 # Add user supplied extra options (optimization, etc...)\r
783 # ==========================================================\r
784 set(OPENCV_EXTRA_C_FLAGS "" CACHE STRING "Extra compiler options")\r
785 set(OPENCV_EXTRA_C_FLAGS_RELEASE "" CACHE STRING "Extra compiler options for Release build")\r
786 set(OPENCV_EXTRA_C_FLAGS_DEBUG "" CACHE STRING "Extra compiler options for Debug build")\r
787 set(OPENCV_EXTRA_EXE_LINKER_FLAGS "" CACHE STRING "Extra linker flags" FORCE)\r
788 set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "" CACHE STRING "Extra linker flags for Release build" FORCE)\r
789 set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "" CACHE STRING "Extra linker flags for Debug build" FORCE)\r
790 \r
791 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
792 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")\r
793 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
794 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")\r
795 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
796 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")\r
797 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}")\r
798 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}")\r
799 set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}")\r
800 \r
801 # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:\r
802 if (${CMAKE_GENERATOR} MATCHES ".*Makefiles")\r
803     if("${CMAKE_BUILD_TYPE}" STREQUAL "")\r
804         set(CMAKE_BUILD_TYPE Release)\r
805     endif()\r
806 endif()\r
807 \r
808 if (WIN32 AND MSVC)\r
809     # avoid warnings from MSVC about overriding the /W* option\r
810     # we replace /W3 with /W4 only for C++ files,\r
811     # since all the 3rd-party libraries OpenCV uses are in C,\r
812     # and we do not care about their warnings.\r
813     string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")\r
814     string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")\r
815     string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")\r
816 \r
817     # allow extern "C" functions throw exceptions\r
818     string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")\r
819     string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")\r
820     string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")\r
821     string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")\r
822     string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")\r
823     string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")\r
824 endif()\r
825 \r
826 if("${CMAKE_CONFIGURE_LDFLAGS}")\r
827     set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_CONFIGURE_LDFLAGS}")\r
828 endif("${CMAKE_CONFIGURE_LDFLAGS}")\r
829 \r
830 # ----------------------------------------------------------------------------\r
831 #                       PROCESS SUBDIRECTORIES:\r
832 # ----------------------------------------------------------------------------\r
833 # Save libs and executables in the same place\r
834 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Output directory for libraries" )\r
835 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE PATH "Output directory for applications" )\r
836 \r
837 if(WIN32)\r
838 set(OPENCV_DOC_INSTALL_PATH doc)\r
839 else()\r
840 set(OPENCV_DOC_INSTALL_PATH share/opencv/doc)\r
841 endif()\r
842 \r
843 # --------------------------------------------------------------------------------------------\r
844 #   Installation for CMake Module:  OpenCVConfig.cmake\r
845 #  Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake              -> For use *without* "make install"\r
846 #  Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use with "make install"\r
847 #  Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake  -> For use within binary installers/packages\r
848 # -------------------------------------------------------------------------------------------\r
849 \r
850 # -------------------------------------------------------------------------------------------\r
851 #  Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake              -> For use *without* "make install"\r
852 # -------------------------------------------------------------------------------------------\r
853 \r
854 # Name of libraries is: libcv.so.1.1.0, etc...\r
855 #  OPENCV_DLLVERSION must be set to "110", etc..\r
856 # Already done above.\r
857 \r
858 # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
859 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${CMAKE_CURRENT_SOURCE_DIR}/include\" \"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"")\r
860 \r
861 set(CMAKE_LIB_DIRS_CONFIGCMAKE "${LIBRARY_OUTPUT_PATH}")\r
862 \r
863 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
864 \r
865 # --------------------------------------------------------------------------------------------\r
866 #  Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install"\r
867 # -------------------------------------------------------------------------------------------\r
868 # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
869 \r
870 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/include/opencv")\r
871 set(CMAKE_LIB_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/lib")\r
872 \r
873 #exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/unix-install/\"")\r
874 exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/unix-install/\"")\r
875 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
876 \r
877 if(UNIX)\r
878     # For a command "FIND_PACKAGE(FOO)", CMake will look at the directory /usr/share|lib/FOO/FOOConfig.cmake, so:\r
879     install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/share/opencv/)\r
880 endif()\r
881 \r
882 # --------------------------------------------------------------------------------------------\r
883 #  Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake  -> For use within binary installers/packages\r
884 # -------------------------------------------------------------------------------------------\r
885 if(WIN32)\r
886     # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:\r
887     \r
888     # This will expand to, for example, <program files>/OpenCV 1.1.0/include\r
889     set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/include\" \"\${THIS_OPENCV_CONFIG_PATH}/include/opencv\"")\r
890 \r
891     # This will expand to, for example, <program files>/OpenCV 1.1.0/lib\r
892     set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${THIS_OPENCV_CONFIG_PATH}/lib\"")\r
893 \r
894     #exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/win-install/\"")\r
895     exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"")\r
896     configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)\r
897 endif()\r
898 \r
899 \r
900 # --------------------------------------------------------------------------------------------\r
901 #  Part 2/2: ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install"\r
902 # prefix=/usr\r
903 # exec_prefix=${prefix}\r
904 # libdir=${exec_prefix}/lib\r
905 # includedir=${prefix}/include/opencv\r
906 # -------------------------------------------------------------------------------------------\r
907 set(prefix      ${CMAKE_INSTALL_PREFIX})\r
908 set(exec_prefix     "\${prefix}")\r
909 set(libdir      "\${exec_prefix}/lib")\r
910 set(includedir      "\${prefix}/include")\r
911 set(VERSION             ${OPENCV_VERSION})\r
912 \r
913 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/opencv.pc.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/opencv.pc" @ONLY IMMEDIATE)\r
914 \r
915 if(UNIX)\r
916     install(FILES ${CMAKE_BINARY_DIR}/unix-install/opencv.pc DESTINATION lib/pkgconfig)\r
917 endif()\r
918 \r
919 \r
920 # ----------------------------------------------------------------------------\r
921 #   Uninstall target, for "make uninstall"\r
922 # ----------------------------------------------------------------------------\r
923 CONFIGURE_FILE(\r
924   "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"\r
925   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"\r
926   IMMEDIATE @ONLY)\r
927 \r
928 ADD_CUSTOM_TARGET(uninstall\r
929   "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")\r
930 \r
931 \r
932 # ----------------------------------------------------------------------------\r
933 #   CPack target\r
934 # ----------------------------------------------------------------------------\r
935 \r
936 set(BUILD_PACKAGE OFF CACHE BOOL "Build a installer with the SDK")\r
937 \r
938 if(BUILD_PACKAGE)\r
939 \r
940     configure_file(\r
941     Package.cmake.in\r
942     ${CMAKE_BINARY_DIR}/.cpack/Package.cmake\r
943     @ONLY\r
944     )\r
945     \r
946     include(${CMAKE_BINARY_DIR}/.cpack/Package.cmake)\r
947 \r
948     set(root_files README)\r
949 \r
950     file(GLOB root_src_files *.in *.cmake CMakeLists.txt)\r
951 \r
952     if (NOT WIN32)\r
953         install(FILES ${root_files}\r
954                 DESTINATION ${OPENCV_DOC_INSTALL_PATH}\r
955                 COMPONENT main)\r
956     else()\r
957         install(FILES ${root_files}\r
958                 DESTINATION "."\r
959                 COMPONENT main)\r
960         install(FILES ${root_src_files}\r
961                 DESTINATION "."\r
962                 COMPONENT src)\r
963         # Add the "win-install/OpenCVConfig.cmake" file to the "main" install component \r
964         install(FILES \r
965             "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake"\r
966             DESTINATION "."\r
967             COMPONENT main\r
968             )\r
969 \r
970         if(CMAKE_INSTALL_DEBUG_LIBRARIES)\r
971             foreach(m cxcore cv cvaux ml highgui opencv_ffmpeg)\r
972                 install(FILES ${CMAKE_BINARY_DIR}/bin/Debug/${m}${OPENCV_DLLVERSION}d.dll\r
973             DESTINATION bin COMPONENT main)\r
974                 install(FILES ${CMAKE_BINARY_DIR}/lib/Debug/${m}${OPENCV_DLLVERSION}d.lib\r
975             DESTINATION lib COMPONENT main)\r
976             endforeach()     \r
977         endif()\r
978 \r
979         install(DIRECTORY data samples DESTINATION "." COMPONENT main PATTERN ".svn" EXCLUDE)\r
980         install(DIRECTORY 3rdparty apps interfaces src tests utils DESTINATION "." COMPONENT src PATTERN ".svn" EXCLUDE)\r
981         install(DIRECTORY doc/ DESTINATION doc COMPONENT src FILES_MATCHING PATTERN "*.tex")\r
982         install(DIRECTORY doc/pics DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE)\r
983         install(DIRECTORY doc/plastex DESTINATION doc COMPONENT src PATTERN ".svn" EXCLUDE)\r
984     \r
985     endif()\r
986 endif()\r
987 \r
988 \r
989 #-----------------------------------\r
990 # Subdirectories:\r
991 #-----------------------------------\r
992 add_subdirectory(src)\r
993 add_subdirectory(apps)\r
994 \r
995 if(BUILD_LATEX_DOCS)\r
996   include(OpenCVFindLATEX.cmake REQUIRED)\r
997     \r
998   if(PDFLATEX_COMPILER)\r
999     message(STATUS "PDF LaTeX found!")\r
1000   endif()\r
1001 endif()\r
1002 \r
1003 add_subdirectory(doc)\r
1004 add_subdirectory(data)\r
1005 \r
1006 if(BUILD_EXAMPLES OR INSTALL_PYTHON_EXAMPLES OR INSTALL_OCTAVE_EXAMPLES)\r
1007     add_subdirectory(samples)\r
1008 endif()\r
1009 \r
1010 if(BUILD_TESTS)\r
1011     enable_testing()\r
1012     add_subdirectory(tests)\r
1013 endif()\r
1014 \r
1015 add_subdirectory(interfaces)\r
1016 add_subdirectory(3rdparty)\r
1017 \r
1018 \r
1019 # ----------------------------------------------------------------------------\r
1020 #   Sumary:\r
1021 # ----------------------------------------------------------------------------\r
1022 message(STATUS "")\r
1023 message(STATUS "General configuration for opencv ${OPENCV_VERSION} =====================================")\r
1024 message(STATUS "")\r
1025 message(STATUS "    Built as dynamic libs?:    ${BUILD_SHARED_LIBS}")\r
1026 message(STATUS "    Compiler:                  ${CMAKE_COMPILER}")\r
1027 message(STATUS "    C++ flags (Release):       ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")\r
1028 message(STATUS "    C++ flags (Debug):         ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")\r
1029 if(WIN32)\r
1030 message(STATUS "    Linker flags (Release):    ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}")\r
1031 message(STATUS "    Linker flags (Debug):      ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")\r
1032 else()\r
1033 message(STATUS "    Linker flags (Release):    ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")\r
1034 message(STATUS "    Linker flags (Debug):      ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")\r
1035 endif()\r
1036 \r
1037 if(UNIX AND NOT APPLE)\r
1038 message(STATUS "")\r
1039 message(STATUS "  GUI: ")\r
1040 message(STATUS "    GTK+ 2.x:                  ${HAVE_GTK}")\r
1041 message(STATUS "    GThread:                   ${HAVE_GTHREAD}")\r
1042 message(STATUS "")\r
1043 endif()\r
1044 \r
1045 if(APPLE)\r
1046 message(STATUS "")\r
1047 if(HAVE_CARBON)\r
1048 message(STATUS "  GUI Back-end:                Carbon")\r
1049 else()\r
1050 message(STATUS "  GUI Back-end:                Cocoa")\r
1051 endif()\r
1052 message(STATUS "")\r
1053 endif() \r
1054 \r
1055 message(STATUS "  Image I/O: ")\r
1056 if(NOT WITH_JPEG OR JPEG_FOUND)\r
1057 message(STATUS "    JPEG:                      ${JPEG_FOUND}")\r
1058 else()\r
1059 message(STATUS "    JPEG:                      build")\r
1060 endif()\r
1061 \r
1062 if(NOT WIDTH_PNG OR PNG_FOUND)\r
1063 message(STATUS "    PNG:                       ${PNG_FOUND}")\r
1064 else()\r
1065 message(STATUS "    PNG:                       build")\r
1066 endif()\r
1067 \r
1068 if(NOT WITH_TIFF OR TIFF_FOUND)\r
1069 message(STATUS "    TIFF:                      ${TIFF_FOUND}")\r
1070 else()\r
1071 message(STATUS "    TIFF:                      build")\r
1072 endif()\r
1073 \r
1074 if(NOT WITH_JASPER OR JASPER_FOUND)\r
1075 message(STATUS "    JPEG 2000:                 ${JASPER_FOUND}")\r
1076 else()\r
1077 message(STATUS "    JPEG 2000:                 build")\r
1078 endif()\r
1079 \r
1080 if(UNIX AND NOT APPLE)\r
1081 message(STATUS "")\r
1082 message(STATUS "  Video I/O: ")\r
1083 message(STATUS "    DC1394 1.x:                ${HAVE_DC1394}")\r
1084 message(STATUS "    DC1394 2.x:                ${HAVE_DC1394_2}")\r
1085 message(STATUS "    FFMPEG:                    ${HAVE_FFMPEG}")\r
1086 message(STATUS "      codec:                   ${HAVE_FFMPEG_CODEC}")\r
1087 message(STATUS "      format:                  ${HAVE_FFMPEG_FORMAT}")\r
1088 message(STATUS "      util:                    ${HAVE_FFMPEG_UTIL}")\r
1089 message(STATUS "      swscale:                 ${HAVE_FFMPEG_SWSCALE}")\r
1090 message(STATUS "      gentoo-style:            ${HAVE_GENTOO_FFMPEG}")\r
1091 message(STATUS "    GStreamer:                 ${HAVE_GSTREAMER}")\r
1092 message(STATUS "    UniCap:                    ${HAVE_UNICAP}")\r
1093 message(STATUS "    PvAPI:                     ${HAVE_PVAPI}")\r
1094 if(HAVE_LIBV4L)\r
1095 message(STATUS "    V4L/V4L2:                  Using libv4l")\r
1096 else()\r
1097 message(STATUS "    V4L/V4L2:                  ${HAVE_CAMV4L}/${HAVE_CAMV4L2}")\r
1098 endif()\r
1099 message(STATUS "    Xine:                      ${HAVE_XINE}")\r
1100 endif()\r
1101 \r
1102 message(STATUS "")\r
1103 message(STATUS "  Interfaces: ")\r
1104 if(PYTHONLIBS_FOUND AND BUILD_SWIG_PYTHON_SUPPORT)\r
1105 message(STATUS "    Old Python:                1")\r
1106 else()\r
1107 message(STATUS "    Old Python:                0")\r
1108 endif()\r
1109 message(STATUS "    Python:                    ${BUILD_NEW_PYTHON_SUPPORT}")\r
1110 message(STATUS "    Python interpreter:        ${PYTHON_EXECUTABLE}")\r
1111 message(STATUS "    Python numpy:              ${PYTHON_USE_NUMPY}")\r
1112 \r
1113 if(IPP_FOUND AND USE_IPP)\r
1114 message(STATUS "    Use IPP:                   ${IPP_PATH}")\r
1115 else()\r
1116 message(STATUS "    Use IPP:                   NO")\r
1117 endif()\r
1118 \r
1119 if(HAVE_TBB)\r
1120 message(STATUS "    Use TBB:                   YES")\r
1121 else()\r
1122 message(STATUS "    Use TBB:                   NO")\r
1123 endif()\r
1124 \r
1125 if(BUILD_LATEX_DOCS AND PDFLATEX_COMPILER)\r
1126 message(STATUS "    Build Documentation        1")\r
1127 else()\r
1128 message(STATUS "    Build Documentation        0")\r
1129 endif()\r
1130 message(STATUS "")\r
1131 message(STATUS "    Install path:              ${CMAKE_INSTALL_PREFIX}")\r
1132 message(STATUS "")\r
1133 message(STATUS "    cvconfig.h is in:          ${OPENCV_CONFIG_FILE_INCLUDE_DIR}")\r
1134 message(STATUS "-----------------------------------------------------------------")\r
1135 message(STATUS "")\r
1136 \r
1137 #----------------------------------------------------------------------------\r
1138 #   Generate the OpenCVConfig.cmake file for unix\r
1139 #      installation in CMAKE_INSTALL_PREFIX\r
1140 #----------------------------------------------------------------------------\r