NEWS: updates.
[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], [4])
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],       [3])
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               gst_mpeg_video_finalise_mpeg2_sequence_header(&seq_hdr,
319                   &seq_ext, &seq_dpy);]])],
320         [ac_cv_have_gst_mpeg2_parser="yes"],
321         [ac_cv_have_gst_mpeg2_parser="no"]
322     )
323     CPPFLAGS="$saved_CPPFLAGS"
324     LIBS="$saved_LIBS"
325 ])
326 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_MPEG2],
327     [test "$ac_cv_have_gst_mpeg2_parser" != "yes"])
328
329 dnl ... H.264 parser, with the required extensions
330 AC_CACHE_CHECK([for H.264 parser],
331     ac_cv_have_gst_h264_parser, [
332     saved_CPPFLAGS="$CPPFLAGS"
333     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
334     saved_LIBS="$LIBS"
335     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
336     AC_COMPILE_IFELSE(
337         [AC_LANG_PROGRAM(
338             [[#include <gst/codecparsers/gsth264parser.h>]],
339             [[GstH264SliceHdr slice_hdr;
340               GstH264VUIParams vui_params;
341               GstH264Profile profile = GST_H264_PROFILE_HIGH;
342               slice_hdr.n_emulation_prevention_bytes = 0;
343               vui_params.par_n = 0;
344               vui_params.par_d = 0;]])],
345         [ac_cv_have_gst_h264_parser="yes"],
346         [ac_cv_have_gst_h264_parser="no"]
347     )
348     CPPFLAGS="$saved_CPPFLAGS"
349     LIBS="$saved_LIBS"
350 ])
351 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H264],
352     [test "$ac_cv_have_gst_h264_parser" != "yes"])
353
354 dnl ... JPEG parser, not upstream yet
355 AC_CACHE_CHECK([for JPEG parser],
356     ac_cv_have_gst_jpeg_parser, [
357     saved_CPPFLAGS="$CPPFLAGS"
358     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
359     saved_LIBS="$LIBS"
360     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
361     AC_COMPILE_IFELSE(
362         [AC_LANG_PROGRAM(
363             [[#include <gst/codecparsers/gstjpegparser.h>]],
364             [[GstJpegImage jpeg_image;]])],
365         [ac_cv_have_gst_jpeg_parser="yes"],
366         [ac_cv_have_gst_jpeg_parser="no"]
367     )
368     CPPFLAGS="$saved_CPPFLAGS"
369     LIBS="$saved_LIBS"
370 ])
371 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_JPEG],
372     [test "$ac_cv_have_gst_jpeg_parser" != "yes"])
373
374 case $GST_API_VERSION in
375 0.10)   lt_bias=gst0_vaapi_lt_current_bias;;
376 1.0)    lt_bias=gst1_vaapi_lt_current_bias;;
377 esac
378 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - "$lt_bias"`
379 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
380
381 dnl GST_VAAPI_LT_LDFLAGS:
382 GST_VAAPI_LT_CURRENT="$GST_VAAPI_MAJOR_VERSION"
383 GST_VAAPI_LT_REV=gst_vaapi_lt_revision
384 GST_VAAPI_LT_AGE=gst_vaapi_lt_age
385 GST_VAAPI_LT_VERSION="$GST_VAAPI_LT_CURRENT:$GST_VAAPI_LT_REV:$GST_VAAPI_LT_AGE"
386 GST_VAAPI_LT_LDFLAGS="-version-info $GST_VAAPI_LT_VERSION"
387 AC_SUBST(GST_VAAPI_LT_VERSION)
388 AC_SUBST(GST_VAAPI_LT_LDFLAGS)
389
390 dnl GST_ALL_LDFLAGS:
391 dnl LDFLAGS really should only contain flags, not libs - they get added before
392 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
393 GST_ALL_LDFLAGS="-no-undefined"
394 AC_SUBST(GST_ALL_LDFLAGS)
395
396 dnl GST_PLUGIN_LDFLAGS:
397 dnl this really should only contain flags, not libs - they get added before
398 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
399 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
400 AC_SUBST(GST_PLUGIN_LDFLAGS)
401
402 dnl Check for the GStreamer plugins directory
403 AC_ARG_VAR([GST_PLUGIN_PATH], [installation path for gstreamer-vaapi plugin elements])
404 AC_MSG_CHECKING([for GStreamer plugins directory])
405 if test -d "$GST_PLUGIN_PATH"; then
406     GST_PLUGINS_DIR="$GST_PLUGIN_PATH"
407 else
408     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_API_VERSION --variable pluginsdir`
409     if test -z "$GST_PLUGINS_DIR"; then
410         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_API_VERSION"
411     fi
412 fi
413 AC_MSG_RESULT([$GST_PLUGINS_DIR])
414 plugindir="$GST_PLUGINS_DIR"
415 AC_SUBST(plugindir)
416
417 dnl ---------------------------------------------------------------------------
418 dnl -- Renderers                                                             --
419 dnl ---------------------------------------------------------------------------
420
421 dnl Check for DRM/libudev
422 USE_DRM=0
423 if test "$enable_drm" = "yes"; then
424     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
425     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
426
427     if test $USE_DRM -eq 1; then
428         saved_CPPFLAGS="$CPPFLAGS"
429         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
430         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
431         CPPFLAGS="$saved_CPPFLAGS"
432     fi
433 fi
434
435 dnl Check for X11
436 USE_X11=0
437 if test "$enable_x11" = "yes"; then
438     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
439     if test $USE_X11 -eq 1; then
440         saved_CPPFLAGS="$CPPFLAGS"
441         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
442         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
443         CPPFLAGS="$saved_CPPFLAGS"
444     fi
445 fi
446
447 dnl Check for XRandR
448 HAVE_XRANDR=0
449 if test $USE_X11 -eq 1; then
450     HAVE_XRANDR=1
451     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
452     if test $HAVE_XRANDR -eq 1; then
453         saved_CPPFLAGS="$CPPFLAGS"
454         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
455         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
456         CPPFLAGS="$saved_CPPFLAGS"
457     fi
458 fi
459 if test $HAVE_XRANDR -eq 1; then
460     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
461         [Defined to 1 if the XRandR extension exists.])
462 fi
463
464 dnl OpenGL
465 enable_opengl="no"
466 if test "$enable_glx" = "yes"; then
467     enable_opengl="yes"
468 fi
469
470 HAVE_GL=0
471 if test "$enable_opengl" = "yes"; then
472     HAVE_GL=1
473     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
474     saved_CPPFLAGS="$CPPFLAGS"
475     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
476     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
477 #ifdef HAVE_GL_GL_H
478 # include <GL/gl.h>
479 #endif
480     ])
481     CPPFLAGS="$saved_CPPFLAGS"
482 fi
483
484 dnl ... GLX
485 USE_GLX=0
486 if test "$enable_glx" = "yes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
487     USE_GLX=1
488     saved_CPPFLAGS="$CPPFLAGS"
489     saved_LIBS="$LIBS"
490     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
491     LIBS="$LIBS $GL_LIBS"
492     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
493 #ifdef HAVE_GL_GL_H
494 # include <GL/gl.h>
495 #endif
496     ])
497     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
498     CPPFLAGS="$saved_CPPFLAGS"
499     LIBS="$saved_LIBS"
500 fi
501
502 dnl Check for Wayland
503 USE_WAYLAND=0
504 if test "$enable_wayland" = "yes"; then
505     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
506         [USE_WAYLAND=1], [USE_WAYLAND=0])
507
508     if test $USE_WAYLAND -eq 1; then
509         saved_CPPFLAGS="$CPPFLAGS"
510         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
511         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
512         CPPFLAGS="$saved_CPPFLAGS"
513     fi
514 fi
515
516 dnl ---------------------------------------------------------------------------
517 dnl -- VA-API                                                                --
518 dnl ---------------------------------------------------------------------------
519
520 dnl Core API
521 LIBVA_PKGNAME="libva"
522 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME >= va_api_version])
523 AC_SUBST(LIBVA_PKGNAME)
524
525 VA_VERSION=`$PKG_CONFIG --modversion libva`
526 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
527 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
528 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
529 VA_VERSION_STR="$VA_VERSION"
530
531 dnl VA/DRM API
532 HAVE_VA_DRM=0
533 if test $USE_DRM -eq 1; then
534     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
535         [HAVE_VA_DRM=1], [USE_DRM=0])
536
537     if test $HAVE_VA_DRM -eq 1; then
538         saved_CPPFLAGS="$CPPFLAGS"
539         CPPFLAGS="$LIBVA_DRM_CFLAGS"
540         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
541         CPPFLAGS="$saved_CPPFLAGS"
542     fi
543 fi
544
545 dnl VA/X11 API
546 HAVE_VA_X11=0
547 LIBVA_X11_PKGNAME="libva-x11"
548 if test $USE_X11 -eq 1; then
549     PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME >= va_api_x11_version],
550         [HAVE_VA_X11=1], [USE_X11=0])
551 fi
552 AC_SUBST(LIBVA_X11_PKGNAME)
553
554 dnl VA/GLX API
555 HAVE_VA_GLX=0
556 LIBVA_GLX_PKGNAME="libva-glx"
557 if test $USE_GLX -eq 1; then
558     PKG_CHECK_MODULES(LIBVA_GLX, [$LIBVA_GLX_PKGNAME >= va_api_glx_version],
559         [HAVE_VA_GLX=1], [LIBVA_GLX_PKGNAME="$LIBVA_X11_PKGNAME"])
560
561     if test $HAVE_VA_GLX -eq 1; then
562         saved_CPPFLAGS="$CPPFLAGS"
563         CPPFLAGS="$LIBVA_GLX_CFLAGS"
564         AC_CHECK_HEADERS([va/va_glx.h], [:], [HAVE_VA_GLX=0])
565         CPPFLAGS="$saved_CPPFLAGS"
566     fi
567 fi
568 AC_SUBST(LIBVA_GLX_PKGNAME)
569
570 dnl Check for JPEG decoding API (0.32.1+)
571 USE_JPEG_DECODER=0
572 AC_CACHE_CHECK([for JPEG decoding API],
573     ac_cv_have_jpeg_decoding_api, [
574     saved_CPPFLAGS="$CPPFLAGS"
575     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
576     saved_LIBS="$LIBS"
577     LIBS="$LIBS $LIBVA_LIBS"
578     AC_COMPILE_IFELSE(
579         [AC_LANG_PROGRAM(
580             [[#include <va/va.h>]],
581             [[VAPictureParameterBufferJPEGBaseline pic_param;
582               VASliceParameterBufferJPEGBaseline slice_param;
583               VAHuffmanTableBufferJPEGBaseline huffman_table;
584               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
585         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
586         [ac_cv_have_jpeg_decoding_api="no"]
587     )
588     CPPFLAGS="$saved_CPPFLAGS"
589     LIBS="$saved_LIBS"
590 ])
591
592 dnl VA/Wayland API
593 if test "$enable_wayland" = "yes"; then
594     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
595         [:], [USE_WAYLAND=0])
596 fi
597
598 dnl ---------------------------------------------------------------------------
599 dnl -- Generate files and summary                                            --
600 dnl ---------------------------------------------------------------------------
601
602 case ":$USE_X11:$USE_GLX:$USE_WAYLAND:$USE_DRM:" in
603 *:1:*)
604     ;;
605 *)
606     AC_MSG_ERROR([No renderer is enabled])
607     ;;
608 esac
609
610 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
611     [Defined to 1 if JPEG decoder is used])
612 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
613
614 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
615     [Defined to 1 if DRM is enabled])
616 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
617
618 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
619     [Defined to 1 if X11 is enabled])
620 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
621
622 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
623     [Defined to 1 if GLX is enabled])
624 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
625
626 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
627     [Defined to 1 if WAYLAND is enabled])
628 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
629
630 pkgconfigdir=${libdir}/pkgconfig
631 AC_SUBST(pkgconfigdir)
632
633 AC_CONFIG_FILES([
634     Makefile
635     debian.upstream/Makefile
636     debian.upstream/changelog
637     debian.upstream/control
638     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
639 debian.upstream/gstreamer-vaapi-doc.install.in
640     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
641 debian.upstream/gstreamer-vaapi.install.in
642     debian.upstream/libgstvaapi$GST_API_VERSION-dev.install:\
643 debian.upstream/libgstvaapi-dev.install.in
644     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
645 debian.upstream/libgstvaapi.install.in
646     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
647 debian.upstream/libgstvaapi-drm.install.in
648     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
649 debian.upstream/libgstvaapi-glx.install.in
650     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
651 debian.upstream/libgstvaapi-wayland.install.in
652     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
653 debian.upstream/libgstvaapi-x11.install.in
654     docs/Makefile
655     docs/reference/Makefile
656     docs/reference/libs/Makefile
657     docs/reference/libs/libs-docs.xml
658     docs/reference/plugins/Makefile
659     docs/reference/plugins/plugins-docs.xml
660     ext/Makefile
661     gst-libs/Makefile
662     gst-libs/gst/Makefile
663     gst-libs/gst/codecparsers/Makefile
664     gst-libs/gst/vaapi/Makefile
665     gst-libs/gst/video/Makefile
666     gst/Makefile
667     gst/vaapi/Makefile
668     pkgconfig/Makefile
669     pkgconfig/gstreamer-vaapi-$GST_API_VERSION.pc:\
670 pkgconfig/gstreamer-vaapi.pc.in
671     pkgconfig/gstreamer-vaapi-drm-$GST_API_VERSION.pc:\
672 pkgconfig/gstreamer-vaapi-drm.pc.in
673     pkgconfig/gstreamer-vaapi-glx-$GST_API_VERSION.pc:\
674 pkgconfig/gstreamer-vaapi-glx.pc.in
675     pkgconfig/gstreamer-vaapi-wayland-$GST_API_VERSION.pc:\
676 pkgconfig/gstreamer-vaapi-wayland.pc.in
677     pkgconfig/gstreamer-vaapi-x11-$GST_API_VERSION.pc:\
678 pkgconfig/gstreamer-vaapi-x11.pc.in
679     tests/Makefile
680 ])
681 AC_OUTPUT
682
683 dnl Print summary
684 yesno() {
685     test $1 -eq 1 && echo yes || echo no
686 }
687
688 VIDEO_OUTPUTS=""
689 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
690 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
691 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
692 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
693
694 echo
695 echo $PACKAGE configuration summary:
696 echo
697 echo GStreamer API version ............ : $GST_API_VERSION
698 echo VA-API version ................... : $VA_VERSION_STR
699 echo Video outputs .................... : $VIDEO_OUTPUTS
700 echo