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