configure: fix build with GStreamer 1.4.0 release.
[platform/upstream/gstreamer-vaapi.git] / configure.ac
1 # gstreamer-vaapi package version number
2 m4_define([gst_vaapi_major_version], [0])
3 m4_define([gst_vaapi_minor_version], [5])
4 m4_define([gst_vaapi_micro_version], [9])
5 m4_define([gst_vaapi_pre_version],   [1])
6 m4_define([gst_vaapi_version],
7           [gst_vaapi_major_version.gst_vaapi_minor_version.gst_vaapi_micro_version])
8 m4_if(gst_vaapi_pre_version, [0], [], [
9 m4_append([gst_vaapi_version], gst_vaapi_pre_version, [.pre])
10 ])
11
12 # gstreamer-vaapi library (libtool) version number
13 m4_define([gst_vaapi_lt_current],       [5])
14 m4_define([gst0_vaapi_lt_current_bias], [0])
15 m4_define([gst1_vaapi_lt_current_bias], [2])
16 m4_define([gst2_vaapi_lt_current_bias], [4])
17 m4_define([gst4_vaapi_lt_current_bias], [5])
18 m4_define([gst_vaapi_lt_revision],      [0])
19 m4_define([gst_vaapi_lt_age],           [0])
20
21 # glib version number
22 m4_define([glib_version], [2.28])
23
24 # gstreamer version number
25 m4_define([gst_api_version],            [autodetect])
26 m4_define([gst0_version],               [0.10.36])
27 m4_define([gst0_plugins_base_version],  [0.10.31])
28 m4_define([gst0_plugins_bad_version],   [0.10.22])
29 m4_define([gst1_version],               [1.0.0])
30 m4_define([gst1_plugins_base_version],  [1.0.0])
31 m4_define([gst1_plugins_bad_version],   [1.0.0])
32 m4_define([gst12_version],              [1.1.90])
33 m4_define([gst12_plugins_base_version], [1.1.0])
34 m4_define([gst12_plugins_bad_version],  [1.1.0])
35 m4_define([gst14_version],              [1.2.90])
36 m4_define([gst14_plugins_base_version], [1.3.0])
37 m4_define([gst14_plugins_bad_version],  [1.3.0])
38
39 # Wayland minimum version number
40 m4_define([wayland_api_version], [1.0.0])
41
42 # VA-API minimum version number
43 m4_define([va_api_version],     [0.30.4])
44 m4_define([va_api_enc_version], [0.34.0])
45 m4_define([va_api_drm_version], [0.33.0])
46 m4_define([va_api_x11_version], [0.31.0])
47 m4_define([va_api_glx_version], [0.32.0])
48 m4_define([va_api_wld_version], [0.33.0])
49
50 # libva package version number
51 m4_define([libva_enc_package_version], [1.2.0])
52 m4_define([libva_drm_package_version], [1.1.0])
53 m4_define([libva_x11_package_version], [1.0.3])
54 m4_define([libva_glx_package_version], [1.0.9])
55 m4_define([libva_wld_package_version], [1.1.0])
56
57 # gtk-doc version number
58 # XXX: introspection annotations require gtk-doc >= 1.12
59 m4_define([gtkdoc_version], [1.9])
60
61 AC_PREREQ([2.66])
62 AC_INIT([gst_vaapi], [gst_vaapi_version],
63     [gwenole.beauchesne@intel.com],
64     [gstreamer-vaapi])
65
66 AC_CONFIG_HEADERS([config.h])
67 AC_CONFIG_SRCDIR([Makefile.am])
68 AC_CONFIG_MACRO_DIR([m4])
69 AC_CONFIG_AUX_DIR([build-aux])
70
71 AC_CANONICAL_TARGET
72
73 AM_INIT_AUTOMAKE([1.11 tar-ustar no-dist-gzip dist-bzip2])
74
75 TODAY="`LC_ALL=C date +'%a, %d %b %Y %X %z'`"
76 AC_SUBST(TODAY)
77
78 LIBVA_PACKAGE_VERSION=libva_x11_package_version
79 AC_SUBST(LIBVA_PACKAGE_VERSION)
80
81 WAYLAND_API_VERSION=wayland_api_version
82 AC_SUBST(WAYLAND_API_VERSION)
83
84 dnl Use pretty build output with automake >= 1.11
85 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [
86   AM_DEFAULT_VERBOSITY=1
87   AC_SUBST(AM_DEFAULT_VERBOSITY)
88 ])
89
90 dnl Check for tools
91 AC_PROG_CC
92 AM_PROG_CC_C_O
93
94 AC_ARG_VAR([GIT], [Path to git program, if any])
95 AC_PATH_PROG([GIT], [git])
96 AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
97
98 AC_ARG_VAR([YASM], [Path to yasm program, if any])
99 AC_PATH_PROG([YASM], [yasm])
100 if test -z "$YASM" -a "$enable_builtin_libvpx" = "yes"; then
101     AC_MSG_ERROR([yasm is needed to build libvpx sources])
102 fi
103
104 dnl Initialize libtool
105 LT_PREREQ([2.2])
106 LT_INIT
107
108 AC_ARG_ENABLE(builtin_videoparsers,
109     AS_HELP_STRING([--enable-builtin-videoparsers],
110                    [enable built-in videoparsers @<:@default=yes@:>@]),
111     [], [enable_builtin_videoparsers="yes"])
112
113 AC_ARG_ENABLE(builtin_codecparsers,
114     AS_HELP_STRING([--enable-builtin-codecparsers],
115                    [enable built-in codecparsers @<:@default=yes@:>@]),
116     [], [enable_builtin_codecparsers="yes"])
117
118 AC_ARG_ENABLE(builtin_libvpx,
119     AS_HELP_STRING([--enable-builtin-libvpx],
120                    [enable built-in libvpx @<:@default=yes@:>@]),
121     [], [enable_builtin_libvpx="yes"])
122
123 AC_ARG_ENABLE([encoders],
124     AS_HELP_STRING([--enable-encoders],
125                    [enable video encoders @<:@default=yes@:>@]),
126     [], [enable_encoders="yes"])
127
128 AC_ARG_ENABLE(drm,
129     AS_HELP_STRING([--enable-drm],
130                    [enable DRM backend @<:@default=yes@:>@]),
131     [], [enable_drm="yes"])
132
133 AC_ARG_ENABLE(x11,
134     AS_HELP_STRING([--enable-x11],
135                    [enable X11 output @<:@default=yes@:>@]),
136     [], [enable_x11="yes"])
137
138 AC_ARG_ENABLE(glx,
139     AS_HELP_STRING([--enable-glx],
140                    [enable OpenGL/X11 output @<:@default=yes@:>@]),
141     [], [enable_glx="yes"])
142
143 AC_ARG_ENABLE(wayland,
144     AC_HELP_STRING([--enable-wayland],
145                    [enable Wayland output @<:@default=yes@:>@]),
146     [], [enable_wayland="yes"])
147
148 AC_ARG_WITH([gstreamer-api],
149     AC_HELP_STRING([--with-gstreamer-api=VERSION],
150                    [build against the specified GStreamer API version
151                     @<:@default=gst_api_version@:>@]),
152     [GST_API_VERSION="$with_gstreamer_api"], [GST_API_VERSION=gst_api_version])
153
154 dnl Check for basic libraries
155 AC_CHECK_LIB(m, tan)
156
157 dnl Check for Gtk doc
158 GTKDOC_VERSION=gtkdoc_version
159 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
160 m4_ifdef([GTK_DOC_CHECK], [
161 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
162 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
163 AC_SUBST(GTKDOC_VERSION)
164
165 dnl Check for GLib
166 GLIB_VERSION_REQUIRED=glib_version
167 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
168 AC_SUBST(GLIB_VERSION_REQUIRED)
169
170 dnl Check to see if dlopen is in default libraries (like Solaris, which
171 dnl has it in libc), or if libdl is needed to get it.
172 AC_CHECK_FUNC([dlopen], [], [
173     AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
174 AC_SUBST([DLOPEN_LIBS])
175
176 dnl ---------------------------------------------------------------------------
177 dnl -- GStreamer                                                             --
178 dnl ---------------------------------------------------------------------------
179
180 dnl If GStreamer API version is to be autodetected, then always try
181 dnl with the latest version first
182 AC_MSG_CHECKING([for GStreamer API version])
183 if test "$GST_API_VERSION" = "autodetect"; then
184     gst_pkg_versions="1.0 0.10"
185 else
186     AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
187         [gst_pkg_versions="0.10"], [gst_pkg_versions="1.0"],
188         dnl GStreamer 1.2.x APIs don't have their own namespace
189         [gst_pkg_versions="1.0"])
190 fi
191 for gst_pkg_version in ${gst_pkg_versions}; do
192     if $PKG_CONFIG --exists "gstreamer-$gst_pkg_version"; then
193         gst_version=`$PKG_CONFIG --modversion "gstreamer-$gst_pkg_version"`
194         gst_major_version=`echo "$gst_version" | cut -d'.' -f1`
195         gst_minor_version=`echo "$gst_version" | cut -d'.' -f2`
196         GST_API_VERSION="${gst_major_version}.${gst_minor_version}"
197         GST_PKG_VERSION="$gst_pkg_version"
198         break
199     fi
200 done
201 if test -z "$GST_PKG_VERSION"; then
202     AC_MSG_ERROR([version $GST_API_VERSION not found])
203 fi
204 AC_MSG_RESULT([$GST_API_VERSION])
205
206 dnl Versions for GStreamer and plugins-base
207 case $GST_API_VERSION in
208 0.10)
209     GST_VERSION_REQUIRED=gst0_version
210     GST_PLUGINS_BASE_VERSION_REQUIRED=gst0_plugins_base_version
211     GST_PLUGINS_BAD_VERSION_REQUIRED=gst0_plugins_bad_version
212     ;;
213 1.0)
214     GST_VERSION_REQUIRED=gst1_version
215     GST_PLUGINS_BASE_VERSION_REQUIRED=gst1_plugins_base_version
216     GST_PLUGINS_BAD_VERSION_REQUIRED=gst1_plugins_bad_version
217     ;;
218 1.2)
219     GST_VERSION_REQUIRED=gst12_version
220     GST_PLUGINS_BASE_VERSION_REQUIRED=gst12_plugins_base_version
221     GST_PLUGINS_BAD_VERSION_REQUIRED=gst12_plugins_bad_version
222     ;;
223 1.[[3-4]])
224     GST_VERSION_REQUIRED=gst14_version
225     GST_PLUGINS_BASE_VERSION_REQUIRED=gst14_plugins_base_version
226     GST_PLUGINS_BAD_VERSION_REQUIRED=gst14_plugins_bad_version
227     ;;
228 *)
229     AC_MSG_ERROR([unsupported GStreamer API version $GST_API_VERSION])
230     ;;
231 esac
232 AC_SUBST(GST_API_VERSION)
233 AC_SUBST(GST_VERSION_REQUIRED)
234 AC_SUBST(GST_PLUGINS_BASE_VERSION_REQUIRED)
235 AC_SUBST(GST_PLUGINS_BAD_VERSION_REQUIRED)
236
237 USE_GST_API_0_10="no"
238 USE_GST_API_1_0p="no"
239 USE_GST_API_1_2p="no"
240 AS_VERSION_COMPARE([$GST_API_VERSION], [0.10],
241     [], [USE_GST_API_0_10="yes"], [])
242 AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
243     [], [USE_GST_API_1_0p="yes"], [USE_GST_API_1_0p="yes"])
244 AS_VERSION_COMPARE([$GST_API_VERSION], [1.2],
245     [], [USE_GST_API_1_2p="yes"], [USE_GST_API_1_2p="yes"])
246 AM_CONDITIONAL([USE_GST_API_0_10], [test "$USE_GST_API_0_10" = "yes"])
247 AM_CONDITIONAL([USE_GST_API_1_0p], [test "$USE_GST_API_1_0p" = "yes"])
248 AM_CONDITIONAL([USE_GST_API_1_2p], [test "$USE_GST_API_1_2p" = "yes"])
249
250 dnl GStreamer 1.2.x APIs don't have their own namespace
251 GST_PKG_VERSION="$GST_API_VERSION"
252 if test "$USE_GST_API_1_2p" = "yes"; then
253     GST_PKG_VERSION="1.0"
254 fi
255 AC_SUBST([GST_PKG_VERSION])
256
257 dnl Validate certain features
258 if test "$USE_GST_API_0_10" = "yes"; then
259     AC_MSG_WARN([support for GStreamer 0.10 is obsolete, and will be removed])
260     if test "$enable_builtin_videoparsers" = "yes"; then
261         AC_MSG_WARN([disabled built-in videoparsers (unsupported)])
262         enable_builtin_videoparsers="no"
263     fi
264 elif test "$USE_GST_API_1_2p" != "yes"; then
265     AC_MSG_WARN([support for GStreamer < 1.2 is deprecated, please upgrade])
266 fi
267
268 dnl GStreamer Core
269 PKG_CHECK_MODULES([GST],
270     [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
271 PKG_CHECK_MODULES([GST_BASE],
272     [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
273
274 AC_CACHE_CHECK([for GstBaseSink::query hook], ac_cv_have_gst_base_sink_query, [
275     saved_CPPFLAGS="$CPPFLAGS"
276     CPPFLAGS="$CPPFLAGS $GST_BASE_CFLAGS"
277     saved_LIBS="$LIBS"
278     LIBS="$LIBS $GST_BASE_LIBS"
279     AC_COMPILE_IFELSE(
280         [AC_LANG_PROGRAM(
281             [[#include <gst/base/gstbasesink.h>]],
282             [[GstBaseSinkClass klass; klass.query = NULL;]])],
283         [ac_cv_have_gst_base_sink_query="yes"],
284         [ac_cv_have_gst_base_sink_query="no"]
285     )
286     CPPFLAGS="$saved_CPPFLAGS"
287     LIBS="$saved_LIBS"
288 ])
289 if test "$ac_cv_have_gst_base_sink_query" != "yes"; then
290     AC_MSG_ERROR([GstBaseSink does not contain the 'query' vfunc])
291 fi
292
293 dnl GStreamer -base plugins
294 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
295     [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
296 if test "$GST_API_VERSION" = "0.10"; then
297 PKG_CHECK_MODULES([GST_INTERFACES],
298     [gstreamer-interfaces-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
299 fi
300
301 dnl ... GstVideoOverlayComposition (gstreamer-video)
302 PKG_CHECK_MODULES([GST_VIDEO],
303     [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
304
305 AC_CACHE_CHECK([for GstVideoOverlayComposition],
306     ac_cv_have_gst_video_overlay_composition, [
307     saved_CPPFLAGS="$CPPFLAGS"
308     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
309     saved_LIBS="$LIBS"
310     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
311     AC_COMPILE_IFELSE(
312         [AC_LANG_PROGRAM(
313             [[#include <gst/video/video-overlay-composition.h>]],
314             [[GstVideoOverlayComposition *c;
315               c = gst_video_overlay_composition_new(0);]])],
316         [ac_cv_have_gst_video_overlay_composition="yes"],
317         [ac_cv_have_gst_video_overlay_composition="no"]
318     )
319     CPPFLAGS="$saved_CPPFLAGS"
320     LIBS="$saved_LIBS"
321 ])
322 if test "$ac_cv_have_gst_video_overlay_composition" != "yes"; then
323     AC_MSG_ERROR([GstVideoOverlayComposition is not available])
324 fi
325
326 AC_CACHE_CHECK([... with advanced format flags],
327     ac_cv_have_gst_video_overlay_hwcaps, [
328     saved_CPPFLAGS="$CPPFLAGS"
329     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
330     saved_LIBS="$LIBS"
331     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
332     AC_COMPILE_IFELSE(
333         [AC_LANG_PROGRAM(
334             [[#include <gst/video/video-overlay-composition.h>]],
335             [[GstVideoOverlayRectangle *rect;
336               const guint w = 64, h = 64;
337               guint flags = (
338                   GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA|
339                   GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA);
340               rect = gst_video_overlay_rectangle_new_argb(NULL, w, h, w * 4,
341                   0, 0, w, h, flags);
342               gst_video_overlay_rectangle_set_global_alpha(rect, 0.5f);]])],
343         [ac_cv_have_gst_video_overlay_hwcaps="yes"],
344         [ac_cv_have_gst_video_overlay_hwcaps="no"]
345     )
346     CPPFLAGS="$saved_CPPFLAGS"
347     LIBS="$saved_LIBS"
348 ])
349 if test "$ac_cv_have_gst_video_overlay_hwcaps" = "yes"; then
350     AC_DEFINE_UNQUOTED([HAVE_GST_VIDEO_OVERLAY_HWCAPS], 1,
351         [Defined to 1 if GstVideoOverlayComposition API supports HW hints.])
352 fi
353
354 dnl GStreamer -bad plugins (deprecated in GStreamer v1.2)
355 if test "$USE_GST_API_1_2p" != "yes"; then
356 PKG_CHECK_MODULES([GST_BASEVIDEO],
357     [gstreamer-basevideo-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
358 fi
359
360 dnl ... bitstream parsers
361 if test "$enable_builtin_codecparsers" = "yes"; then
362     ac_cv_have_gst_mpeg2_parser="no"
363     ac_cv_have_gst_h264_parser="no"
364     ac_cv_have_gst_jpeg_parser="no"
365     ac_cv_have_gst_vp8_parser="no"
366 else
367 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
368     [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
369 fi
370
371 dnl ... MPEG-2 parser, with the required extensions
372 AC_CACHE_CHECK([for MPEG-2 parser],
373     ac_cv_have_gst_mpeg2_parser, [
374     saved_CPPFLAGS="$CPPFLAGS"
375     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
376     saved_LIBS="$LIBS"
377     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
378     AC_COMPILE_IFELSE(
379         [AC_LANG_PROGRAM(
380             [[#include <gst/codecparsers/gstmpegvideoparser.h>]],
381             [[GstMpegVideoSequenceHdr seq_hdr;
382               GstMpegVideoSequenceExt seq_ext;
383               GstMpegVideoSequenceDisplayExt seq_dpy;
384               GstMpegVideoSliceHdr slice_hdr;
385               GstMpegVideoPacket packet;
386               gst_mpeg_video_packet_parse_slice_header(&packet, &slice_hdr,
387                   &seq_hdr, NULL);
388               gst_mpeg_video_finalise_mpeg2_sequence_header(&seq_hdr,
389                   &seq_ext, &seq_dpy);]])],
390         [ac_cv_have_gst_mpeg2_parser="yes"],
391         [ac_cv_have_gst_mpeg2_parser="no"]
392     )
393     CPPFLAGS="$saved_CPPFLAGS"
394     LIBS="$saved_LIBS"
395 ])
396 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_MPEG2],
397     [test "$ac_cv_have_gst_mpeg2_parser" != "yes"])
398
399 dnl ... H.264 parser, with the required extensions
400 AC_CACHE_CHECK([for H.264 parser],
401     ac_cv_have_gst_h264_parser, [
402     saved_CPPFLAGS="$CPPFLAGS"
403     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
404     saved_LIBS="$LIBS"
405     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
406     AC_COMPILE_IFELSE(
407         [AC_LANG_PROGRAM(
408             [[#include <gst/codecparsers/gsth264parser.h>]],
409             [[GstH264SliceHdr slice_hdr;
410               GstH264VUIParams vui_params;
411               GstH264Profile profile = GST_H264_PROFILE_HIGH;
412               slice_hdr.n_emulation_prevention_bytes = 0;
413               vui_params.par_n = 0;
414               vui_params.par_d = 0;]])],
415         [ac_cv_have_gst_h264_parser="yes"],
416         [ac_cv_have_gst_h264_parser="no"]
417     )
418     CPPFLAGS="$saved_CPPFLAGS"
419     LIBS="$saved_LIBS"
420 ])
421 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H264],
422     [test "$ac_cv_have_gst_h264_parser" != "yes"])
423
424 dnl ... JPEG parser, not upstream yet
425 AC_CACHE_CHECK([for JPEG parser],
426     ac_cv_have_gst_jpeg_parser, [
427     saved_CPPFLAGS="$CPPFLAGS"
428     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
429     saved_LIBS="$LIBS"
430     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
431     AC_COMPILE_IFELSE(
432         [AC_LANG_PROGRAM(
433             [[#include <gst/codecparsers/gstjpegparser.h>]],
434             [[GstJpegImage jpeg_image;]])],
435         [ac_cv_have_gst_jpeg_parser="yes"],
436         [ac_cv_have_gst_jpeg_parser="no"]
437     )
438     CPPFLAGS="$saved_CPPFLAGS"
439     LIBS="$saved_LIBS"
440 ])
441 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_JPEG],
442     [test "$ac_cv_have_gst_jpeg_parser" != "yes"])
443
444 dnl ... VP8 parser, not upstream yet
445 if test "$enable_builtin_libvpx" = "yes"; then
446     ac_cv_have_gst_vp8_parser="no"
447 fi
448 AC_CACHE_CHECK([for VP8 parser],
449     ac_cv_have_gst_vp8_parser, [
450     saved_CPPFLAGS="$CPPFLAGS"
451     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
452     saved_LIBS="$LIBS"
453     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
454     AC_COMPILE_IFELSE(
455         [AC_LANG_PROGRAM(
456             [[#include <gst/codecparsers/gstvp8parser.h>]],
457             [[GstVp8FrameHdr frame_hdr;]])],
458         [ac_cv_have_gst_vp8_parser="yes"],
459         [ac_cv_have_gst_vp8_parser="no"]
460     )
461     CPPFLAGS="$saved_CPPFLAGS"
462     LIBS="$saved_LIBS"
463 ])
464 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_VP8],
465     [test "$ac_cv_have_gst_vp8_parser" != "yes"])
466 AM_CONDITIONAL([USE_BUILTIN_LIBVPX], [test "$enable_builtin_libvpx" = "yes"])
467
468 dnl ... video parsers
469 AM_CONDITIONAL([USE_LOCAL_VIDEO_PARSERS],
470     [test "$enable_builtin_videoparsers" = "yes"])
471
472 case $GST_API_VERSION in
473 0.10)   lt_bias=gst0_vaapi_lt_current_bias;;
474 1.0)    lt_bias=gst1_vaapi_lt_current_bias;;
475 1.2)    lt_bias=gst2_vaapi_lt_current_bias;;
476 1.[[3-4]]) lt_bias=gst4_vaapi_lt_current_bias;;
477 esac
478 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - "$lt_bias"`
479 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
480
481 dnl GST_VAAPI_LT_LDFLAGS:
482 GST_VAAPI_LT_CURRENT="$GST_VAAPI_MAJOR_VERSION"
483 GST_VAAPI_LT_REV=gst_vaapi_lt_revision
484 GST_VAAPI_LT_AGE=gst_vaapi_lt_age
485 GST_VAAPI_LT_VERSION="$GST_VAAPI_LT_CURRENT:$GST_VAAPI_LT_REV:$GST_VAAPI_LT_AGE"
486 GST_VAAPI_LT_LDFLAGS="-version-info $GST_VAAPI_LT_VERSION"
487 AC_SUBST(GST_VAAPI_LT_VERSION)
488 AC_SUBST(GST_VAAPI_LT_LDFLAGS)
489
490 dnl GST_ALL_LDFLAGS:
491 dnl LDFLAGS really should only contain flags, not libs - they get added before
492 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
493 GST_ALL_LDFLAGS="-no-undefined"
494 AC_SUBST(GST_ALL_LDFLAGS)
495
496 dnl GST_PLUGIN_LDFLAGS:
497 dnl this really should only contain flags, not libs - they get added before
498 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
499 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
500 AC_SUBST(GST_PLUGIN_LDFLAGS)
501
502 dnl Check for the GStreamer plugins directory
503 AC_ARG_VAR([GST_PLUGIN_PATH], [installation path for gstreamer-vaapi plugin elements for GStreamer 0.10])
504 AC_ARG_VAR([GST_PLUGIN_PATH_1_0], [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
505 AC_MSG_CHECKING([for GStreamer plugins directory])
506 case $GST_PKG_VERSION in
507 0.10)   _gst_plugin_path="$GST_PLUGIN_PATH";;
508 1.0)    _gst_plugin_path="$GST_PLUGIN_PATH_1_0";;
509 esac
510 if test -d "$_gst_plugin_path"; then
511     GST_PLUGINS_DIR="$_gst_plugin_path"
512 else
513     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
514     if test -z "$GST_PLUGINS_DIR"; then
515         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
516     fi
517 fi
518 AC_MSG_RESULT([$GST_PLUGINS_DIR])
519 plugindir="$GST_PLUGINS_DIR"
520 AC_SUBST(plugindir)
521
522 dnl ---------------------------------------------------------------------------
523 dnl -- Renderers                                                             --
524 dnl ---------------------------------------------------------------------------
525
526 dnl Check for DRM/libudev
527 USE_DRM=0
528 if test "$enable_drm" = "yes"; then
529     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
530     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
531
532     if test $USE_DRM -eq 1; then
533         saved_CPPFLAGS="$CPPFLAGS"
534         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
535         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
536         CPPFLAGS="$saved_CPPFLAGS"
537     fi
538 fi
539
540 dnl Check for X11
541 USE_X11=0
542 if test "$enable_x11" = "yes"; then
543     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
544     if test $USE_X11 -eq 1; then
545         saved_CPPFLAGS="$CPPFLAGS"
546         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
547         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
548         CPPFLAGS="$saved_CPPFLAGS"
549     fi
550 fi
551
552 dnl Check for XRandR
553 HAVE_XRANDR=0
554 if test $USE_X11 -eq 1; then
555     HAVE_XRANDR=1
556     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
557     if test $HAVE_XRANDR -eq 1; then
558         saved_CPPFLAGS="$CPPFLAGS"
559         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
560         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
561         CPPFLAGS="$saved_CPPFLAGS"
562     fi
563 fi
564 if test $HAVE_XRANDR -eq 1; then
565     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
566         [Defined to 1 if the XRandR extension exists.])
567 fi
568
569 dnl Check for XRender
570 HAVE_XRENDER=0
571 if test $USE_X11 -eq 1; then
572     HAVE_XRENDER=1
573     PKG_CHECK_MODULES([XRENDER], [xrender], [:], [HAVE_XRENDER=0])
574     if test $HAVE_XRENDER -eq 1; then
575         saved_CPPFLAGS="$CPPFLAGS"
576         CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
577         AC_CHECK_HEADERS([X11/extensions/Xrender.h], [:], [HAVE_XRENDER=0])
578         CPPFLAGS="$saved_CPPFLAGS"
579     fi
580 fi
581 if test $HAVE_XRENDER -eq 1; then
582     AC_DEFINE_UNQUOTED([HAVE_XRENDER], [1],
583         [Defined to 1 if the XRender extension exists.])
584 fi
585
586 dnl OpenGL
587 enable_opengl="no"
588 if test "$enable_glx" = "yes"; then
589     enable_opengl="yes"
590 fi
591
592 HAVE_GL=0
593 if test "$enable_opengl" = "yes"; then
594     HAVE_GL=1
595     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
596     saved_CPPFLAGS="$CPPFLAGS"
597     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
598     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
599 #ifdef HAVE_GL_GL_H
600 # include <GL/gl.h>
601 #endif
602     ])
603     CPPFLAGS="$saved_CPPFLAGS"
604 fi
605
606 dnl ... GLX
607 USE_GLX=0
608 if test "$enable_glx" = "yes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
609     USE_GLX=1
610     saved_CPPFLAGS="$CPPFLAGS"
611     saved_LIBS="$LIBS"
612     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
613     LIBS="$LIBS $GL_LIBS"
614     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
615 #ifdef HAVE_GL_GL_H
616 # include <GL/gl.h>
617 #endif
618     ])
619     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
620     CPPFLAGS="$saved_CPPFLAGS"
621     LIBS="$saved_LIBS"
622 fi
623
624 dnl Check for Wayland
625 USE_WAYLAND=0
626 if test "$enable_wayland" = "yes"; then
627     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
628         [USE_WAYLAND=1], [USE_WAYLAND=0])
629
630     if test $USE_WAYLAND -eq 1; then
631         saved_CPPFLAGS="$CPPFLAGS"
632         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
633         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
634         CPPFLAGS="$saved_CPPFLAGS"
635     fi
636 fi
637
638 dnl ---------------------------------------------------------------------------
639 dnl -- VA-API                                                                --
640 dnl ---------------------------------------------------------------------------
641
642 dnl Core API
643 LIBVA_PKGNAME="libva"
644 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME >= va_api_version])
645 AC_SUBST(LIBVA_PKGNAME)
646
647 VA_VERSION=`$PKG_CONFIG --modversion libva`
648 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
649 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
650 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
651 VA_VERSION_STR="$VA_VERSION"
652
653 dnl VA/DRM API
654 HAVE_VA_DRM=0
655 if test $USE_DRM -eq 1; then
656     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
657         [HAVE_VA_DRM=1], [USE_DRM=0])
658
659     if test $HAVE_VA_DRM -eq 1; then
660         saved_CPPFLAGS="$CPPFLAGS"
661         CPPFLAGS="$LIBVA_DRM_CFLAGS"
662         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
663         CPPFLAGS="$saved_CPPFLAGS"
664     fi
665 fi
666
667 dnl VA/X11 API
668 HAVE_VA_X11=0
669 LIBVA_X11_PKGNAME="libva-x11"
670 if test $USE_X11 -eq 1; then
671     PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME >= va_api_x11_version],
672         [HAVE_VA_X11=1], [USE_X11=0])
673 fi
674 AC_SUBST(LIBVA_X11_PKGNAME)
675
676 dnl VA/GLX API
677 HAVE_VA_GLX=0
678 LIBVA_GLX_PKGNAME="libva-glx"
679 if test $USE_GLX -eq 1; then
680     PKG_CHECK_MODULES(LIBVA_GLX, [$LIBVA_GLX_PKGNAME >= va_api_glx_version],
681         [HAVE_VA_GLX=1], [LIBVA_GLX_PKGNAME="$LIBVA_X11_PKGNAME"])
682
683     if test $HAVE_VA_GLX -eq 1; then
684         saved_CPPFLAGS="$CPPFLAGS"
685         CPPFLAGS="$LIBVA_GLX_CFLAGS"
686         AC_CHECK_HEADERS([va/va_glx.h], [:], [HAVE_VA_GLX=0])
687         CPPFLAGS="$saved_CPPFLAGS"
688     fi
689 fi
690 AC_SUBST(LIBVA_GLX_PKGNAME)
691
692 dnl Check for va_dec_jpeg.h header
693 saved_CPPFLAGS="$CPPFLAGS"
694 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
695 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [], [#include <va/va.h>])
696 CPPFLAGS="$saved_CPPFLAGS"
697
698 dnl Check for JPEG decoding API (0.32.1+)
699 USE_JPEG_DECODER=0
700 AC_CACHE_CHECK([for JPEG decoding API],
701     ac_cv_have_jpeg_decoding_api, [
702     saved_CPPFLAGS="$CPPFLAGS"
703     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
704     saved_LIBS="$LIBS"
705     LIBS="$LIBS $LIBVA_LIBS"
706     AC_COMPILE_IFELSE(
707         [AC_LANG_PROGRAM(
708             [[#include <va/va.h>
709               #ifdef HAVE_VA_VA_DEC_JPEG_H
710               #include <va/va_dec_jpeg.h>
711               #endif
712             ]],
713             [[VAPictureParameterBufferJPEGBaseline pic_param;
714               VASliceParameterBufferJPEGBaseline slice_param;
715               VAHuffmanTableBufferJPEGBaseline huffman_table;
716               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
717         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
718         [ac_cv_have_jpeg_decoding_api="no"]
719     )
720     CPPFLAGS="$saved_CPPFLAGS"
721     LIBS="$saved_LIBS"
722 ])
723
724 dnl Check for va_dec_vp8.h header
725 saved_CPPFLAGS="$CPPFLAGS"
726 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
727 AC_CHECK_HEADERS([va/va_dec_vp8.h], [], [], [#include <va/va.h>])
728 CPPFLAGS="$saved_CPPFLAGS"
729
730 dnl Check for VP8 decoding API (0.34+)
731 USE_VP8_DECODER=0
732 AC_CACHE_CHECK([for VP8 decoding API],
733     ac_cv_have_vp8_decoding_api, [
734     saved_CPPFLAGS="$CPPFLAGS"
735     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
736     saved_LIBS="$LIBS"
737     LIBS="$LIBS $LIBVA_LIBS"
738     AC_COMPILE_IFELSE(
739         [AC_LANG_PROGRAM(
740             [[#include <va/va.h>
741               #ifdef HAVE_VA_VA_DEC_VP8_H
742               #include <va/va_dec_vp8.h>
743               #endif
744             ]],
745             [[VAPictureParameterBufferVP8 pic_param;
746               VASliceParameterBufferVP8 slice_param;
747               VAProbabilityDataBufferVP8 prob_data;
748               VAIQMatrixBufferVP8 iq_matrix;
749               slice_param.slice_data_offset = 0;
750               slice_param.slice_data_flag = 0;]])],
751         [ac_cv_have_vp8_decoding_api="yes" USE_VP8_DECODER=1],
752         [ac_cv_have_vp8_decoding_api="no"]
753     )
754     CPPFLAGS="$saved_CPPFLAGS"
755     LIBS="$saved_LIBS"
756 ])
757
758
759 dnl Check for vpp (video post-processing) support
760 USE_VA_VPP=0
761 AC_CACHE_CHECK([for video post-postprocessing API],
762     ac_cv_have_va_vpp_api, [
763     saved_CPPFLAGS="$CPPFLAGS"
764     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
765     saved_LIBS="$LIBS"
766     LIBS="$LIBS $LIBVA_LIBS"
767     AC_COMPILE_IFELSE(
768         [AC_LANG_PROGRAM(
769             [[#include <va/va.h>
770               #include <va/va_vpp.h>]],
771             [[VADisplay va_dpy;
772               VAContextID vpp_ctx;
773               VAProcFilterType filters[VAProcFilterCount];
774               unsigned int num_filters = VAProcFilterCount;
775               vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
776               ]])],
777         [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
778         [ac_cv_have_va_vpp_api="no"]
779     )
780     CPPFLAGS="$saved_CPPFLAGS"
781     LIBS="$saved_LIBS"
782 ])
783
784 dnl Check for encoding support
785 USE_ENCODERS=0
786 if test "$enable_encoders" = "yes"; then
787     PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
788         [HAVE_VA_ENC=1], [HAVE_VA_ENC=0])
789
790     if test $HAVE_VA_ENC -eq 1; then
791         saved_CPPFLAGS="$CPPFLAGS"
792         CPPFLAGS="$LIBVA_CFLAGS"
793         AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h],
794             [USE_ENCODERS=1], [HAVE_VA_ENC=0 USE_ENCODERS=0],
795             [#include <va/va.h>
796             ])
797         CPPFLAGS="$saved_CPPFLAGS"
798     fi
799 fi
800
801 dnl VA/Wayland API
802 if test "$enable_wayland" = "yes"; then
803     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
804         [:], [USE_WAYLAND=0])
805 fi
806
807 dnl ---------------------------------------------------------------------------
808 dnl -- Generate files and summary                                            --
809 dnl ---------------------------------------------------------------------------
810
811 case ":$USE_X11:$USE_GLX:$USE_WAYLAND:$USE_DRM:" in
812 *:1:*)
813     ;;
814 *)
815     AC_MSG_ERROR([No renderer is enabled])
816     ;;
817 esac
818
819 AC_DEFINE_UNQUOTED([USE_ENCODERS], $USE_ENCODERS,
820     [Defined to 1 if video encoders are used])
821 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
822
823 AC_DEFINE_UNQUOTED(USE_VA_VPP, $USE_VA_VPP,
824     [Defined to 1 if video post-processing is used])
825 AM_CONDITIONAL(USE_VA_VPP, test $USE_VA_VPP -eq 1)
826
827 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
828     [Defined to 1 if JPEG decoder is used])
829 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
830
831 AC_DEFINE_UNQUOTED(USE_VP8_DECODER, $USE_VP8_DECODER,
832     [Defined to 1 if VP8 decoder is used])
833 AM_CONDITIONAL(USE_VP8_DECODER, test $USE_VP8_DECODER -eq 1)
834
835 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
836     [Defined to 1 if DRM is enabled])
837 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
838
839 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
840     [Defined to 1 if X11 is enabled])
841 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
842
843 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
844     [Defined to 1 if GLX is enabled])
845 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
846
847 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
848     [Defined to 1 if WAYLAND is enabled])
849 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
850
851 pkgconfigdir=${libdir}/pkgconfig
852 AC_SUBST(pkgconfigdir)
853
854 AC_CONFIG_FILES([
855     Makefile
856     debian.upstream/Makefile
857     debian.upstream/changelog
858     debian.upstream/control
859     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
860 debian.upstream/gstreamer-vaapi-doc.install.in
861     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
862 debian.upstream/gstreamer-vaapi.install.in
863     debian.upstream/libgstvaapi$GST_PKG_VERSION-dev.install:\
864 debian.upstream/libgstvaapi-dev.install.in
865     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
866 debian.upstream/libgstvaapi.install.in
867     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
868 debian.upstream/libgstvaapi-drm.install.in
869     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
870 debian.upstream/libgstvaapi-glx.install.in
871     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
872 debian.upstream/libgstvaapi-wayland.install.in
873     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
874 debian.upstream/libgstvaapi-x11.install.in
875     docs/Makefile
876     docs/reference/Makefile
877     docs/reference/libs/Makefile
878     docs/reference/libs/libs-docs.xml
879     docs/reference/plugins/Makefile
880     docs/reference/plugins/plugins-docs.xml
881     ext/Makefile
882     ext/libvpx/Makefile
883     gst-libs/Makefile
884     gst-libs/gst/Makefile
885     gst-libs/gst/base/Makefile
886     gst-libs/gst/codecparsers/Makefile
887     gst-libs/gst/vaapi/Makefile
888     gst-libs/gst/video/Makefile
889     gst/Makefile
890     gst/vaapi/Makefile
891     patches/Makefile
892     patches/videoparsers/Makefile
893     pkgconfig/Makefile
894     pkgconfig/gstreamer-vaapi-$GST_PKG_VERSION.pc:\
895 pkgconfig/gstreamer-vaapi.pc.in
896     pkgconfig/gstreamer-vaapi-drm-$GST_PKG_VERSION.pc:\
897 pkgconfig/gstreamer-vaapi-drm.pc.in
898     pkgconfig/gstreamer-vaapi-glx-$GST_PKG_VERSION.pc:\
899 pkgconfig/gstreamer-vaapi-glx.pc.in
900     pkgconfig/gstreamer-vaapi-wayland-$GST_PKG_VERSION.pc:\
901 pkgconfig/gstreamer-vaapi-wayland.pc.in
902     pkgconfig/gstreamer-vaapi-x11-$GST_PKG_VERSION.pc:\
903 pkgconfig/gstreamer-vaapi-x11.pc.in
904     tests/Makefile
905 ])
906 AC_OUTPUT
907
908 dnl Print summary
909 yesno() {
910     test $1 -eq 1 && echo yes || echo no
911 }
912
913 VIDEO_OUTPUTS=""
914 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
915 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
916 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
917 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
918
919 echo
920 echo $PACKAGE configuration summary:
921 echo
922 echo GStreamer API version ............ : $GST_API_VERSION
923 echo VA-API version ................... : $VA_VERSION_STR
924 echo Video encoding ................... : $(yesno $USE_ENCODERS)
925 echo Video outputs .................... : $VIDEO_OUTPUTS
926 echo