opencv_run_all_tests.sh script added to -tests package.
[profile/ivi/opencv.git] / cmake / OpenCVFindLibsVideo.cmake
1 # ----------------------------------------------------------------------------
2 #  Detect 3rd-party video IO libraries
3 # ----------------------------------------------------------------------------
4
5 ocv_clear_vars(HAVE_VFW)
6 if(WITH_VFW)
7   try_compile(HAVE_VFW
8     "${OpenCV_BINARY_DIR}"
9     "${OpenCV_SOURCE_DIR}/cmake/checks/vfwtest.cpp"
10     CMAKE_FLAGS "-DLINK_LIBRARIES:STRING=vfw32")
11 endif(WITH_VFW)
12
13 # --- GStreamer ---
14 ocv_clear_vars(HAVE_GSTREAMER)
15 if(WITH_GSTREAMER)
16   CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)
17   if(HAVE_GSTREAMER)
18     CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER)
19   endif()
20   if(HAVE_GSTREAMER)
21     CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)
22   endif()
23 endif(WITH_GSTREAMER)
24
25 # --- unicap ---
26 ocv_clear_vars(HAVE_UNICAP)
27 if(WITH_UNICAP)
28   CHECK_MODULE(libunicap HAVE_UNICAP_)
29   CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
30   if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
31     set(HAVE_UNICAP TRUE)
32   endif()
33 endif(WITH_UNICAP)
34
35 # --- PvApi ---
36 ocv_clear_vars(HAVE_PVAPI)
37 if(WITH_PVAPI)
38   find_path(PVAPI_INCLUDE_PATH "PvApi.h"
39             PATHS /usr/local /opt /usr ENV ProgramFiles ENV ProgramW6432
40             PATH_SUFFIXES include "Allied Vision Technologies/GigESDK/inc-pc" "AVT GigE SDK/inc-pc" "GigESDK/inc-pc"
41             DOC "The path to PvAPI header")
42
43   if(PVAPI_INCLUDE_PATH)
44     if(X86 AND NOT WIN32)
45       set(PVAPI_SDK_SUBDIR x86)
46     elseif(X86_64)
47       set(PVAPI_SDK_SUBDIR x64)
48     elseif(ARM)
49       set(PVAPI_SDK_SUBDIR arm)
50     endif()
51
52     get_filename_component(_PVAPI_LIBRARY "${PVAPI_INCLUDE_PATH}/../lib-pc" ABSOLUTE)
53     if(PVAPI_SDK_SUBDIR)
54       set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${PVAPI_SDK_SUBDIR}")
55     endif()
56     if(NOT WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
57       set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_OPENCV_GCC_VERSION_MAJOR}.${CMAKE_OPENCV_GCC_VERSION_MINOR}")
58     endif()
59
60     if(WIN32)
61       if(MINGW)
62         set(PVAPI_DEFINITIONS "-DPVDECL=__stdcall")
63       endif(MINGW)
64       set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/PvAPI.lib" CACHE PATH "The PvAPI library")
65     else(WIN32)
66       set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_STATIC_LIBRARY_PREFIX}PvAPI${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE PATH "The PvAPI library")
67     endif(WIN32)
68     if(EXISTS "${PVAPI_LIBRARY}")
69       set(HAVE_PVAPI TRUE)
70     endif()
71   endif(PVAPI_INCLUDE_PATH)
72 endif(WITH_PVAPI)
73
74 # --- GigEVisionSDK ---
75 ocv_clear_vars(HAVE_GIGE_API)
76 if(WITH_GIGEAPI)
77   find_path(GIGEAPI_INCLUDE_PATH "GigEVisionSDK.h"
78             PATHS /usr/local /var /opt /usr ENV ProgramFiles ENV ProgramW6432
79             PATH_SUFFIXES include "Smartek Vision Technologies/GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_cpp" "GigEVisionSDK/gige_c"
80             DOC "The path to Smartek GigEVisionSDK header")
81   FIND_LIBRARY(GIGEAPI_LIBRARIES NAMES GigEVisionSDK)
82   if(GIGEAPI_LIBRARIES AND GIGEAPI_INCLUDE_PATH)
83     set(HAVE_GIGE_API TRUE)
84   endif()
85 endif(WITH_GIGEAPI)
86
87 # --- Dc1394 ---
88 ocv_clear_vars(HAVE_DC1394 HAVE_DC1394_2)
89 if(WITH_1394)
90   if(WIN32 AND MINGW)
91       find_path(CMU1394_INCLUDE_PATH "/1394common.h"
92                 PATH_SUFFIXES include
93                 DOC "The path to cmu1394 headers")
94       find_path(DC1394_2_INCLUDE_PATH "/dc1394/dc1394.h"
95                 PATH_SUFFIXES include
96                 DOC "The path to DC1394 2.x headers")
97       if(CMU1394_INCLUDE_PATH AND DC1394_2_INCLUDE_PATH)
98         set(CMU1394_LIB_DIR  "${CMU1394_INCLUDE_PATH}/../lib"  CACHE PATH "Full path of CMU1394 library directory")
99         set(DC1394_2_LIB_DIR "${DC1394_2_INCLUDE_PATH}/../lib" CACHE PATH "Full path of DC1394 2.x library directory")
100         if(EXISTS "${CMU1394_LIB_DIR}/lib1394camera.a" AND EXISTS "${DC1394_2_LIB_DIR}/libdc1394.a")
101           set(HAVE_DC1394_2 TRUE)
102         endif()
103       endif()
104       if(HAVE_DC1394_2)
105         ocv_parse_pkg("libdc1394-2" "${DC1394_2_LIB_DIR}/pkgconfig" "")
106         ocv_include_directories(${DC1394_2_INCLUDE_PATH})
107         set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES}
108             "${DC1394_2_LIB_DIR}/libdc1394.a"
109             "${CMU1394_LIB_DIR}/lib1394camera.a")
110       endif(HAVE_DC1394_2)
111   else(WIN32 AND MINGW)
112     CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
113     if(NOT HAVE_DC1394_2)
114       CHECK_MODULE(libdc1394 HAVE_DC1394)
115     endif()
116   endif(WIN32 AND MINGW)
117 endif(WITH_1394)
118
119 # --- xine ---
120 ocv_clear_vars(HAVE_XINE)
121 if(WITH_XINE)
122   CHECK_MODULE(libxine HAVE_XINE)
123 endif(WITH_XINE)
124
125 # --- V4L ---
126 ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2 HAVE_VIDEOIO)
127 if(WITH_V4L)
128   if(WITH_LIBV4L)
129     CHECK_MODULE(libv4l1 HAVE_LIBV4L)
130   endif()
131   CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
132   CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
133   CHECK_INCLUDE_FILE(sys/videoio.h HAVE_VIDEOIO)
134 endif(WITH_V4L)
135
136 # --- OpenNI ---
137 ocv_clear_vars(HAVE_OPENNI HAVE_OPENNI_PRIME_SENSOR_MODULE)
138 if(WITH_OPENNI)
139   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindOpenNI.cmake")
140 endif(WITH_OPENNI)
141
142 # --- XIMEA ---
143 ocv_clear_vars(HAVE_XIMEA)
144 if(WITH_XIMEA)
145   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindXimea.cmake")
146   if(XIMEA_FOUND)
147     set(HAVE_XIMEA TRUE)
148   endif()
149 endif(WITH_XIMEA)
150
151 # --- FFMPEG ---
152 ocv_clear_vars(HAVE_FFMPEG HAVE_FFMPEG_CODEC HAVE_FFMPEG_FORMAT HAVE_FFMPEG_UTIL HAVE_FFMPEG_SWSCALE HAVE_GENTOO_FFMPEG HAVE_FFMPEG_FFMPEG)
153 if(WITH_FFMPEG)
154   if(WIN32 AND NOT ARM)
155     include("${OpenCV_SOURCE_DIR}/3rdparty/ffmpeg/ffmpeg_version.cmake")
156   elseif(UNIX)
157     CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
158     CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
159     CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
160     CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)
161
162     CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)
163     CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)
164     if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)
165       if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)
166         set(HAVE_GENTOO_FFMPEG TRUE)
167       endif()
168     endif()
169     if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL AND HAVE_FFMPEG_SWSCALE)
170       set(HAVE_FFMPEG TRUE)
171     endif()
172
173     if(HAVE_FFMPEG)
174       # Find the bzip2 library because it is required on some systems
175       FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)
176       if(NOT BZIP2_LIBRARIES)
177         # Do an other trial
178         FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)
179       endif()
180     endif(HAVE_FFMPEG)
181   endif()
182
183   if(APPLE)
184     find_path(FFMPEG_INCLUDE_DIR "libavformat/avformat.h"
185               PATHS /usr/local /usr /opt
186               PATH_SUFFIXES include
187               DOC "The path to FFMPEG headers")
188     if(FFMPEG_INCLUDE_DIR)
189       set(HAVE_GENTOO_FFMPEG TRUE)
190       set(FFMPEG_LIB_DIR "${FFMPEG_INCLUDE_DIR}/../lib" CACHE PATH "Full path of FFMPEG library directory")
191       if(EXISTS "${FFMPEG_LIB_DIR}/libavcodec.a")
192         set(HAVE_FFMPEG_CODEC 1)
193         set(ALIASOF_libavcodec_VERSION "Unknown")
194         if(EXISTS "${FFMPEG_LIB_DIR}/libavformat.a")
195           set(HAVE_FFMPEG_FORMAT 1)
196           set(ALIASOF_libavformat_VERSION "Unknown")
197           if(EXISTS "${FFMPEG_LIB_DIR}/libavutil.a")
198             set(HAVE_FFMPEG_UTIL 1)
199             set(ALIASOF_libavutil_VERSION "Unknown")
200             if(EXISTS "${FFMPEG_LIB_DIR}/libswscale.a")
201               set(HAVE_FFMPEG_SWSCALE 1)
202               set(ALIASOF_libswscale_VERSION "Unknown")
203               set(HAVE_FFMPEG 1)
204             endif()
205           endif()
206         endif()
207       endif()
208     endif(FFMPEG_INCLUDE_DIR)
209     if(HAVE_FFMPEG)
210       set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a"
211           "${FFMPEG_LIB_DIR}/libavformat.a" "${FFMPEG_LIB_DIR}/libavutil.a"
212           "${FFMPEG_LIB_DIR}/libswscale.a")
213       ocv_include_directories(${FFMPEG_INCLUDE_DIR})
214     endif()
215   endif(APPLE)
216 endif(WITH_FFMPEG)
217
218 # --- VideoInput/DirectShow ---
219 if(WITH_DSHOW)
220   # always have VideoInput on Windows
221   set(HAVE_DSHOW 1)
222 endif(WITH_DSHOW)
223
224 # --- VideoInput/Microsoft Media Foundation ---
225 if(WITH_MSMF)
226   check_include_file(Mfapi.h HAVE_MSMF)
227 endif(WITH_MSMF)
228
229 # --- Extra HighGUI libs on Windows ---
230 if(WIN32)
231   list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32 setupapi ws2_32 vfw32)
232   if(MINGW64)
233     list(APPEND HIGHGUI_LIBRARIES avifil32 avicap32 winmm msvfw32)
234     list(REMOVE_ITEM HIGHGUI_LIBRARIES vfw32)
235   elseif(MINGW)
236     list(APPEND HIGHGUI_LIBRARIES winmm)
237   endif()
238 endif(WIN32)
239
240 # --- Apple AV Foundation ---
241 if(WITH_AVFOUNDATION)
242   set(HAVE_AVFOUNDATION YES)
243 endif()
244
245 # --- QuickTime ---
246 if (NOT IOS)
247   if(WITH_QUICKTIME)
248     set(HAVE_QUICKTIME YES)
249   elseif(APPLE)
250     set(HAVE_QTKIT YES)
251   endif()
252 endif()
253
254 # --- Intel Perceptual Computing SDK ---
255 if(WITH_INTELPERC)
256   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIntelPerCSDK.cmake")
257 endif(WITH_INTELPERC)