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