build: upgrade autotools version dependency
[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], [7])
4 m4_define([gst_vaapi_micro_version], [1])
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 # Configure defaults
13 m4_define([default_glapi],              [any])
14
15 # gstreamer-vaapi library (libtool) version number
16 m4_define([gst_vaapi_lt_current],       [7])
17 m4_define([gst_vaapi_lt_current_bias],  [7])
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.32])
23
24 # gmodule version number
25 m4_define([gmodule_version], [2.32])
26
27 # gstreamer version number
28 m4_define([gst_version],                [1.6.3])
29 m4_define([gst_plugins_base_version],   [1.6.3])
30 m4_define([gst_plugins_bad_version],    [1.6.3])
31
32 # Wayland minimum version number
33 m4_define([wayland_api_version], [1.0.2])
34
35 # VA-API minimum version number
36 m4_define([va_api_version],     [0.30.4])
37 m4_define([va_api_enc_version], [0.34.0])
38 m4_define([va_api_drm_version], [0.33.0])
39 m4_define([va_api_x11_version], [0.31.0])
40 m4_define([va_api_wld_version], [0.33.0])
41
42 # gtk-doc version number
43 # XXX: introspection annotations require gtk-doc >= 1.12
44 m4_define([gtkdoc_version], [1.12])
45
46 AC_PREREQ([2.69])
47 AC_INIT([gst_vaapi], [gst_vaapi_version],
48     [gwenole.beauchesne@intel.com, sreerenj.balachandran@intel.com],
49     [gstreamer-vaapi])
50
51 AC_CONFIG_HEADERS([config.h])
52 AC_CONFIG_SRCDIR([Makefile.am])
53 AC_CONFIG_MACRO_DIR([m4])
54 AC_CONFIG_AUX_DIR([build-aux])
55
56 AC_CANONICAL_TARGET
57
58 AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
59
60 dnl Use pretty build output
61 AM_SILENT_RULES([yes])
62
63 dnl Check for tools
64 AC_PROG_CC
65 AM_PROG_CC_C_O
66
67 AC_ARG_VAR([GIT], [Path to git program, if any])
68 AC_PATH_PROG([GIT], [git])
69 AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
70
71 dnl Initialize libtool
72 LT_PREREQ([2.2.6])
73 LT_INIT
74
75 AC_ARG_ENABLE([encoders],
76     AS_HELP_STRING([--enable-encoders],
77                    [enable video encoders @<:@default=yes@:>@]),
78     [], [enable_encoders="yes"])
79
80 AC_ARG_ENABLE(drm,
81     AS_HELP_STRING([--enable-drm],
82                    [enable DRM backend @<:@default=yes@:>@]),
83     [], [enable_drm="yes"])
84
85 AC_ARG_ENABLE(x11,
86     AS_HELP_STRING([--enable-x11],
87                    [enable X11 output @<:@default=yes@:>@]),
88     [], [enable_x11="yes"])
89
90 AC_ARG_ENABLE(glx,
91     AS_HELP_STRING([--enable-glx],
92                    [enable OpenGL/X11 output @<:@default=yes@:>@]),
93     [], [enable_glx="yes"])
94
95 AC_ARG_ENABLE(wayland,
96     AC_HELP_STRING([--enable-wayland],
97                    [enable Wayland output @<:@default=yes@:>@]),
98     [], [enable_wayland="yes"])
99
100 AC_ARG_ENABLE([egl],
101     AS_HELP_STRING([--enable-egl],
102         [enable EGL output @<:@default=yes@:>@]),
103     [], [enable_egl="yes"])
104
105 AC_ARG_WITH([glapi],
106     AS_HELP_STRING([--with-glapi=APIs],
107         [build with the specified OpenGL APIs @<:@default=default_glapi@:>@]),
108     [GLAPI="$with_glapi"], [GLAPI=default_glapi])
109
110 dnl Check for basic libraries
111 AC_CHECK_LIB(m, tan)
112
113 dnl Check for Gtk doc
114 GTKDOC_VERSION=gtkdoc_version
115 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
116 m4_ifdef([GTK_DOC_CHECK], [
117 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
118 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
119
120 dnl Check for GLib
121 GLIB_VERSION_REQUIRED=glib_version
122 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
123
124 dnl Check to see if dlopen is in default libraries (like Solaris, which
125 dnl has it in libc), or if libdl is needed to get it.
126 AC_CHECK_FUNC([dlopen], [], [
127     AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
128 AC_SUBST([DLOPEN_LIBS])
129
130 dnl ---------------------------------------------------------------------------
131 dnl -- GStreamer                                                             --
132 dnl ---------------------------------------------------------------------------
133 GST_PKG_VERSION="1.0"
134 AC_SUBST([GST_PKG_VERSION])
135 AC_DEFINE_UNQUOTED([GST_PKG_VERSION_S], ["$GST_PKG_VERSION"],
136     [Defined to the string representation of GStreamer API version])
137
138 dnl Versions for GStreamer and plugins-base
139 GST_VERSION_REQUIRED=gst_version
140 GST_PLUGINS_BASE_VERSION_REQUIRED=gst_plugins_base_version
141 GST_PLUGINS_BAD_VERSION_REQUIRED=gst_plugins_bad_version
142
143 dnl GStreamer Core
144 PKG_CHECK_MODULES([GST],
145     [gstreamer-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
146
147 AC_MSG_CHECKING([for GStreamer API version])
148 gst_api_version=`$PKG_CONFIG --modversion "gstreamer-$GST_PKG_VERSION"`
149 gst_major_version=`echo "$gst_api_version" | cut -d'.' -f1`
150 gst_minor_version=`echo "$gst_api_version" | cut -d'.' -f2`
151 GST_API_VERSION="${gst_major_version}.${gst_minor_version}"
152 AC_MSG_RESULT([$GST_API_VERSION])
153 AC_DEFINE_UNQUOTED([GST_API_VERSION_S], ["$GST_API_VERSION"],
154     [Defined to the string representation of GStreamer version])
155
156 PKG_CHECK_MODULES([GST_BASE],
157     [gstreamer-base-$GST_PKG_VERSION >= $GST_VERSION_REQUIRED])
158
159 dnl GStreamer -base plugins
160 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
161     [gstreamer-plugins-base-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
162
163 dnl ... gst_dmabuf_memory_get_fd (gstreamer-allocators)
164 PKG_CHECK_MODULES([GST_ALLOCATORS],
165     [gstreamer-allocators-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
166
167 dnl ... GstVideoOverlayComposition (gstreamer-video)
168 PKG_CHECK_MODULES([GST_VIDEO],
169     [gstreamer-video-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
170
171 dnl ... GStreamer base utils (gstreamer-pbutils)
172 PKG_CHECK_MODULES([GST_PBUTILS],
173     [gstreamer-pbutils-$GST_PKG_VERSION >= $GST_PLUGINS_BASE_VERSION_REQUIRED])
174
175 dnl ... bitstream parsers
176 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
177     [gstreamer-codecparsers-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED])
178
179 dnl ... VP9 parser, with required extensions
180 HAVE_GST_VP9_PARSER=0
181 AC_CACHE_CHECK([for VP9 parser],
182     ac_cv_have_gst_vp9_parser, [
183     saved_CPPFLAGS="$CPPFLAGS"
184     CPPFLAGS="$CPPFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
185     saved_LIBS="$LIBS"
186     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
187     AC_COMPILE_IFELSE(
188         [AC_LANG_PROGRAM(
189             [[#include <gst/codecparsers/gstvp9parser.h>]],
190             [[GstVp9FrameHdr frame_hdr;]])],
191         [ac_cv_have_gst_vp9_parser="yes" HAVE_GST_VP9_PARSER=1],
192         [ac_cv_have_gst_vp9_parser="no"]
193     )
194     CPPFLAGS="$saved_CPPFLAGS"
195     LIBS="$saved_LIBS"
196 ])
197
198 dnl ... opengl helper libraries
199 HAVE_GSTGL=0
200 if test "x$enable_glx" = "xyes" -o "x$enable_egl" = "xyes"; then
201     PKG_CHECK_MODULES([GST_GL],
202         [gstreamer-gl-$GST_PKG_VERSION >= $GST_PLUGINS_BAD_VERSION_REQUIRED],
203         [HAVE_GSTGL=1], [HAVE_GSTGL=0])
204 fi
205
206 if test $HAVE_GSTGL -eq 1; then
207     AC_CACHE_CHECK([for GStreamer OpenGL helper libraries],
208         [ac_cv_have_gst_gl_helpers], [
209         saved_CPPFLAGS="$CPPFLAGS"
210         CPPFLAGS="$CPPFLAGS $GST_GL_CFLAGS $GST_VIDEO_CFLAGS"
211         saved_LIBS="$LIBS"
212         LIBS="$saved_LIBS"
213         AC_CHECK_HEADERS([gst/gl/gl.h], [:], [HAVE_GSTGL=0])
214         AC_COMPILE_IFELSE(
215             [AC_LANG_PROGRAM(
216                 [[#include <gst/gl/gl.h>]],
217                 [[GstGLContext gl_context;]])],
218             [ac_cv_have_gst_gl_helpers="yes"],
219             [ac_cv_have_gst_gl_helpers="no" HAVE_GSTGL=0]
220         )
221         CPPFLAGS="$saved_CPPFLAGS"
222         LIBS="$saved_LIBS"
223     ])
224 fi
225 AM_CONDITIONAL([USE_GST_GL_HELPERS], [test $HAVE_GSTGL -eq 1])
226
227 AC_DEFINE_UNQUOTED([USE_GST_GL_HELPERS], [$HAVE_GSTGL],
228     [Defined to 1 if GStreamer OpenGL helper libraries are available])
229
230 if test "x$enable_egl" = "xyes" -a $HAVE_GSTGL -ne 1; then
231     AC_MSG_WARN([GStreamer/GL helper libraries not found, disabling EGL support])
232     enable_egl="no"
233 fi
234
235 GST_VAAPI_MAJOR_VERSION=`expr gst_vaapi_lt_current - gst_vaapi_lt_current_bias`
236 AC_DEFINE_UNQUOTED([GST_VAAPI_MAJOR_VERSION_S], ["$GST_VAAPI_MAJOR_VERSION"],
237     [Defined to the string representation of gstreamer-vaapi major version])
238
239 dnl GST_ALL_LDFLAGS:
240 dnl LDFLAGS really should only contain flags, not libs - they get added before
241 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
242 GST_ALL_LDFLAGS="-no-undefined"
243 AC_SUBST(GST_ALL_LDFLAGS)
244
245 dnl GST_PLUGIN_LDFLAGS:
246 dnl this really should only contain flags, not libs - they get added before
247 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
248 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
249 AC_SUBST(GST_PLUGIN_LDFLAGS)
250
251 dnl Check for the GStreamer plugins directory
252 AC_ARG_VAR([GST_PLUGIN_PATH_1_0], [installation path for gstreamer-vaapi plugin elements for GStreamer 1.0])
253 AC_MSG_CHECKING([for GStreamer plugins directory])
254 if test -n "$GST_PLUGIN_PATH_1_0"; then
255     GST_PLUGINS_DIR="$GST_PLUGIN_PATH_1_0"
256 else
257     GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_PKG_VERSION --variable pluginsdir`
258     if test -z "$GST_PLUGINS_DIR"; then
259         GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_PKG_VERSION"
260     fi
261 fi
262 AC_MSG_RESULT([$GST_PLUGINS_DIR])
263 plugindir="$GST_PLUGINS_DIR"
264 AC_SUBST(plugindir)
265
266 dnl ---------------------------------------------------------------------------
267 dnl -- Renderers                                                             --
268 dnl ---------------------------------------------------------------------------
269
270 dnl Check for DRM/libudev
271 USE_DRM=0
272 if test "x$enable_drm" = "xyes"; then
273     PKG_CHECK_MODULES(DRM, [libdrm], [USE_DRM=1], [USE_DRM=0])
274     PKG_CHECK_MODULES(UDEV, [libudev], [:], [USE_DRM=0])
275
276     if test $USE_DRM -eq 1; then
277         saved_CPPFLAGS="$CPPFLAGS"
278         CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
279         AC_CHECK_HEADERS([drm_fourcc.h], [:], [USE_DRM=0])
280         CPPFLAGS="$saved_CPPFLAGS"
281     fi
282 fi
283
284 dnl Check for X11
285 USE_X11=0
286 if test "x$enable_x11" = "xyes"; then
287     PKG_CHECK_MODULES(X11, [x11], [USE_X11=1], [USE_X11=0])
288     if test $USE_X11 -eq 1; then
289         saved_CPPFLAGS="$CPPFLAGS"
290         CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
291         AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [:], [USE_X11=0])
292         CPPFLAGS="$saved_CPPFLAGS"
293     fi
294 fi
295
296 dnl Check for XKB library
297 HAVE_XKBLIB=0
298 if test $USE_X11 -eq 1; then
299     AC_CHECK_HEADERS([X11/XKBlib.h], [HAVE_XKBLIB=1], [:])
300 fi
301 if test $HAVE_XKBLIB -eq 1; then
302     AC_DEFINE_UNQUOTED([HAVE_XKBLIB], 1,
303         [Defined to 1 if the XKB extension exists.])
304 fi
305
306 dnl Check for XRandR
307 HAVE_XRANDR=0
308 if test $USE_X11 -eq 1; then
309     HAVE_XRANDR=1
310     PKG_CHECK_MODULES([XRANDR], [xrandr], [:], [HAVE_XRANDR=0])
311     if test $HAVE_XRANDR -eq 1; then
312         saved_CPPFLAGS="$CPPFLAGS"
313         CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
314         AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [:], [HAVE_XRANDR=0])
315         CPPFLAGS="$saved_CPPFLAGS"
316     fi
317 fi
318 if test $HAVE_XRANDR -eq 1; then
319     AC_DEFINE_UNQUOTED(HAVE_XRANDR, 1,
320         [Defined to 1 if the XRandR extension exists.])
321 fi
322
323 dnl Check for XRender
324 HAVE_XRENDER=0
325 if test $USE_X11 -eq 1; then
326     HAVE_XRENDER=1
327     PKG_CHECK_MODULES([XRENDER], [xrender], [:], [HAVE_XRENDER=0])
328     if test $HAVE_XRENDER -eq 1; then
329         saved_CPPFLAGS="$CPPFLAGS"
330         CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
331         AC_CHECK_HEADERS([X11/extensions/Xrender.h], [:], [HAVE_XRENDER=0])
332         CPPFLAGS="$saved_CPPFLAGS"
333     fi
334 fi
335 if test $HAVE_XRENDER -eq 1; then
336     AC_DEFINE_UNQUOTED([HAVE_XRENDER], [1],
337         [Defined to 1 if the XRender extension exists.])
338 fi
339
340 dnl OpenGL
341 enable_opengl="no"
342 if test "x$enable_glx" = "xyes"; then
343     enable_opengl="yes"
344 fi
345 if test "x$enable_egl" = "xyes"; then
346     enable_opengl="yes"
347 fi
348 GLES_VERSION_MASK=0
349
350 HAVE_GL=0
351 if test "x$enable_opengl" = "xyes"; then
352 case ",$GLAPI," in
353 (*,any,*|*,gl,*)
354     HAVE_GL=1
355     PKG_CHECK_MODULES([GL], [gl], [:], [HAVE_GL=0])
356     saved_CPPFLAGS="$CPPFLAGS"
357     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
358     AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [:], [HAVE_GL=0], [
359 #ifdef HAVE_GL_GL_H
360 # include <GL/gl.h>
361 #endif
362     ])
363     CPPFLAGS="$saved_CPPFLAGS"
364     ;;
365 esac
366 fi
367 GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GL "*" 1`
368
369 dnl OpenGL|ESv2
370 HAVE_GLESv2=0
371 if test "x$enable_opengl" = "xyes"; then
372 case ",$GLAPI," in
373 (*,any,*|*,gles2,*)
374     HAVE_GLESv2=1
375     PKG_CHECK_MODULES([GLES2], [glesv2], [:], [HAVE_GLESv2=0])
376     saved_CPPFLAGS="$CPPFLAGS"
377     CPPFLAGS="$CPPFLAGS $GLES2_CFLAGS"
378     AC_CHECK_HEADERS([GLES2/gl2.h GLES2/gl2ext.h], [:],
379         [HAVE_GLESv2=0], [
380 #ifdef HAVE_GLES2_GL2_H
381 # include <GLES2/gl2.h>
382 #endif
383     ])
384     CPPFLAGS="$saved_CPPFLAGS"
385     ;;
386 esac
387 fi
388 GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv2 "*" 4`
389
390 dnl OpenGL|ESv3
391 HAVE_GLESv3=0
392 if test "x$enable_opengl" = "xyes"; then
393 case ",$GLAPI," in
394 (*,any,*|*,gles3,*)
395     HAVE_GLESv3=1
396     PKG_CHECK_MODULES([GLES3], [glesv2], [:], [HAVE_GLESv3=0])
397     saved_CPPFLAGS="$CPPFLAGS"
398     CPPFLAGS="$CPPFLAGS $GLES3_CFLAGS"
399     AC_CHECK_HEADERS([GLES3/gl3.h GLES3/gl3ext.h GLES2/gl2ext.h], [:],
400         [HAVE_GLESv3=0], [
401 #ifdef HAVE_GLES3_GL3_H
402 # include <GLES3/gl3.h>
403 #endif
404     ])
405     CPPFLAGS="$saved_CPPFLAGS"
406     ;;
407 esac
408 fi
409 GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv3 "*" 8`
410
411 dnl ... GLX
412 USE_GLX=0
413 if test "x$enable_glx" = "xyes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
414     USE_GLX=1
415     saved_CPPFLAGS="$CPPFLAGS"
416     saved_LIBS="$LIBS"
417     CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
418     LIBS="$LIBS $GL_LIBS"
419     AC_CHECK_HEADERS([GL/glx.h], [:], [USE_GLX=0], [
420 #ifdef HAVE_GL_GL_H
421 # include <GL/gl.h>
422 #endif
423     ])
424     AC_CHECK_LIB([GL], [glXCreateContext], [:], [USE_GLX=0])
425     CPPFLAGS="$saved_CPPFLAGS"
426     LIBS="$saved_LIBS"
427 fi
428
429 dnl ... EGL
430 USE_EGL=0
431 if test "x$enable_egl" = "xyes" -a $GLES_VERSION_MASK -ne 0; then
432     USE_EGL=1
433     PKG_CHECK_MODULES([EGL], [egl], [:], [USE_EGL=0])
434     saved_CPPFLAGS="$CPPFLAGS"
435     saved_LIBS="$LIBS"
436     AC_CHECK_HEADERS([EGL/egl.h], [:], [USE_EGL=0])
437     AC_CHECK_LIB([EGL], [eglGetDisplay], [:], [USE_EGL=0])
438     CPPFLAGS="$saved_CPPFLAGS"
439     LIBS="$saved_LIBS"
440
441     dnl Check for GMODULE
442     GMODULE_VERSION_REQUIRED=gmodule_version
443     PKG_CHECK_MODULES([GMODULE], [gmodule-2.0 >= $GMODULE_VERSION_REQUIRED])
444 fi
445
446 dnl Check for Wayland
447 USE_WAYLAND=0
448 if test "x$enable_wayland" = "xyes"; then
449     PKG_CHECK_MODULES(WAYLAND, [wayland-client >= wayland_api_version],
450         [USE_WAYLAND=1], [USE_WAYLAND=0])
451
452     if test $USE_WAYLAND -eq 1; then
453         saved_CPPFLAGS="$CPPFLAGS"
454         CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
455         AC_CHECK_HEADERS([wayland-client.h], [:], [USE_WAYLAND=0])
456         CPPFLAGS="$saved_CPPFLAGS"
457     fi
458 fi
459
460 dnl ---------------------------------------------------------------------------
461 dnl -- VA-API                                                                --
462 dnl ---------------------------------------------------------------------------
463
464 dnl Core API
465 PKG_CHECK_MODULES([LIBVA], [libva >= va_api_version])
466 VA_VERSION_STR=`$PKG_CONFIG --modversion libva`
467
468 dnl VA/DRM API
469 HAVE_VA_DRM=0
470 if test $USE_DRM -eq 1; then
471     PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= va_api_drm_version],
472         [HAVE_VA_DRM=1], [USE_DRM=0])
473
474     if test $HAVE_VA_DRM -eq 1; then
475         saved_CPPFLAGS="$CPPFLAGS"
476         CPPFLAGS="$LIBVA_DRM_CFLAGS"
477         AC_CHECK_HEADERS([va/va_drm.h], [:], [HAVE_VA_DRM=0 USE_DRM=0])
478         CPPFLAGS="$saved_CPPFLAGS"
479     fi
480 fi
481
482 dnl VA/X11 API
483 if test $USE_X11 -eq 1; then
484     PKG_CHECK_MODULES(LIBVA_X11, [libva-x11 >= va_api_x11_version],
485         [], [USE_X11=0])
486 fi
487
488 dnl Check for va_dec_jpeg.h header
489 saved_CPPFLAGS="$CPPFLAGS"
490 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
491 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [], [#include <va/va.h>])
492 CPPFLAGS="$saved_CPPFLAGS"
493
494 dnl Check for JPEG decoding API (0.32.1+)
495 USE_JPEG_DECODER=0
496 AC_CACHE_CHECK([for JPEG decoding API],
497     ac_cv_have_jpeg_decoding_api, [
498     saved_CPPFLAGS="$CPPFLAGS"
499     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
500     saved_LIBS="$LIBS"
501     LIBS="$LIBS $LIBVA_LIBS"
502     AC_COMPILE_IFELSE(
503         [AC_LANG_PROGRAM(
504             [[#include <va/va.h>
505               #ifdef HAVE_VA_VA_DEC_JPEG_H
506               #include <va/va_dec_jpeg.h>
507               #endif
508             ]],
509             [[VAPictureParameterBufferJPEGBaseline pic_param;
510               VASliceParameterBufferJPEGBaseline slice_param;
511               VAHuffmanTableBufferJPEGBaseline huffman_table;
512               VAIQMatrixBufferJPEGBaseline iq_matrix;]])],
513         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
514         [ac_cv_have_jpeg_decoding_api="no"]
515     )
516     CPPFLAGS="$saved_CPPFLAGS"
517     LIBS="$saved_LIBS"
518 ])
519
520 dnl Check for va_dec_vp8.h header
521 saved_CPPFLAGS="$CPPFLAGS"
522 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
523 AC_CHECK_HEADERS([va/va_dec_vp8.h], [], [], [#include <va/va.h>])
524 CPPFLAGS="$saved_CPPFLAGS"
525
526 dnl Check for VP8 decoding API (0.34+)
527 USE_VP8_DECODER=0
528 AC_CACHE_CHECK([for VP8 decoding API],
529     ac_cv_have_vp8_decoding_api, [
530     saved_CPPFLAGS="$CPPFLAGS"
531     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
532     saved_LIBS="$LIBS"
533     LIBS="$LIBS $LIBVA_LIBS"
534     AC_COMPILE_IFELSE(
535         [AC_LANG_PROGRAM(
536             [[#include <va/va.h>
537               #ifdef HAVE_VA_VA_DEC_VP8_H
538               #include <va/va_dec_vp8.h>
539               #endif
540             ]],
541             [[VAPictureParameterBufferVP8 pic_param;
542               VASliceParameterBufferVP8 slice_param;
543               VAProbabilityDataBufferVP8 prob_data;
544               VAIQMatrixBufferVP8 iq_matrix;
545               slice_param.slice_data_offset = 0;
546               slice_param.slice_data_flag = 0;]])],
547         [ac_cv_have_vp8_decoding_api="yes" USE_VP8_DECODER=1],
548         [ac_cv_have_vp8_decoding_api="no"]
549     )
550     CPPFLAGS="$saved_CPPFLAGS"
551     LIBS="$saved_LIBS"
552 ])
553
554 dnl Check for va_dec_vp9.h header
555 saved_CPPFLAGS="$CPPFLAGS"
556 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
557 AC_CHECK_HEADERS([va/va_dec_vp9.h], [], [], [#include <va/va.h>])
558 CPPFLAGS="$saved_CPPFLAGS"
559
560 dnl Check for VP9 decoding API (0.37+)
561 USE_VP9_DECODER=0
562 AC_CACHE_CHECK([for VP9 decoding API],
563     ac_cv_have_vp9_decoding_api, [
564     saved_CPPFLAGS="$CPPFLAGS"
565     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
566     saved_LIBS="$LIBS"
567     LIBS="$LIBS $LIBVA_LIBS"
568     AC_COMPILE_IFELSE(
569         [AC_LANG_PROGRAM(
570             [[#include <va/va.h>
571               #ifdef HAVE_VA_VA_DEC_VP9_H
572               #include <va/va_dec_vp9.h>
573               #endif
574             ]],
575             [[VADecPictureParameterBufferVP9 pic_param;
576               VASliceParameterBufferVP9 slice_param;
577               VASegmentParameterVP9 seg_param;
578               slice_param.slice_data_offset = 0;
579               slice_param.slice_data_flag = 0;]])],
580         [ac_cv_have_vp9_decoding_api="yes" USE_VP9_DECODER=$HAVE_GST_VP9_PARSER],
581         [ac_cv_have_vp9_decoding_api="no"]
582     )
583     CPPFLAGS="$saved_CPPFLAGS"
584     LIBS="$saved_LIBS"
585 ])
586
587 dnl Check for va_dec_hevc.h header
588 saved_CPPFLAGS="$CPPFLAGS"
589 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
590 AC_CHECK_HEADERS([va/va_dec_hevc.h], [], [], [#include <va/va.h>])
591 CPPFLAGS="$saved_CPPFLAGS"
592
593 dnl Check for HEVC decoding API (0.38+)
594 USE_HEVC_DECODER=0
595 AC_CACHE_CHECK([for HEVC decoding API],
596     ac_cv_have_hevc_decoding_api, [
597     saved_CPPFLAGS="$CPPFLAGS"
598     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
599     saved_LIBS="$LIBS"
600     LIBS="$LIBS $LIBVA_LIBS"
601     AC_COMPILE_IFELSE(
602         [AC_LANG_PROGRAM(
603             [[#include <va/va.h>
604               #ifdef HAVE_VA_VA_DEC_HEVC_H
605               #include <va/va_dec_hevc.h>
606               #endif
607             ]],
608             [[VAPictureParameterBufferHEVC pic_param;
609               VASliceParameterBufferHEVC slice_param;
610               VAIQMatrixBufferHEVC iq_matrix;
611               slice_param.slice_data_offset = 0;
612               slice_param.slice_data_flag = 0;]])],
613         [ac_cv_have_hevc_decoding_api="yes" USE_HEVC_DECODER=1],
614         [ac_cv_have_hevc_decoding_api="no"]
615     )
616     CPPFLAGS="$saved_CPPFLAGS"
617     LIBS="$saved_LIBS"
618 ])
619
620 dnl Check for vpp (video post-processing) support
621 USE_VA_VPP=0
622 AC_CACHE_CHECK([for video post-postprocessing API],
623     ac_cv_have_va_vpp_api, [
624     saved_CPPFLAGS="$CPPFLAGS"
625     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
626     saved_LIBS="$LIBS"
627     LIBS="$LIBS $LIBVA_LIBS"
628     AC_COMPILE_IFELSE(
629         [AC_LANG_PROGRAM(
630             [[#include <va/va.h>
631               #include <va/va_vpp.h>]],
632             [[VADisplay va_dpy;
633               VAContextID vpp_ctx;
634               VAProcFilterType filters[VAProcFilterCount];
635               unsigned int num_filters = VAProcFilterCount;
636               vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
637               ]])],
638         [ac_cv_have_va_vpp_api="yes" USE_VA_VPP=1],
639         [ac_cv_have_va_vpp_api="no"]
640     )
641     CPPFLAGS="$saved_CPPFLAGS"
642     LIBS="$saved_LIBS"
643 ])
644
645 dnl Check for encoding support
646 USE_ENCODERS=0
647 USE_JPEG_ENCODER=0
648 USE_VP8_ENCODER=0
649 USE_H265_ENCODER=0
650 if test "x$enable_encoders" = "xyes"; then
651     PKG_CHECK_MODULES([LIBVA], [libva >= va_api_enc_version],
652         [HAVE_VA_ENC=1], [HAVE_VA_ENC=0])
653
654     if test $HAVE_VA_ENC -eq 1; then
655         saved_CPPFLAGS="$CPPFLAGS"
656         CPPFLAGS="$LIBVA_CFLAGS"
657         AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h],
658             [USE_ENCODERS=1], [HAVE_VA_ENC=0 USE_ENCODERS=0],
659             [#include <va/va.h>
660             ])
661
662         dnl Check for JPEG Encoding API (0.37.0+)
663         AC_CHECK_HEADERS([va/va_enc_jpeg.h],
664             [USE_JPEG_ENCODER=1], [],
665             [#include <va/va.h>
666             ])
667         AC_CACHE_CHECK([for JPEG encoding API],
668             ac_cv_have_jpeg_encoding_api, [
669             saved_CPPFLAGS="$CPPFLAGS"
670             CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
671             saved_LIBS="$LIBS"
672             LIBS="$LIBS $LIBVA_LIBS"
673             AC_COMPILE_IFELSE(
674                 [AC_LANG_PROGRAM(
675                     [[#include <va/va.h>
676                       #ifdef HAVE_VA_VA_ENC_JPEG_H
677                       #include <va/va_enc_jpeg.h>
678                       #endif
679                     ]],
680                     [[VAEncPictureParameterBufferJPEG pic_param;
681                       VAEncSliceParameterBufferJPEG slice_param;
682                       VAQMatrixBufferJPEG q_matrix;]])],
683                 [ac_cv_have_jpeg_encoding_api="yes" USE_JPEG_ENCODER=1],
684                 [ac_cv_have_jpeg_encoding_api="no"]
685             )
686             CPPFLAGS="$saved_CPPFLAGS"
687             LIBS="$saved_LIBS"
688         ])
689
690         dnl Check for VP8 Encoding API
691         AC_CHECK_HEADERS([va/va_enc_vp8.h],
692             [USE_VP8_ENCODER=1], [],
693             [#include <va/va.h>
694             ])
695         AC_CACHE_CHECK([for VP8 encoding API],
696             ac_cv_have_vp8_encoding_api, [
697             saved_CPPFLAGS="$CPPFLAGS"
698             CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
699             saved_LIBS="$LIBS"
700             LIBS="$LIBS $LIBVA_LIBS"
701             AC_COMPILE_IFELSE(
702                 [AC_LANG_PROGRAM(
703                     [[#include <va/va.h>
704                       #ifdef HAVE_VA_VA_ENC_VP8_H
705                       #include <va/va_enc_vp8.h>
706                       #endif
707                     ]],
708                     [[VAEncSequenceParameterBufferVP8 seq_param;
709                       VAEncPictureParameterBufferVP8 pic_param;
710                       VAQMatrixBufferVP8 q_matrix;]])],
711                 [ac_cv_have_vp8_encoding_api="yes" USE_VP8_ENCODER=1],
712                 [ac_cv_have_vp8_encoding_api="no" USE_VP8_ENCODER=0]
713             )
714             CPPFLAGS="$saved_CPPFLAGS"
715             LIBS="$saved_LIBS"
716         ])
717         CPPFLAGS="$saved_CPPFLAGS"
718
719         dnl Check for H265/HEVC Encoding API
720         AC_CHECK_HEADERS([va/va_enc_hevc.h],
721             [USE_H265_ENCODER=1], [],
722             [#include <va/va.h>
723             ])
724         AC_CACHE_CHECK([for HEVC encoding API],
725             ac_cv_have_hevc_encoding_api, [
726             saved_CPPFLAGS="$CPPFLAGS"
727             CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
728             saved_LIBS="$LIBS"
729             LIBS="$LIBS $LIBVA_LIBS"
730             AC_COMPILE_IFELSE(
731                 [AC_LANG_PROGRAM(
732                     [[#include <va/va.h>
733                       #ifdef HAVE_VA_VA_ENC_HEVC_H
734                       #include <va/va_enc_hevc.h>
735                       #endif
736                     ]],
737                     [[VAEncSequenceParameterBufferHEVC seq_param;
738                       VAEncPictureParameterBufferHEVC pic_param;
739                       VAEncSliceParameterBufferHEVC buf_param;
740                       VAQMatrixBufferHEVC q_matrix;]])],
741                 [ac_cv_have_hevc_encoding_api="yes" USE_H265_ENCODER=1],
742                 [ac_cv_have_hevc_encoding_api="no" USE_H265_ENCODER=0]
743             )
744             CPPFLAGS="$saved_CPPFLAGS"
745             LIBS="$saved_LIBS"
746         ])
747         CPPFLAGS="$saved_CPPFLAGS"
748     fi
749 fi
750
751 dnl VA/Wayland API
752 if test "x$enable_wayland" = "xyes"; then
753     PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= va_api_wld_version],
754         [:], [USE_WAYLAND=0])
755 fi
756
757 dnl ---------------------------------------------------------------------------
758 dnl -- Generate files and summary                                            --
759 dnl ---------------------------------------------------------------------------
760
761 case ":$USE_X11:$USE_GLX:$USE_EGL:$USE_WAYLAND:$USE_DRM:" in
762 *:1:*)
763     ;;
764 *)
765     AC_MSG_ERROR([No renderer is enabled])
766     ;;
767 esac
768
769 AC_DEFINE_UNQUOTED([USE_ENCODERS], $USE_ENCODERS,
770     [Defined to 1 if video encoders are used])
771 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
772
773 AC_DEFINE_UNQUOTED(USE_JPEG_ENCODER, $USE_JPEG_ENCODER,
774     [Defined to 1 if JPEG encoder is used])
775 AM_CONDITIONAL(USE_JPEG_ENCODER, test $USE_JPEG_ENCODER -eq 1)
776
777 AC_DEFINE_UNQUOTED(USE_VP8_ENCODER, $USE_VP8_ENCODER,
778     [Defined to 1 if VP8 encoder is used])
779 AM_CONDITIONAL(USE_VP8_ENCODER, test $USE_VP8_ENCODER -eq 1)
780
781 AC_DEFINE_UNQUOTED(USE_H265_ENCODER, $USE_H265_ENCODER,
782     [Defined to 1 if H265 encoder is used])
783 AM_CONDITIONAL(USE_H265_ENCODER, test $USE_H265_ENCODER -eq 1)
784
785 AC_DEFINE_UNQUOTED(USE_VA_VPP, $USE_VA_VPP,
786     [Defined to 1 if video post-processing is used])
787 AM_CONDITIONAL(USE_VA_VPP, test $USE_VA_VPP -eq 1)
788
789 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
790     [Defined to 1 if JPEG decoder is used])
791 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
792
793 AC_DEFINE_UNQUOTED(USE_VP8_DECODER, $USE_VP8_DECODER,
794     [Defined to 1 if VP8 decoder is used])
795 AM_CONDITIONAL(USE_VP8_DECODER, test $USE_VP8_DECODER -eq 1)
796
797 AC_DEFINE_UNQUOTED(USE_VP9_DECODER, $USE_VP9_DECODER,
798     [Defined to 1 if VP9 decoder is used])
799 AM_CONDITIONAL(USE_VP9_DECODER, test $USE_VP9_DECODER -eq 1)
800
801 AC_DEFINE_UNQUOTED(USE_HEVC_DECODER, $USE_HEVC_DECODER,
802     [Defined to 1 if HEVC decoder is used])
803 AM_CONDITIONAL(USE_HEVC_DECODER, test $USE_HEVC_DECODER -eq 1)
804
805 AC_DEFINE_UNQUOTED(USE_DRM, $USE_DRM,
806     [Defined to 1 if DRM is enabled])
807 AM_CONDITIONAL(USE_DRM, test $USE_DRM -eq 1)
808
809 AC_DEFINE_UNQUOTED(USE_X11, $USE_X11,
810     [Defined to 1 if X11 is enabled])
811 AM_CONDITIONAL(USE_X11, test $USE_X11 -eq 1)
812
813 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
814     [Defined to 1 if GLX is enabled])
815 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
816
817 AC_DEFINE_UNQUOTED([USE_EGL], [$USE_EGL],
818     [Defined to 1 if EGL is enabled])
819 AM_CONDITIONAL([USE_EGL], [test $USE_EGL -eq 1])
820
821 AC_DEFINE_UNQUOTED([USE_GLES_VERSION_MASK], [$GLES_VERSION_MASK],
822     [Defined to the set of enabled OpenGL ES APIs])
823
824 AC_DEFINE_UNQUOTED(USE_WAYLAND, $USE_WAYLAND,
825     [Defined to 1 if WAYLAND is enabled])
826 AM_CONDITIONAL(USE_WAYLAND, test $USE_WAYLAND -eq 1)
827
828 AC_CONFIG_FILES([
829     Makefile
830     docs/Makefile
831     docs/reference/Makefile
832     docs/reference/plugins/Makefile
833     docs/reference/plugins/plugins-docs.xml
834     gst-libs/Makefile
835     gst-libs/gst/Makefile
836     gst-libs/gst/base/Makefile
837     gst-libs/gst/vaapi/Makefile
838     gst/Makefile
839     gst/vaapi/Makefile
840     tests/Makefile
841 ])
842 AC_OUTPUT
843
844 dnl Print summary
845 yesno() {
846     test $1 -eq 1 && echo yes || echo no
847 }
848
849 VIDEO_OUTPUTS=""
850 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
851 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
852 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
853 AS_IF([test $USE_EGL -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS egl"])
854 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
855
856 echo
857 echo $PACKAGE configuration summary:
858 echo
859 echo Installation Prefix .............. : ${prefix}
860 echo GStreamer API version ............ : $GST_API_VERSION
861 echo VA-API version ................... : $VA_VERSION_STR
862 echo Video encoding ................... : $(yesno $USE_ENCODERS)
863 echo Video outputs .................... : $VIDEO_OUTPUTS
864 echo