libs: check that private headers remain private.
[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], [8])
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 dnl Initialize libtool
99 LT_PREREQ([2.2])
100 LT_INIT
101
102 AC_ARG_ENABLE(builtin_codecparsers,
103     AS_HELP_STRING([--enable-builtin-codecparsers],
104                    [enable built-in codecparsers @<:@default=yes@:>@]),
105     [], [enable_builtin_codecparsers="yes"])
106
107 AC_ARG_ENABLE([encoders],
108     AS_HELP_STRING([--enable-encoders],
109                    [enable video encoders @<:@default=yes@:>@]),
110     [], [enable_encoders="yes"])
111
112 AC_ARG_ENABLE(drm,
113     AS_HELP_STRING([--enable-drm],
114                    [enable DRM backend @<:@default=yes@:>@]),
115     [], [enable_drm="yes"])
116
117 AC_ARG_ENABLE(x11,
118     AS_HELP_STRING([--enable-x11],
119                    [enable X11 output @<:@default=yes@:>@]),
120     [], [enable_x11="yes"])
121
122 AC_ARG_ENABLE(glx,
123     AS_HELP_STRING([--enable-glx],
124                    [enable OpenGL/X11 output @<:@default=yes@:>@]),
125     [], [enable_glx="yes"])
126
127 AC_ARG_ENABLE(wayland,
128     AC_HELP_STRING([--enable-wayland],
129                    [enable Wayland output @<:@default=yes@:>@]),
130     [], [enable_wayland="yes"])
131
132 AC_ARG_WITH([gstreamer-api],
133     AC_HELP_STRING([--with-gstreamer-api=VERSION],
134                    [build against the specified GStreamer API version
135                     @<:@default=gst_api_version@:>@]),
136     [GST_API_VERSION="$with_gstreamer_api"], [GST_API_VERSION=gst_api_version])
137
138 dnl Check for basic libraries
139 AC_CHECK_LIB(m, tan)
140
141 dnl Check for Gtk doc
142 GTKDOC_VERSION=gtkdoc_version
143 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
144 m4_ifdef([GTK_DOC_CHECK], [
145 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
146 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
147 AC_SUBST(GTKDOC_VERSION)
148
149 dnl Check for GLib
150 GLIB_VERSION_REQUIRED=glib_version
151 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
152 AC_SUBST(GLIB_VERSION_REQUIRED)
153
154 dnl Check to see if dlopen is in default libraries (like Solaris, which
155 dnl has it in libc), or if libdl is needed to get it.
156 AC_CHECK_FUNC([dlopen], [], [
157     AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
158 AC_SUBST([DLOPEN_LIBS])
159
160 dnl ---------------------------------------------------------------------------
161 dnl -- GStreamer                                                             --
162 dnl ---------------------------------------------------------------------------
163
164 dnl If GStreamer API version is to be autodetected, then always try
165 dnl with the latest version first
166 AC_MSG_CHECKING([for GStreamer API version])
167 if test "$GST_API_VERSION" = "autodetect"; then
168     gst_pkg_versions="1.0 0.10"
169 else
170     AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
171         [gst_pkg_versions="0.10"], [gst_pkg_versions="1.0"],
172         dnl GStreamer 1.2.x APIs don't have their own namespace
173         [gst_pkg_versions="1.0"])
174 fi
175 for gst_pkg_version in ${gst_pkg_versions}; do
176     if $PKG_CONFIG --exists "gstreamer-$gst_pkg_version"; then
177         gst_version=`$PKG_CONFIG --modversion "gstreamer-$gst_pkg_version"`
178         gst_major_version=`echo "$gst_version" | cut -d'.' -f1`
179         gst_minor_version=`echo "$gst_version" | cut -d'.' -f2`
180         GST_API_VERSION="${gst_major_version}.${gst_minor_version}"
181         GST_PKG_VERSION="$gst_pkg_version"
182         break
183     fi
184 done
185 if test -z "$GST_PKG_VERSION"; then
186     AC_MSG_ERROR([version $GST_API_VERSION not found])
187 fi
188 AC_MSG_RESULT([$GST_API_VERSION])
189
190 dnl Versions for GStreamer and plugins-base
191 case $GST_API_VERSION in
192 0.10)
193     GST_VERSION_REQUIRED=gst0_version
194     GST_PLUGINS_BASE_VERSION_REQUIRED=gst0_plugins_base_version
195     GST_PLUGINS_BAD_VERSION_REQUIRED=gst0_plugins_bad_version
196     ;;
197 1.0)
198     GST_VERSION_REQUIRED=gst1_version
199     GST_PLUGINS_BASE_VERSION_REQUIRED=gst1_plugins_base_version
200     GST_PLUGINS_BAD_VERSION_REQUIRED=gst1_plugins_bad_version
201     ;;
202 1.2)
203     GST_VERSION_REQUIRED=gst12_version
204     GST_PLUGINS_BASE_VERSION_REQUIRED=gst12_plugins_base_version
205     GST_PLUGINS_BAD_VERSION_REQUIRED=gst12_plugins_bad_version
206     ;;
207 1.3)
208     GST_VERSION_REQUIRED=gst14_version
209     GST_PLUGINS_BASE_VERSION_REQUIRED=gst14_plugins_base_version
210     GST_PLUGINS_BAD_VERSION_REQUIRED=gst14_plugins_bad_version
211     ;;
212 *)
213     AC_MSG_ERROR([unsupported GStreamer API version $GST_API_VERSION])
214     ;;
215 esac
216 AC_SUBST(GST_API_VERSION)
217 AC_SUBST(GST_VERSION_REQUIRED)
218 AC_SUBST(GST_PLUGINS_BASE_VERSION_REQUIRED)
219 AC_SUBST(GST_PLUGINS_BAD_VERSION_REQUIRED)
220
221 USE_GST_API_0_10="no"
222 USE_GST_API_1_0p="no"
223 USE_GST_API_1_2p="no"
224 AS_VERSION_COMPARE([$GST_API_VERSION], [0.10],
225     [], [USE_GST_API_0_10="yes"], [])
226 AS_VERSION_COMPARE([$GST_API_VERSION], [1.0],
227     [], [USE_GST_API_1_0p="yes"], [USE_GST_API_1_0p="yes"])
228 AS_VERSION_COMPARE([$GST_API_VERSION], [1.2],
229     [], [USE_GST_API_1_2p="yes"], [USE_GST_API_1_2p="yes"])
230 AM_CONDITIONAL([USE_GST_API_0_10], [test "$USE_GST_API_0_10" = "yes"])
231 AM_CONDITIONAL([USE_GST_API_1_0p], [test "$USE_GST_API_1_0p" = "yes"])
232 AM_CONDITIONAL([USE_GST_API_1_2p], [test "$USE_GST_API_1_2p" = "yes"])
233
234 dnl GStreamer 1.2.x APIs don't have their own namespace
235 GST_PKG_VERSION="$GST_API_VERSION"
236 if test "$USE_GST_API_1_2p" = "yes"; then
237     GST_PKG_VERSION="1.0"
238 fi
239 AC_SUBST([GST_PKG_VERSION])
240
241 dnl GStreamer Core
242 PKG_CHECK_MODULES([GST],
243     [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
244 PKG_CHECK_MODULES([GST_BASE],
245     [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
246
247 AC_CACHE_CHECK([for GstBaseSink::query hook], ac_cv_have_gst_base_sink_query, [
248     saved_CPPFLAGS="$CPPFLAGS"
249     CPPFLAGS="$CPPFLAGS $GST_BASE_CFLAGS"
250     saved_LIBS="$LIBS"
251     LIBS="$LIBS $GST_BASE_LIBS"
252     AC_COMPILE_IFELSE(
253         [AC_LANG_PROGRAM(
254             [[#include <gst/base/gstbasesink.h>]],
255             [[GstBaseSinkClass klass; klass.query = NULL;]])],
256         [ac_cv_have_gst_base_sink_query="yes"],
257         [ac_cv_have_gst_base_sink_query="no"]
258     )
259     CPPFLAGS="$saved_CPPFLAGS"
260     LIBS="$saved_LIBS"
261 ])
262 if test "$ac_cv_have_gst_base_sink_query" != "yes"; then
263     AC_MSG_ERROR([GstBaseSink does not contain the 'query' vfunc])
264 fi
265
266 dnl GStreamer -base plugins
267 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
268     [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
269 if test "$GST_API_VERSION" = "0.10"; then
270 PKG_CHECK_MODULES([GST_INTERFACES],
271     [gstreamer-interfaces-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
272 fi
273
274 dnl ... GstVideoOverlayComposition (gstreamer-video)
275 PKG_CHECK_MODULES([GST_VIDEO],
276     [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
277
278 AC_CACHE_CHECK([for GstVideoOverlayComposition],
279     ac_cv_have_gst_video_overlay_composition, [
280     saved_CPPFLAGS="$CPPFLAGS"
281     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
282     saved_LIBS="$LIBS"
283     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
284     AC_COMPILE_IFELSE(
285         [AC_LANG_PROGRAM(
286             [[#include <gst/video/video-overlay-composition.h>]],
287             [[GstVideoOverlayComposition *c;
288               c = gst_video_overlay_composition_new(0);]])],
289         [ac_cv_have_gst_video_overlay_composition="yes"],
290         [ac_cv_have_gst_video_overlay_composition="no"]
291     )
292     CPPFLAGS="$saved_CPPFLAGS"
293     LIBS="$saved_LIBS"
294 ])
295 if test "$ac_cv_have_gst_video_overlay_composition" != "yes"; then
296     AC_MSG_ERROR([GstVideoOverlayComposition is not available])
297 fi
298
299 AC_CACHE_CHECK([... with advanced format flags],
300     ac_cv_have_gst_video_overlay_hwcaps, [
301     saved_CPPFLAGS="$CPPFLAGS"
302     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_VIDEO_CFLAGS"
303     saved_LIBS="$LIBS"
304     LIBS="$LIBS $GST_LIBS $GST_VIDEO_LIBS"
305     AC_COMPILE_IFELSE(
306         [AC_LANG_PROGRAM(
307             [[#include <gst/video/video-overlay-composition.h>]],
308             [[GstVideoOverlayRectangle *rect;
309               const guint w = 64, h = 64;
310               guint flags = (
311                   GST_VIDEO_OVERLAY_FORMAT_FLAG_PREMULTIPLIED_ALPHA|
312                   GST_VIDEO_OVERLAY_FORMAT_FLAG_GLOBAL_ALPHA);
313               rect = gst_video_overlay_rectangle_new_argb(NULL, w, h, w * 4,
314                   0, 0, w, h, flags);
315               gst_video_overlay_rectangle_set_global_alpha(rect, 0.5f);]])],
316         [ac_cv_have_gst_video_overlay_hwcaps="yes"],
317         [ac_cv_have_gst_video_overlay_hwcaps="no"]
318     )
319     CPPFLAGS="$saved_CPPFLAGS"
320     LIBS="$saved_LIBS"
321 ])
322 if test "$ac_cv_have_gst_video_overlay_hwcaps" = "yes"; then
323     AC_DEFINE_UNQUOTED([HAVE_GST_VIDEO_OVERLAY_HWCAPS], 1,
324         [Defined to 1 if GstVideoOverlayComposition API supports HW hints.])
325 fi
326
327 dnl GStreamer -bad plugins (deprecated in GStreamer v1.2)
328 if test "$USE_GST_API_1_2p" != "yes"; then
329 PKG_CHECK_MODULES([GST_BASEVIDEO],
330     [gstreamer-basevideo-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
331 fi
332
333 dnl ... bitstream parsers
334 if test "$enable_builtin_codecparsers" = "yes"; then
335     ac_cv_have_gst_mpeg2_parser="no"
336     ac_cv_have_gst_h264_parser="no"
337     ac_cv_have_gst_jpeg_parser="no"
338 else
339 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
340     [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
341 fi
342
343 dnl ... MPEG-2 parser, with the required extensions
344 AC_CACHE_CHECK([for MPEG-2 parser],
345     ac_cv_have_gst_mpeg2_parser, [
346     saved_CPPFLAGS="$CPPFLAGS"
347     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
348     saved_LIBS="$LIBS"
349     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
350     AC_COMPILE_IFELSE(
351         [AC_LANG_PROGRAM(
352             [[#include <gst/codecparsers/gstmpegvideoparser.h>]],
353             [[GstMpegVideoSequenceHdr seq_hdr;
354               GstMpegVideoSequenceExt seq_ext;
355               GstMpegVideoSequenceDisplayExt seq_dpy;
356               GstMpegVideoSliceHdr slice_hdr;
357               GstMpegVideoPacket packet;
358               gst_mpeg_video_packet_parse_slice_header(&packet, &slice_hdr,
359                   &seq_hdr, NULL);
360               gst_mpeg_video_finalise_mpeg2_sequence_header(&seq_hdr,
361                   &seq_ext, &seq_dpy);]])],
362         [ac_cv_have_gst_mpeg2_parser="yes"],
363         [ac_cv_have_gst_mpeg2_parser="no"]
364     )
365     CPPFLAGS="$saved_CPPFLAGS"
366     LIBS="$saved_LIBS"
367 ])
368 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_MPEG2],
369     [test "$ac_cv_have_gst_mpeg2_parser" != "yes"])
370
371 dnl ... H.264 parser, with the required extensions
372 AC_CACHE_CHECK([for H.264 parser],
373     ac_cv_have_gst_h264_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/gsth264parser.h>]],
381             [[GstH264SliceHdr slice_hdr;
382               GstH264VUIParams vui_params;
383               GstH264Profile profile = GST_H264_PROFILE_HIGH;
384               slice_hdr.n_emulation_prevention_bytes = 0;
385               vui_params.par_n = 0;
386               vui_params.par_d = 0;]])],
387         [ac_cv_have_gst_h264_parser="yes"],
388         [ac_cv_have_gst_h264_parser="no"]
389     )
390     CPPFLAGS="$saved_CPPFLAGS"
391     LIBS="$saved_LIBS"
392 ])
393 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_H264],
394     [test "$ac_cv_have_gst_h264_parser" != "yes"])
395
396 dnl ... JPEG parser, not upstream yet
397 AC_CACHE_CHECK([for JPEG parser],
398     ac_cv_have_gst_jpeg_parser, [
399     saved_CPPFLAGS="$CPPFLAGS"
400     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
401     saved_LIBS="$LIBS"
402     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
403     AC_COMPILE_IFELSE(
404         [AC_LANG_PROGRAM(
405             [[#include <gst/codecparsers/gstjpegparser.h>]],
406             [[GstJpegImage jpeg_image;]])],
407         [ac_cv_have_gst_jpeg_parser="yes"],
408         [ac_cv_have_gst_jpeg_parser="no"]
409     )
410     CPPFLAGS="$saved_CPPFLAGS"
411     LIBS="$saved_LIBS"
412 ])
413 AM_CONDITIONAL([USE_LOCAL_CODEC_PARSERS_JPEG],
414     [test "$ac_cv_have_gst_jpeg_parser" != "yes"])
415
416 case $GST_API_VERSION in
417 0.10)   lt_bias=gst0_vaapi_lt_current_bias;;
418 1.0)    lt_bias=gst1_vaapi_lt_current_bias;;
419 1.2)    lt_bias=gst2_vaapi_lt_current_bias;;
420 1.3)    lt_bias=gst4_vaapi_lt_current_bias;;
421 esac
422 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - "$lt_bias"`
423 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
424
425 dnl GST_VAAPI_LT_LDFLAGS:
426 GST_VAAPI_LT_CURRENT="$GST_VAAPI_MAJOR_VERSION"
427 GST_VAAPI_LT_REV=gst_vaapi_lt_revision
428 GST_VAAPI_LT_AGE=gst_vaapi_lt_age
429 GST_VAAPI_LT_VERSION="$GST_VAAPI_LT_CURRENT:$GST_VAAPI_LT_REV:$GST_VAAPI_LT_AGE"
430 GST_VAAPI_LT_LDFLAGS="-version-info $GST_VAAPI_LT_VERSION"
431 AC_SUBST(GST_VAAPI_LT_VERSION)
432 AC_SUBST(GST_VAAPI_LT_LDFLAGS)
433
434 dnl GST_ALL_LDFLAGS:
435 dnl LDFLAGS really should only contain flags, not libs - they get added before
436 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
437 GST_ALL_LDFLAGS="-no-undefined"
438 AC_SUBST(GST_ALL_LDFLAGS)
439
440 dnl GST_PLUGIN_LDFLAGS:
441 dnl this really should only contain flags, not libs - they get added before
442 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
443 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
444 AC_SUBST(GST_PLUGIN_LDFLAGS)
445
446 dnl Check for the GStreamer plugins directory
447 AC_ARG_VAR([GST_PLUGIN_PATH], [installation path for gstreamer-vaapi plugin elements for GStreamer 0.10])
448 AC_ARG_VAR([GST_PLUGIN_PATH_1_0], [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
449 AC_MSG_CHECKING([for GStreamer plugins directory])
450 case $GST_PKG_VERSION in
451 0.10)   _gst_plugin_path="$GST_PLUGIN_PATH";;
452 1.0)    _gst_plugin_path="$GST_PLUGIN_PATH_1_0";;
453 esac
454 if test -d "$_gst_plugin_path"; then
455     GST_PLUGINS_DIR="$_gst_plugin_path"
456 else
457     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
458     if test -z "$GST_PLUGINS_DIR"; then
459         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
460     fi
461 fi
462 AC_MSG_RESULT([$GST_PLUGINS_DIR])
463 plugindir="$GST_PLUGINS_DIR"
464 AC_SUBST(plugindir)
465
466 dnl ---------------------------------------------------------------------------
467 dnl -- Renderers                                                             --
468 dnl ---------------------------------------------------------------------------
469
470 dnl Check for DRM/libudev
471 USE_DRM=0
472 if test "$enable_drm" = "yes"; then
473     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
474     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
475
476     if test $USE_DRM -eq 1; then
477         saved_CPPFLAGS="$CPPFLAGS"
478         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
479         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
480         CPPFLAGS="$saved_CPPFLAGS"
481     fi
482 fi
483
484 dnl Check for X11
485 USE_X11=0
486 if test "$enable_x11" = "yes"; then
487     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
488     if test $USE_X11 -eq 1; then
489         saved_CPPFLAGS="$CPPFLAGS"
490         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
491         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
492         CPPFLAGS="$saved_CPPFLAGS"
493     fi
494 fi
495
496 dnl Check for XRandR
497 HAVE_XRANDR=0
498 if test $USE_X11 -eq 1; then
499     HAVE_XRANDR=1
500     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
501     if test $HAVE_XRANDR -eq 1; then
502         saved_CPPFLAGS="$CPPFLAGS"
503         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
504         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
505         CPPFLAGS="$saved_CPPFLAGS"
506     fi
507 fi
508 if test $HAVE_XRANDR -eq 1; then
509     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
510         [Defined to 1 if the XRandR extension exists.])
511 fi
512
513 dnl Check for XRender
514 HAVE_XRENDER=0
515 if test $USE_X11 -eq 1; then
516     HAVE_XRENDER=1
517     PKG_CHECK_MODULES([XRENDER], [xrender], [:], [HAVE_XRENDER=0])
518     if test $HAVE_XRENDER -eq 1; then
519         saved_CPPFLAGS="$CPPFLAGS"
520         CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
521         AC_CHECK_HEADERS([X11/extensions/Xrender.h], [:], [HAVE_XRENDER=0])
522         CPPFLAGS="$saved_CPPFLAGS"
523     fi
524 fi
525 if test $HAVE_XRENDER -eq 1; then
526     AC_DEFINE_UNQUOTED([HAVE_XRENDER], [1],
527         [Defined to 1 if the XRender extension exists.])
528 fi
529
530 dnl OpenGL
531 enable_opengl="no"
532 if test "$enable_glx" = "yes"; then
533     enable_opengl="yes"
534 fi
535
536 HAVE_GL=0
537 if test "$enable_opengl" = "yes"; then
538     HAVE_GL=1
539     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
540     saved_CPPFLAGS="$CPPFLAGS"
541     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
542     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
543 #ifdef HAVE_GL_GL_H
544 # include <GL/gl.h>
545 #endif
546     ])
547     CPPFLAGS="$saved_CPPFLAGS"
548 fi
549
550 dnl ... GLX
551 USE_GLX=0
552 if test "$enable_glx" = "yes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
553     USE_GLX=1
554     saved_CPPFLAGS="$CPPFLAGS"
555     saved_LIBS="$LIBS"
556     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
557     LIBS="$LIBS $GL_LIBS"
558     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
559 #ifdef HAVE_GL_GL_H
560 # include <GL/gl.h>
561 #endif
562     ])
563     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
564     CPPFLAGS="$saved_CPPFLAGS"
565     LIBS="$saved_LIBS"
566 fi
567
568 dnl Check for Wayland
569 USE_WAYLAND=0
570 if test "$enable_wayland" = "yes"; then
571     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
572         [USE_WAYLAND=1], [USE_WAYLAND=0])
573
574     if test $USE_WAYLAND -eq 1; then
575         saved_CPPFLAGS="$CPPFLAGS"
576         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
577         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
578         CPPFLAGS="$saved_CPPFLAGS"
579     fi
580 fi
581
582 dnl ---------------------------------------------------------------------------
583 dnl -- VA-API                                                                --
584 dnl ---------------------------------------------------------------------------
585
586 dnl Core API
587 LIBVA_PKGNAME="libva"
588 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME >= va_api_version])
589 AC_SUBST(LIBVA_PKGNAME)
590
591 VA_VERSION=`$PKG_CONFIG --modversion libva`
592 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
593 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
594 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
595 VA_VERSION_STR="$VA_VERSION"
596
597 dnl VA/DRM API
598 HAVE_VA_DRM=0
599 if test $USE_DRM -eq 1; then
600     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
601         [HAVE_VA_DRM=1], [USE_DRM=0])
602
603     if test $HAVE_VA_DRM -eq 1; then
604         saved_CPPFLAGS="$CPPFLAGS"
605         CPPFLAGS="$LIBVA_DRM_CFLAGS"
606         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
607         CPPFLAGS="$saved_CPPFLAGS"
608     fi
609 fi
610
611 dnl VA/X11 API
612 HAVE_VA_X11=0
613 LIBVA_X11_PKGNAME="libva-x11"
614 if test $USE_X11 -eq 1; then
615     PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME >= va_api_x11_version],
616         [HAVE_VA_X11=1], [USE_X11=0])
617 fi
618 AC_SUBST(LIBVA_X11_PKGNAME)
619
620 dnl VA/GLX API
621 HAVE_VA_GLX=0
622 LIBVA_GLX_PKGNAME="libva-glx"
623 if test $USE_GLX -eq 1; then
624     PKG_CHECK_MODULES(LIBVA_GLX, [$LIBVA_GLX_PKGNAME >= va_api_glx_version],
625         [HAVE_VA_GLX=1], [LIBVA_GLX_PKGNAME="$LIBVA_X11_PKGNAME"])
626
627     if test $HAVE_VA_GLX -eq 1; then
628         saved_CPPFLAGS="$CPPFLAGS"
629         CPPFLAGS="$LIBVA_GLX_CFLAGS"
630         AC_CHECK_HEADERS([va/va_glx.h], [:], [HAVE_VA_GLX=0])
631         CPPFLAGS="$saved_CPPFLAGS"
632     fi
633 fi
634 AC_SUBST(LIBVA_GLX_PKGNAME)
635
636 dnl Check for va_dec_jpeg.h header
637 saved_CPPFLAGS="$CPPFLAGS"
638 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
639 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [], [#include <va/va.h>])
640 CPPFLAGS="$saved_CPPFLAGS"
641
642 dnl Check for JPEG decoding API (0.32.1+)
643 USE_JPEG_DECODER=0
644 AC_CACHE_CHECK([for JPEG decoding API],
645     ac_cv_have_jpeg_decoding_api, [
646     saved_CPPFLAGS="$CPPFLAGS"
647     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
648     saved_LIBS="$LIBS"
649     LIBS="$LIBS $LIBVA_LIBS"
650     AC_COMPILE_IFELSE(
651         [AC_LANG_PROGRAM(
652             [[#include <va/va.h>
653               #ifdef HAVE_VA_VA_DEC_JPEG_H
654               #include <va/va_dec_jpeg.h>
655               #endif
656             ]],
657             [[VAPictureParameterBufferJPEGBaseline pic_param;
658               VASliceParameterBufferJPEGBaseline slice_param;
659               VAHuffmanTableBufferJPEGBaseline huffman_table;
660               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
661         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
662         [ac_cv_have_jpeg_decoding_api="no"]
663     )
664     CPPFLAGS="$saved_CPPFLAGS"
665     LIBS="$saved_LIBS"
666 ])
667
668 dnl Check for vpp (video post-processing) support
669 USE_VA_VPP=0
670 AC_CACHE_CHECK([for video post-postprocessing API],
671     ac_cv_have_va_vpp_api, [
672     saved_CPPFLAGS="$CPPFLAGS"
673     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
674     saved_LIBS="$LIBS"
675     LIBS="$LIBS $LIBVA_LIBS"
676     AC_COMPILE_IFELSE(
677         [AC_LANG_PROGRAM(
678             [[#include <va/va.h>
679               #include <va/va_vpp.h>]],
680             [[VADisplay va_dpy;
681               VAContextID vpp_ctx;
682               VAProcFilterType filters[VAProcFilterCount];
683               unsigned int num_filters = VAProcFilterCount;
684               vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
685               ]])],
686         [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
687         [ac_cv_have_va_vpp_api="no"]
688     )
689     CPPFLAGS="$saved_CPPFLAGS"
690     LIBS="$saved_LIBS"
691 ])
692
693 dnl Check for encoding support
694 USE_ENCODERS=0
695 if test "$enable_encoders" = "yes"; then
696     PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
697         [HAVE_VA_ENC=1], [HAVE_VA_ENC=0])
698
699     if test $HAVE_VA_ENC -eq 1; then
700         saved_CPPFLAGS="$CPPFLAGS"
701         CPPFLAGS="$LIBVA_CFLAGS"
702         AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h],
703             [USE_ENCODERS=1], [HAVE_VA_ENC=0 USE_ENCODERS=0],
704             [#include <va/va.h>
705             ])
706         CPPFLAGS="$saved_CPPFLAGS"
707     fi
708 fi
709
710 dnl VA/Wayland API
711 if test "$enable_wayland" = "yes"; then
712     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
713         [:], [USE_WAYLAND=0])
714 fi
715
716 dnl ---------------------------------------------------------------------------
717 dnl -- Generate files and summary                                            --
718 dnl ---------------------------------------------------------------------------
719
720 case ":$USE_X11:$USE_GLX:$USE_WAYLAND:$USE_DRM:" in
721 *:1:*)
722     ;;
723 *)
724     AC_MSG_ERROR([No renderer is enabled])
725     ;;
726 esac
727
728 AC_DEFINE_UNQUOTED([USE_ENCODERS], $USE_ENCODERS,
729     [Defined to 1 if video encoders are used])
730 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
731
732 AC_DEFINE_UNQUOTED(USE_VA_VPP, $USE_VA_VPP,
733     [Defined to 1 if video post-processing is used])
734 AM_CONDITIONAL(USE_VA_VPP, test $USE_VA_VPP -eq 1)
735
736 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
737     [Defined to 1 if JPEG decoder is used])
738 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
739
740 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
741     [Defined to 1 if DRM is enabled])
742 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
743
744 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
745     [Defined to 1 if X11 is enabled])
746 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
747
748 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
749     [Defined to 1 if GLX is enabled])
750 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
751
752 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
753     [Defined to 1 if WAYLAND is enabled])
754 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
755
756 pkgconfigdir=${libdir}/pkgconfig
757 AC_SUBST(pkgconfigdir)
758
759 AC_CONFIG_FILES([
760     Makefile
761     debian.upstream/Makefile
762     debian.upstream/changelog
763     debian.upstream/control
764     debian.upstream/gstreamer$GST_API_VERSION-vaapi-doc.install:\
765 debian.upstream/gstreamer-vaapi-doc.install.in
766     debian.upstream/gstreamer$GST_API_VERSION-vaapi.install:\
767 debian.upstream/gstreamer-vaapi.install.in
768     debian.upstream/libgstvaapi$GST_API_VERSION-dev.install:\
769 debian.upstream/libgstvaapi-dev.install.in
770     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
771 debian.upstream/libgstvaapi.install.in
772     debian.upstream/libgstvaapi-drm-$GST_VAAPI_MAJOR_VERSION.install:\
773 debian.upstream/libgstvaapi-drm.install.in
774     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
775 debian.upstream/libgstvaapi-glx.install.in
776     debian.upstream/libgstvaapi-wayland-$GST_VAAPI_MAJOR_VERSION.install:\
777 debian.upstream/libgstvaapi-wayland.install.in
778     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
779 debian.upstream/libgstvaapi-x11.install.in
780     docs/Makefile
781     docs/reference/Makefile
782     docs/reference/libs/Makefile
783     docs/reference/libs/libs-docs.xml
784     docs/reference/plugins/Makefile
785     docs/reference/plugins/plugins-docs.xml
786     ext/Makefile
787     gst-libs/Makefile
788     gst-libs/gst/Makefile
789     gst-libs/gst/base/Makefile
790     gst-libs/gst/codecparsers/Makefile
791     gst-libs/gst/vaapi/Makefile
792     gst-libs/gst/video/Makefile
793     gst/Makefile
794     gst/vaapi/Makefile
795     pkgconfig/Makefile
796     pkgconfig/gstreamer-vaapi-$GST_API_VERSION.pc:\
797 pkgconfig/gstreamer-vaapi.pc.in
798     pkgconfig/gstreamer-vaapi-drm-$GST_API_VERSION.pc:\
799 pkgconfig/gstreamer-vaapi-drm.pc.in
800     pkgconfig/gstreamer-vaapi-glx-$GST_API_VERSION.pc:\
801 pkgconfig/gstreamer-vaapi-glx.pc.in
802     pkgconfig/gstreamer-vaapi-wayland-$GST_API_VERSION.pc:\
803 pkgconfig/gstreamer-vaapi-wayland.pc.in
804     pkgconfig/gstreamer-vaapi-x11-$GST_API_VERSION.pc:\
805 pkgconfig/gstreamer-vaapi-x11.pc.in
806     tests/Makefile
807 ])
808 AC_OUTPUT
809
810 dnl Print summary
811 yesno() {
812     test $1 -eq 1 && echo yes || echo no
813 }
814
815 VIDEO_OUTPUTS=""
816 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
817 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
818 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
819 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
820
821 echo
822 echo $PACKAGE configuration summary:
823 echo
824 echo GStreamer API version ............ : $GST_API_VERSION
825 echo VA-API version ................... : $VA_VERSION_STR
826 echo Video encoding ................... : $(yesno $USE_ENCODERS)
827 echo Video outputs .................... : $VIDEO_OUTPUTS
828 echo