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