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