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