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