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