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