Release 1.7.90
[platform/upstream/gstreamer.git] / configure.ac
1 # gstreamer-vaapi package version number
2 m4_define([gst_vaapi_major_version], [1])
3 m4_define([gst_vaapi_minor_version], [7])
4 m4_define([gst_vaapi_micro_version], [90])
5 m4_define([gst_vaapi_nano_version],  [0])
6 m4_define([gst_vaapi_version],
7           [gst_vaapi_major_version.gst_vaapi_minor_version.gst_vaapi_micro_version])
8 m4_if(gst_vaapi_nano_version, [0], [],
9   [m4_append([gst_vaapi_version], gst_vaapi_nano_version, [.])])
10
11 # Configure defaults
12 m4_define([default_glapi],              [any])
13
14 dnl - library source changed -> increment REVISION
15 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
16 dnl - interfaces added -> increment AGE
17 dnl - interfaces removed -> AGE = 0
18 # gstreamer-vaapi library (libtool) version number
19 m4_define([gst_vaapi_lt_current],       [790])
20 m4_define([gst_vaapi_lt_revision],      [0])
21 m4_define([gst_vaapi_lt_age],           [790])
22
23 # glib version number
24 m4_define([glib_version], [2.32])
25
26 # gstreamer version number
27 m4_define([gst_version],                [1.7.90])
28 m4_define([gst_plugins_base_version],   [1.7.90])
29 m4_define([gst_plugins_bad_version],    [1.7.90])
30
31 # Wayland minimum version number
32 m4_define([wayland_api_version], [1.0.2])
33
34 # VA-API minimum version number
35 m4_define([va_api_version],     [0.30.4])
36 m4_define([va_api_enc_version], [0.34.0])
37 m4_define([va_api_drm_version], [0.33.0])
38 m4_define([va_api_x11_version], [0.31.0])
39 m4_define([va_api_wld_version], [0.33.0])
40
41 # gtk-doc version number
42 # XXX: introspection annotations require gtk-doc >= 1.12
43 m4_define([gtkdoc_version], [1.12])
44
45 AC_PREREQ([2.69])
46 AC_INIT([GStreamer VA-API Plug-ins], [gst_vaapi_version],
47   [http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],
48   [gstreamer-vaapi])
49
50 dnl define the output header for config
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 AG_GST_INIT
57
58 dnl initialize automake
59 AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
60
61 dnl define PACKAGE_VERSION_* variables
62 AS_VERSION
63
64 dnl check if this is a release version
65 AS_NANO(GST_GIT="no", GST_GIT="yes")
66
67 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
68 AM_MAINTAINER_MODE([enable])
69
70 dnl use pretty build output by default
71 AM_SILENT_RULES([yes])
72
73 dnl our libraries and install dirs use GST_API_VERSION in the filename
74 dnl to allow side-by-side installation of different API versions
75 GST_API_VERSION=1.0
76 AC_SUBST([GST_API_VERSION])
77 AC_DEFINE_UNQUOTED([GST_API_VERSION], ["$GST_API_VERSION"],
78   [GStreamer API Version])
79
80 AG_GST_LIBTOOL_PREPARE
81
82 dnl CURRENT, REVISION, AGE
83 dnl sets GST_LT_LDFLAGS
84 AS_LIBTOOL(GST, gst_vaapi_lt_current, gst_vaapi_lt_revision, gst_vaapi_lt_age)
85
86 dnl *** required versions of GStreamer stuff ***
87 GLIB_REQ=glib_version
88 GST_REQ=gst_version
89 GST_PBREQ=gst_plugins_base_version
90 GST_PBADREQ=gst_plugins_bad_version
91 WAYLAND_REQ=wayland_api_version
92 GTKDOC_REQ=gtkdoc_version
93
94 dnl *** required versions of VA-API stuff ***
95 VAAPI_REQ=va_api_version
96 VAAPI_ENC_REQ=va_api_enc_version
97 VAAPI_DRM_REQ=va_api_drm_version
98 VAAPI_X11_REQ=va_api_x11_version
99 VAAPI_WLD_REQ=va_api_wld_version
100
101 dnl *** autotools stuff ****
102
103 dnl allow for different autotools
104 AS_AUTOTOOLS_ALTERNATE
105
106 dnl Add parameters for aclocal
107 AC_SUBST([ACLOCAL_AMFLAGS], ["-I m4 -I common/m4"])
108
109 dnl *** check for arguments to configure ***
110
111 AG_GST_ARG_DISABLE_FATAL_WARNINGS
112 AG_GST_ARG_ENABLE_EXTRA_CHECKS
113 AG_GST_ARG_DEBUG
114
115 AG_GST_ARG_WITH_PKG_CONFIG_PATH
116
117 AG_GST_SET_PACKAGE_RELEASE_DATETIME_WITH_NANO([$PACKAGE_VERSION_NANO],
118   ["${srcdir}/gstreamer-vaapi.doap"],
119   [$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR.$PACKAGE_VERSION_MICRO])
120
121 AC_ARG_ENABLE([encoders],
122   AS_HELP_STRING([--enable-encoders],
123     [enable video encoders @<:@default=yes@:>@]),
124   [], [enable_encoders="yes"])
125
126 AC_ARG_ENABLE([drm],
127   AS_HELP_STRING([--enable-drm],
128     [enable DRM backend @<:@default=yes@:>@]),
129   [], [enable_drm="yes"])
130
131 AC_ARG_ENABLE([x11],
132   AS_HELP_STRING([--enable-x11],
133     [enable X11 output @<:@default=yes@:>@]),
134   [], [enable_x11="yes"])
135
136 AC_ARG_ENABLE([glx],
137   AS_HELP_STRING([--enable-glx],
138     [enable OpenGL/X11 output @<:@default=yes@:>@]),
139   [], [enable_glx="yes"])
140
141 AC_ARG_ENABLE([wayland],
142   AC_HELP_STRING([--enable-wayland],
143     [enable Wayland output @<:@default=yes@:>@]),
144   [], [enable_wayland="yes"])
145
146 AC_ARG_ENABLE([egl],
147   AS_HELP_STRING([--enable-egl],
148     [enable EGL output @<:@default=yes@:>@]),
149   [], [enable_egl="yes"])
150
151 AC_ARG_WITH([glapi],
152   AS_HELP_STRING([--with-glapi=APIs],
153     [build with the specified OpenGL APIs @<:@default=default_glapi@:>@]),
154   [GLAPI="$with_glapi"], [GLAPI=default_glapi])
155
156 dnl *** checks for platform ***
157
158 dnl * hardware/architecture *
159
160 dnl check CPU type
161 AG_GST_ARCH
162
163 dnl *** checks for programs ***
164
165 dnl find a compiler
166 AC_PROG_CC
167 AC_PROG_CC_STDC
168
169 dnl check if the compiler supports '-c' and '-o' options
170 AM_PROG_CC_C_O
171
172 dnl check for git command for version generation in libgstvaapi
173 AC_PATH_PROG([GIT], [git])
174 AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
175
176 dnl check for documentation tools
177 GTK_DOC_CHECK([$GTKDOC_REQ])
178 AG_GST_PLUGIN_DOCS([$GTKDOC_REQ])
179
180 dnl *** checks for libraries ***
181 dnl check for libm, for sin() etc.
182 AC_CHECK_LIB([m], [tan])
183
184 dnl Check to see if dlopen is in default libraries (like Solaris, which
185 dnl has it in libc), or if libdl is needed to get it.
186 AC_CHECK_FUNC([dlopen], [], [
187   AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"])])
188 AC_SUBST([DLOPEN_LIBS])
189
190 dnl define LIBDIR so we can inform people where we live
191 AS_AC_EXPAND([LIBDIR], [$libdir])
192 AC_DEFINE_UNQUOTED([LIBDIR], ["$LIBDIR"], [library dir])
193
194 dnl set location of plugin directory
195 AG_GST_SET_PLUGINDIR
196
197 dnl *** checks for header files ***
198
199 dnl *** checks for types/defines ***
200
201 dnl *** checks for structures ***
202
203 dnl *** checks for compiler characteristics ***
204
205 dnl *** checks for library functions ***
206
207 dnl *** checks for headers ***
208
209 dnl *** checks for dependency libraries ***
210
211 dnl ---------------------------------------------------------------------------
212 dnl -- GStreamer                                                             --
213 dnl ---------------------------------------------------------------------------
214 dnl GLib is required
215 AG_GST_GLIB_CHECK([$GLIB_REQ])
216
217 dnl checks for gstreamer
218 dnl uninstalled is selected preferentially -- see pkg-config(1)
219 AG_GST_CHECK_GST([$GST_API_VERSION], [$GST_REQ], [yes])
220
221 dnl back compatibility
222 AC_MSG_CHECKING([for GStreamer API version])
223 gst_api_version=`$PKG_CONFIG --modversion "gstreamer-$GST_API_VERSION"`
224 gst_major_version=`echo "$gst_api_version" | cut -d'.' -f1`
225 gst_minor_version=`echo "$gst_api_version" | cut -d'.' -f2`
226 GST_VERSION="${gst_major_version}.${gst_minor_version}"
227 AC_MSG_RESULT([$GST_VERSION])
228 AC_DEFINE_UNQUOTED([GST_API_VERSION_S], ["$GST_VERSION"],
229   [Defined to the string representation of GStreamer version])
230
231 AG_GST_CHECK_GST_BASE([$GST_API_VERSION], [$GST_REQ], [yes])
232 AG_GST_CHECK_GST_PLUGINS_BASE([$GST_API_VERSION], [$GST_PBREQ], [yes])
233
234 dnl gst_dmabuf_memory_get_fd (gstreamer-allocators)
235 AG_GST_CHECK_MODULES([GST_ALLOCATORS],
236   [gstreamer-allocators-$GST_API_VERSION], [$GST_PBREQ], [yes])
237
238 dnl GstVideoOverlayComposition (gstreamer-video)
239 AG_GST_CHECK_MODULES([GST_VIDEO],
240   [gstreamer-video-$GST_API_VERSION], [$GST_PBREQ], [yes])
241
242 dnl ... GStreamer base utils (gstreamer-pbutils)
243 AG_GST_CHECK_MODULES([GST_PBUTILS],
244   [gstreamer-pbutils-$GST_API_VERSION], [$GST_PBREQ], [yes])
245
246 dnl bitstream parsers (gstreamer-codecparsers)
247 AG_GST_CHECK_MODULES([GST_CODEC_PARSERS],
248   [gstreamer-codecparsers-$GST_API_VERSION], [$GST_PBADREQ], [yes])
249
250 AS_IF([test "x$enable_glx" = "xyes" -o "x$enable_egl" = "xyes"],
251   [enable_opengl="yes"], [enable_opengl="no"])
252
253 dnl ... opengl helper libraries
254 HAVE_GSTGL=0
255 if test "x$enable_opengl" = "xyes"; then
256   PKG_CHECK_MODULES([GST_GL],
257     [gstreamer-gl-$GST_API_VERSION >= $GST_PBADREQ],
258     [
259       HAVE_GSTGL=1
260       AC_CACHE_CHECK([for GStreamer OpenGL helper libraries],
261         [ac_cv_have_gst_gl_helpers],
262         [
263           saved_CPPFLAGS="$CPPFLAGS"
264           CPPFLAGS="$CPPFLAGS $GST_GL_CFLAGS $GST_VIDEO_CFLAGS"
265           saved_LIBS="$LIBS"
266           LIBS="$saved_LIBS"
267           AC_CHECK_HEADERS([gst/gl/gl.h], [], [HAVE_GSTGL=0])
268           AC_COMPILE_IFELSE(
269             [
270               AC_LANG_PROGRAM(
271                 [[
272 #include <gst/gl/gl.h>
273                 ]],
274                 [[
275 GstGLContext gl_context;
276                 ]])
277             ],
278             [ac_cv_have_gst_gl_helpers="yes"],
279             [ac_cv_have_gst_gl_helpers="no"])
280           CPPFLAGS="$saved_CPPFLAGS"
281           LIBS="$saved_LIBS"
282         ])
283     ], [])
284 fi
285 AS_IF([test "x$ac_cv_have_gst_gl_helpers" = "xno"], [HAVE_GSTGL=0])
286 AM_CONDITIONAL([USE_GST_GL_HELPERS], [test $HAVE_GSTGL -eq 1])
287 AC_DEFINE_UNQUOTED([USE_GST_GL_HELPERS], [$HAVE_GSTGL],
288   [Defined to 1 if GStreamer OpenGL helper libraries are available])
289
290 if test "x$enable_egl" = "xyes" -a $HAVE_GSTGL -ne 1; then
291   AC_MSG_WARN([GStreamer/GL helper libraries not found, disabling EGL support])
292   enable_egl="no"
293 fi
294
295 dnl ---------------------------------------------------------------------------
296 dnl -- Renderers                                                             --
297 dnl ---------------------------------------------------------------------------
298
299 dnl Check for DRM/libudev
300 USE_DRM=0
301 if test "x$enable_drm" = "xyes"; then
302   PKG_CHECK_MODULES([DRM], [libdrm libudev],
303     [
304       USE_DRM=1
305       saved_CPPFLAGS="$CPPFLAGS"
306       CPPFLAGS="$CPPFLAGS $DRM_CFLAGS"
307       AC_CHECK_HEADERS([drm_fourcc.h], [], [USE_DRM=0])
308       CPPFLAGS="$saved_CPPFLAGS"
309     ], [])
310 fi
311
312 dnl Check for X11
313 USE_X11=0
314 if test "x$enable_x11" = "xyes"; then
315   PKG_CHECK_MODULES([X11], [x11],
316     [
317       USE_X11=1
318       saved_CPPFLAGS="$CPPFLAGS"
319       CPPFLAGS="$CPPFLAGS $X11_CFLAGS"
320       AC_CHECK_HEADERS([X11/Xlib.h X11/Xutil.h X11/Xatom.h], [], [USE_X11=0])
321       CPPFLAGS="$saved_CPPFLAGS"
322     ], [])
323 fi
324
325 HAVE_XKBLIB=0
326 HAVE_XRANDR=0
327 HAVE_XRENDER=0
328 if test $USE_X11 -eq 1; then
329   dnl Check for XKB library
330   HAVE_XKBLIB=1
331   AC_CHECK_HEADERS([X11/XKBlib.h], [], [HAVE_XKBLIB=0])
332
333   dnl Check for XRandR
334   PKG_CHECK_MODULES([XRANDR], [xrandr],
335     [
336       HAVE_XRANDR=1
337       saved_CPPFLAGS="$CPPFLAGS"
338       CPPFLAGS="$CPPFLAGS $XRANDR_CFLAGS"
339       AC_CHECK_HEADERS([X11/extensions/Xrandr.h], [], [HAVE_XRANDR=0])
340       CPPFLAGS="$saved_CPPFLAGS"
341     ], [])
342
343   dnl Check for XRender
344   PKG_CHECK_MODULES([XRENDER], [xrender],
345     [
346       HAVE_XRENDER=1
347       saved_CPPFLAGS="$CPPFLAGS"
348       CPPFLAGS="$CPPFLAGS $XRENDER_CFLAGS"
349       AC_CHECK_HEADERS([X11/extensions/Xrender.h], [], [HAVE_XRENDER=0])
350       CPPFLAGS="$saved_CPPFLAGS"
351     ], [])
352 fi
353
354 AC_DEFINE_UNQUOTED([HAVE_XKBLIB], [$HAVE_XKBLIB],
355   [Defined to 1 if the XKB extension exists.])
356 AC_DEFINE_UNQUOTED([HAVE_XRANDR], [$HAVE_XRANDR],
357   [Defined to 1 if the XRandR extension exists.])
358 AC_DEFINE_UNQUOTED([HAVE_XRENDER], [$HAVE_XRENDER],
359   [Defined to 1 if the XRender extension exists.])
360
361 dnl OpenGL
362 GLES_VERSION_MASK=0
363
364 HAVE_GL=0
365 HAVE_GLESv2=0
366 HAVE_GLESv3=0
367 if test "x$enable_opengl" = "xyes"; then
368   dnl OpenGL
369   case ",$GLAPI," in
370     (*,any,*|*,gl,*)
371       HAVE_GL=1
372       PKG_CHECK_MODULES([GL], [gl],
373         [
374           saved_CPPFLAGS="$CPPFLAGS"
375           CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
376           AC_CHECK_HEADERS([GL/gl.h GL/glext.h], [], [HAVE_GL=0],
377             [
378 #ifdef HAVE_GL_GL_H
379 # include <GL/gl.h>
380 #endif
381             ])
382           CPPFLAGS="$saved_CPPFLAGS"
383         ], [HAVE_GL=0])
384       GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GL "*" 1`
385     ;;
386   esac
387
388   dnl OpenGL|ESv2
389   case ",$GLAPI," in
390     (*,any,*|*,gles2,*)
391       HAVE_GLESv2=1
392       PKG_CHECK_MODULES([GLES2], [glesv2],
393         [
394           saved_CPPFLAGS="$CPPFLAGS"
395           CPPFLAGS="$CPPFLAGS $GLES2_CFLAGS"
396           AC_CHECK_HEADERS([GLES2/gl2.h GLES2/gl2ext.h], [], [HAVE_GLESv2=0],
397             [
398 #ifdef HAVE_GLES2_GL2_H
399 # include <GLES2/gl2.h>
400 #endif
401             ])
402           CPPFLAGS="$saved_CPPFLAGS"
403         ], [HAVE_GLESv2=0])
404       GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv2 "*" 4`
405     ;;
406   esac
407
408   dnl OpenGL|ESv3
409   case ",$GLAPI," in
410     (*,any,*|*,gles3,*)
411       HAVE_GLESv3=1
412       PKG_CHECK_MODULES([GLES3], [glesv2],
413         [
414           saved_CPPFLAGS="$CPPFLAGS"
415           CPPFLAGS="$CPPFLAGS $GLES3_CFLAGS"
416           AC_CHECK_HEADERS([GLES3/gl3.h GLES3/gl3ext.h GLES2/gl2ext.h], [],
417             [HAVE_GLESv3=0],
418             [
419 #ifdef HAVE_GLES3_GL3_H
420 # include <GLES3/gl3.h>
421 #endif
422             ])
423           CPPFLAGS="$saved_CPPFLAGS"
424         ], [HAVE_GLESv3=0])
425       GLES_VERSION_MASK=`expr $GLES_VERSION_MASK "+" $HAVE_GLESv3 "*" 8`
426     ;;
427   esac
428 fi
429
430 dnl ... GLX
431 USE_GLX=0
432 if test "x$enable_glx" = "xyes" -a $HAVE_GL -eq 1 -a $USE_X11 -eq 1; then
433   USE_GLX=1
434
435   saved_CPPFLAGS="$CPPFLAGS"
436   saved_LIBS="$LIBS"
437   CPPFLAGS="$CPPFLAGS $GL_CFLAGS"
438   LIBS="$LIBS $GL_LIBS"
439   AC_CHECK_HEADERS([GL/glx.h], [], [USE_GLX=0],
440     [
441 #ifdef HAVE_GL_GL_H
442 # include <GL/gl.h>
443 #endif
444     ])
445   AC_CHECK_LIB([GL], [glXCreateContext], [], [USE_GLX=0])
446   CPPFLAGS="$saved_CPPFLAGS"
447   LIBS="$saved_LIBS"
448 fi
449
450 dnl ... EGL
451 USE_EGL=0
452 if test "x$enable_egl" = "xyes" -a $GLES_VERSION_MASK -ne 0; then
453   PKG_CHECK_MODULES([EGL], [egl],
454     [
455       USE_EGL=1
456
457       saved_CPPFLAGS="$CPPFLAGS"
458       saved_LIBS="$LIBS"
459       AC_CHECK_HEADERS([EGL/egl.h], [], [USE_EGL=0])
460       AC_CHECK_LIB([EGL], [eglGetDisplay], [], [USE_EGL=0])
461       CPPFLAGS="$saved_CPPFLAGS"
462       LIBS="$saved_LIBS"
463
464       dnl Check for GMODULE
465       PKG_CHECK_MODULES([GMODULE], [gmodule-2.0 >= $GLIB_REQ])
466     ], [])
467 fi
468
469 dnl Check for Wayland
470 USE_WAYLAND=0
471 if test "x$enable_wayland" = "xyes"; then
472   PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQ],
473     [
474       USE_WAYLAND=1
475       saved_CPPFLAGS="$CPPFLAGS"
476       CPPFLAGS="$CPPFLAGS $WAYLAND_CFLAGS"
477       AC_CHECK_HEADERS([wayland-client.h], [], [USE_WAYLAND=0])
478       CPPFLAGS="$saved_CPPFLAGS"
479     ], [])
480 fi
481
482 dnl ---------------------------------------------------------------------------
483 dnl -- VA-API                                                                --
484 dnl ---------------------------------------------------------------------------
485
486 dnl Core API
487 PKG_CHECK_MODULES([LIBVA], [libva >= $VAAPI_REQ])
488 VA_VERSION_STR=`$PKG_CONFIG --modversion libva`
489
490 dnl VA/DRM API
491 if test $USE_DRM -eq 1; then
492   PKG_CHECK_MODULES([LIBVA_DRM], [libva-drm >= $VAAPI_DRM_REQ],
493     [
494       saved_CPPFLAGS="$CPPFLAGS"
495       CPPFLAGS="$LIBVA_DRM_CFLAGS"
496       AC_CHECK_HEADERS([va/va_drm.h], [], [USE_DRM=0])
497       CPPFLAGS="$saved_CPPFLAGS"
498     ], [USE_DRM=0])
499 fi
500
501 dnl VA/X11 API
502 if test $USE_X11 -eq 1; then
503   PKG_CHECK_MODULES(LIBVA_X11, [libva-x11 >= $VAAPI_X11_REQ],
504     [], [USE_X11=0])
505 fi
506
507 dnl Check for va_dec_jpeg.h header
508 saved_CPPFLAGS="$CPPFLAGS"
509 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
510 AC_CHECK_HEADERS([va/va_dec_jpeg.h], [], [],
511   [
512 #include <va/va.h>
513   ])
514 CPPFLAGS="$saved_CPPFLAGS"
515
516 dnl Check for JPEG decoding API (0.32.1+)
517 USE_JPEG_DECODER=0
518 AC_CACHE_CHECK([for JPEG decoding API],
519   [ac_cv_have_jpeg_decoding_api],
520   [
521     saved_CPPFLAGS="$CPPFLAGS"
522     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
523     saved_LIBS="$LIBS"
524     LIBS="$LIBS $LIBVA_LIBS"
525     AC_COMPILE_IFELSE(
526       [
527         AC_LANG_PROGRAM(
528           [[
529 #include <va/va.h>
530 #ifdef HAVE_VA_VA_DEC_JPEG_H
531 # include <va/va_dec_jpeg.h>
532 #endif
533           ]],
534           [[
535 VAPictureParameterBufferJPEGBaseline pic_param;
536 VASliceParameterBufferJPEGBaseline slice_param;
537 VAHuffmanTableBufferJPEGBaseline huffman_table;
538 VAIQMatrixBufferJPEGBaseline iq_matrix;
539           ]])
540       ],
541       [ac_cv_have_jpeg_decoding_api="yes"],
542       [ac_cv_have_jpeg_decoding_api="no"])
543     CPPFLAGS="$saved_CPPFLAGS"
544     LIBS="$saved_LIBS"
545   ])
546 AS_IF([test "x$ac_cv_have_jpeg_decoding_api" = "xyes"], [USE_JPEG_DECODER=1])
547
548 dnl Check for va_dec_vp8.h header
549 saved_CPPFLAGS="$CPPFLAGS"
550 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
551 AC_CHECK_HEADERS([va/va_dec_vp8.h], [], [],
552   [
553 #include <va/va.h>
554   ])
555 CPPFLAGS="$saved_CPPFLAGS"
556
557 dnl Check for VP8 decoding API (0.34+)
558 USE_VP8_DECODER=0
559 AC_CACHE_CHECK([for VP8 decoding API],
560   [ac_cv_have_vp8_decoding_api],
561   [
562     saved_CPPFLAGS="$CPPFLAGS"
563     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
564     saved_LIBS="$LIBS"
565     LIBS="$LIBS $LIBVA_LIBS"
566     AC_COMPILE_IFELSE(
567       [
568         AC_LANG_PROGRAM(
569           [[
570 #include <va/va.h>
571 #ifdef HAVE_VA_VA_DEC_VP8_H
572 # include <va/va_dec_vp8.h>
573 #endif
574           ]],
575           [[
576 VAPictureParameterBufferVP8 pic_param;
577 VASliceParameterBufferVP8 slice_param;
578 VAProbabilityDataBufferVP8 prob_data;
579 VAIQMatrixBufferVP8 iq_matrix;
580 slice_param.slice_data_offset = 0;
581 slice_param.slice_data_flag = 0;
582           ]])
583       ],
584       [ac_cv_have_vp8_decoding_api="yes"],
585       [ac_cv_have_vp8_decoding_api="no"])
586     CPPFLAGS="$saved_CPPFLAGS"
587     LIBS="$saved_LIBS"
588   ])
589 AS_IF([test "x$ac_cv_have_vp8_decoding_api" = "xyes"], [USE_VP8_DECODER=1])
590
591 dnl Check for va_dec_vp9.h header
592 saved_CPPFLAGS="$CPPFLAGS"
593 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
594 AC_CHECK_HEADERS([va/va_dec_vp9.h], [], [],
595   [
596 #include <va/va.h>
597   ])
598 CPPFLAGS="$saved_CPPFLAGS"
599
600 dnl Check for VP9 decoding API (0.37+)
601 USE_VP9_DECODER=0
602 AC_CACHE_CHECK([for VP9 decoding API],
603   [ac_cv_have_vp9_decoding_api],
604   [
605     saved_CPPFLAGS="$CPPFLAGS"
606     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
607     saved_LIBS="$LIBS"
608     LIBS="$LIBS $LIBVA_LIBS"
609     AC_COMPILE_IFELSE(
610       [
611         AC_LANG_PROGRAM(
612           [[
613 #include <va/va.h>
614 #ifdef HAVE_VA_VA_DEC_VP9_H
615 # include <va/va_dec_vp9.h>
616 #endif
617           ]],
618           [[
619 VADecPictureParameterBufferVP9 pic_param;
620 VASliceParameterBufferVP9 slice_param;
621 VASegmentParameterVP9 seg_param;
622 slice_param.slice_data_offset = 0;
623 slice_param.slice_data_flag = 0;
624           ]])
625       ],
626       [ac_cv_have_vp9_decoding_api="yes"],
627       [ac_cv_have_vp9_decoding_api="no"])
628     CPPFLAGS="$saved_CPPFLAGS"
629     LIBS="$saved_LIBS"
630   ])
631 AS_IF([test "x$ac_cv_have_vp9_decoding_api" = "xyes"], [USE_VP9_DECODER=1])
632
633 dnl Check for va_dec_hevc.h header
634 saved_CPPFLAGS="$CPPFLAGS"
635 CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
636 AC_CHECK_HEADERS([va/va_dec_hevc.h], [], [],
637   [
638 #include <va/va.h>
639   ])
640 CPPFLAGS="$saved_CPPFLAGS"
641
642 dnl Check for HEVC decoding API (0.38+)
643 USE_HEVC_DECODER=0
644 AC_CACHE_CHECK([for HEVC decoding API],
645   [ac_cv_have_hevc_decoding_api],
646   [
647     saved_CPPFLAGS="$CPPFLAGS"
648     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
649     saved_LIBS="$LIBS"
650     LIBS="$LIBS $LIBVA_LIBS"
651     AC_COMPILE_IFELSE(
652       [
653         AC_LANG_PROGRAM(
654           [[
655 #include <va/va.h>
656 #ifdef HAVE_VA_VA_DEC_HEVC_H
657 # include <va/va_dec_hevc.h>
658 #endif
659           ]],
660           [[
661 VAPictureParameterBufferHEVC pic_param;
662 VASliceParameterBufferHEVC slice_param;
663 VAIQMatrixBufferHEVC iq_matrix;
664 slice_param.slice_data_offset = 0;
665 slice_param.slice_data_flag = 0;
666           ]])
667       ],
668       [ac_cv_have_hevc_decoding_api="yes"],
669       [ac_cv_have_hevc_decoding_api="no"])
670     CPPFLAGS="$saved_CPPFLAGS"
671     LIBS="$saved_LIBS"
672   ])
673 AS_IF([test "x$ac_cv_have_hevc_decoding_api" = "xyes"], [USE_HEVC_DECODER=1])
674
675 dnl Check for vpp (video post-processing) support
676 USE_VA_VPP=0
677 AC_CACHE_CHECK([for video post-postprocessing API],
678   [ac_cv_have_va_vpp_api],
679   [
680     saved_CPPFLAGS="$CPPFLAGS"
681     CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
682     saved_LIBS="$LIBS"
683     LIBS="$LIBS $LIBVA_LIBS"
684     AC_COMPILE_IFELSE(
685       [
686         AC_LANG_PROGRAM(
687           [[
688 #include <va/va.h>
689 #include <va/va_vpp.h>
690           ]],
691           [[
692 VADisplay va_dpy;
693 VAContextID vpp_ctx;
694 VAProcFilterType filters[VAProcFilterCount];
695 unsigned int num_filters = VAProcFilterCount;
696 vaQueryVideoProcFilters(va_dpy, vpp_ctx, filters, &num_filters);
697           ]])
698       ],
699       [ac_cv_have_va_vpp_api="yes"],
700       [ac_cv_have_va_vpp_api="no"])
701     CPPFLAGS="$saved_CPPFLAGS"
702     LIBS="$saved_LIBS"
703   ])
704 AS_IF([test "x$ac_cv_have_va_vpp_api" = "xyes"], [USE_VA_VPP=1])
705
706 dnl Check for encoding support
707 USE_ENCODERS=0
708 if test "x$enable_encoders" = "xyes"; then
709   PKG_CHECK_MODULES([LIBVA], [libva >= $VAAPI_ENC_REQ],
710     [
711       USE_ENCODERS=1
712       saved_CPPFLAGS="$CPPFLAGS"
713       CPPFLAGS="$LIBVA_CFLAGS"
714       AC_CHECK_HEADERS([va/va_enc_mpeg2.h va/va_enc_h264.h], [],
715         [USE_ENCODERS=0],
716         [
717 #include <va/va.h>
718         ])
719       CPPFLAGS="$saved_CPPFLAGS"
720     ], [])
721 fi
722
723 USE_JPEG_ENCODER=0
724 USE_VP8_ENCODER=0
725 USE_H265_ENCODER=0
726 if test $USE_ENCODERS -eq 1; then
727   dnl Check for JPEG Encoding API (0.37.0+)
728   AC_CHECK_HEADERS([va/va_enc_jpeg.h], [], [],
729     [
730 #include <va/va.h>
731     ])
732   AC_CACHE_CHECK([for JPEG encoding API],
733     [ac_cv_have_jpeg_encoding_api],
734     [
735       saved_CPPFLAGS="$CPPFLAGS"
736       CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
737       saved_LIBS="$LIBS"
738       LIBS="$LIBS $LIBVA_LIBS"
739       AC_COMPILE_IFELSE(
740         [
741           AC_LANG_PROGRAM(
742             [[
743 #include <va/va.h>
744 #ifdef HAVE_VA_VA_ENC_JPEG_H
745 # include <va/va_enc_jpeg.h>
746 #endif
747             ]],
748             [[
749 VAEncPictureParameterBufferJPEG pic_param;
750 VAEncSliceParameterBufferJPEG slice_param;
751 VAQMatrixBufferJPEG q_matrix;
752             ]])
753         ],
754         [ac_cv_have_jpeg_encoding_api="yes"],
755         [ac_cv_have_jpeg_encoding_api="no"])
756       CPPFLAGS="$saved_CPPFLAGS"
757       LIBS="$saved_LIBS"
758     ])
759   AS_IF([test "x$ac_cv_have_jpeg_encoding_api" = "xyes"], [USE_JPEG_ENCODER=1])
760
761   dnl Check for VP8 Encoding API
762   AC_CHECK_HEADERS([va/va_enc_vp8.h], [], [],
763     [
764 #include <va/va.h>
765     ])
766   AC_CACHE_CHECK([for VP8 encoding API],
767     [ac_cv_have_vp8_encoding_api],
768     [
769       saved_CPPFLAGS="$CPPFLAGS"
770       CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
771       saved_LIBS="$LIBS"
772       LIBS="$LIBS $LIBVA_LIBS"
773       AC_COMPILE_IFELSE(
774         [
775           AC_LANG_PROGRAM(
776             [[
777 #include <va/va.h>
778 #ifdef HAVE_VA_VA_ENC_VP8_H
779 # include <va/va_enc_vp8.h>
780 #endif
781             ]],
782             [[
783 VAEncSequenceParameterBufferVP8 seq_param;
784 VAEncPictureParameterBufferVP8 pic_param;
785 VAQMatrixBufferVP8 q_matrix;
786             ]])
787         ],
788         [ac_cv_have_vp8_encoding_api="yes"],
789         [ac_cv_have_vp8_encoding_api="no"])
790       CPPFLAGS="$saved_CPPFLAGS"
791       LIBS="$saved_LIBS"
792     ])
793   AS_IF([test "x$ac_cv_have_vp8_encoding_api" = "xyes"], [USE_VP8_ENCODER=1])
794
795   dnl Check for H265/HEVC Encoding API
796   AC_CHECK_HEADERS([va/va_enc_hevc.h], [], [],
797     [
798 #include <va/va.h>
799     ])
800   AC_CACHE_CHECK([for HEVC encoding API],
801     [ac_cv_have_hevc_encoding_api],
802     [
803       saved_CPPFLAGS="$CPPFLAGS"
804       CPPFLAGS="$CPPFLAGS $LIBVA_CFLAGS"
805       saved_LIBS="$LIBS"
806       LIBS="$LIBS $LIBVA_LIBS"
807       AC_COMPILE_IFELSE(
808         [
809           AC_LANG_PROGRAM(
810             [[
811 #include <va/va.h>
812 #ifdef HAVE_VA_VA_ENC_HEVC_H
813 # include <va/va_enc_hevc.h>
814 #endif
815             ]],
816             [[
817 VAEncSequenceParameterBufferHEVC seq_param;
818 VAEncPictureParameterBufferHEVC pic_param;
819 VAEncSliceParameterBufferHEVC buf_param;
820 VAQMatrixBufferHEVC q_matrix;
821             ]])
822         ],
823         [ac_cv_have_hevc_encoding_api="yes"],
824         [ac_cv_have_hevc_encoding_api="no"])
825       CPPFLAGS="$saved_CPPFLAGS"
826       LIBS="$saved_LIBS"
827     ])
828   AS_IF([test "x$ac_cv_have_hevc_encoding_api" = "xyes"], [USE_H265_ENCODER=1])
829 fi
830
831 dnl VA/Wayland API
832 if test $USE_WAYLAND -eq 1; then
833   PKG_CHECK_MODULES([LIBVA_WAYLAND], [libva-wayland >= $VAAPI_WLD_REQ],
834     [], [USE_WAYLAND=0])
835 fi
836
837 dnl *** finalize CFLAGS, LDFLAGS, LIBS
838
839 # set by AG_GST_PARSE_SUBSYSTEM_DISABLES above
840 dnl make sure it doesn't complain about unused variables if debugging is disabled
841 AG_GST_CHECK_GST_DEBUG_DISABLED([NO_WARNINGS="-Wno-unused"], [NO_WARNINGS=""])
842
843 dnl define an ERROR_CFLAGS Makefile variable
844 dnl FIXME Add -Wredundant-decls again if considered useful and warnings are fixed
845 AG_GST_SET_ERROR_CFLAGS([$FATAL_WARNINGS], [-Wmissing-declarations -Wmissing-prototypes -Wwrite-strings -Wformat-security -Wold-style-definition -Winit-self -Wmissing-include-dirs -Waddress -Wno-multichar -Wnested-externs $NO_WARNINGS])
846
847 dnl define correct level for debugging messages
848 AG_GST_SET_LEVEL_DEFAULT([$GST_GIT])
849
850 dnl Overview:
851 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
852 dnl GST_*:              flags shared by built objects to link against GStreamer
853 dnl GST_ALL_LDFLAGS:    linker flags shared by all
854 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
855 dnl GST_LT_LDFLAGS:     library versioning of our libraries
856 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
857
858 dnl GST_OPTION_CFLAGS
859 if test "x$USE_DEBUG" = xyes; then
860    PROFILE_CFLAGS="-g"
861 fi
862 AC_SUBST([PROFILE_CFLAGS])
863
864 if test "x$GST_GIT" = "xyes"; then
865   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
866 else
867   DEPRECATED_CFLAGS=""
868 fi
869 AC_SUBST([DEPRECATED_CFLAGS])
870
871 dnl every flag in GST_OPTION_CFLAGS and GST_OPTION_CXXFLAGS can be overridden
872 dnl at make time with e.g. make ERROR_CFLAGS=""
873 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(DEPRECATED_CFLAGS)"
874 AC_SUBST([GST_OPTION_CFLAGS])
875
876 dnl FIXME: do we want to rename to GST_ALL_* ?
877 dnl prefer internal headers to already installed ones
878 dnl also add builddir include for enumtypes and marshal
879 dnl add GST_OPTION_CFLAGS, but overridable
880 GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
881 GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
882 AC_SUBST([GST_CFLAGS])
883
884 dnl LDFLAGS really should only contain flags, not libs - they get added before
885 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
886 GST_ALL_LDFLAGS="-no-undefined"
887 if test "x${enable_Bsymbolic}" = "xyes"; then
888   GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic-functions"
889 fi
890 AC_SUBST([GST_ALL_LDFLAGS])
891
892 dnl GST_LIB_LDFLAGS
893 dnl linker flags shared by all libraries
894 dnl LDFLAGS modifier defining exported symbols from built libraries
895 dnl (export _gst_foo but not __gst_foo)
896 GST_LIB_LDFLAGS="-export-symbols-regex ^_?\(gst_\|Gst\|GST_\).*"
897 AC_SUBST([GST_LIB_LDFLAGS])
898
899 dnl this really should only contain flags, not libs - they get added before
900 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
901 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
902 AC_SUBST([GST_PLUGIN_LDFLAGS])
903
904 dnl ---------------------------------------------------------------------------
905 dnl -- Generate files and summary                                            --
906 dnl ---------------------------------------------------------------------------
907
908 case ":$USE_X11:$USE_GLX:$USE_EGL:$USE_WAYLAND:$USE_DRM:" in
909 *:1:*) ;;
910 *) AC_MSG_ERROR([No renderer is enabled]) ;;
911 esac
912
913 AC_DEFINE_UNQUOTED([USE_ENCODERS], [$USE_ENCODERS],
914   [Defined to 1 if video encoders are used])
915 AM_CONDITIONAL([USE_ENCODERS], [test $USE_ENCODERS -eq 1])
916
917 AC_DEFINE_UNQUOTED([USE_JPEG_ENCODER], [$USE_JPEG_ENCODER],
918   [Defined to 1 if JPEG encoder is used])
919 AM_CONDITIONAL([USE_JPEG_ENCODER], [test $USE_JPEG_ENCODER -eq 1])
920
921 AC_DEFINE_UNQUOTED([USE_VP8_ENCODER], [$USE_VP8_ENCODER],
922   [Defined to 1 if VP8 encoder is used])
923 AM_CONDITIONAL([USE_VP8_ENCODER], [test $USE_VP8_ENCODER -eq 1])
924
925 AC_DEFINE_UNQUOTED([USE_H265_ENCODER], [$USE_H265_ENCODER],
926   [Defined to 1 if H265 encoder is used])
927 AM_CONDITIONAL([USE_H265_ENCODER], [test $USE_H265_ENCODER -eq 1])
928
929 AC_DEFINE_UNQUOTED([USE_VA_VPP], [$USE_VA_VPP],
930   [Defined to 1 if video post-processing is used])
931 AM_CONDITIONAL([USE_VA_VPP], [test $USE_VA_VPP -eq 1])
932
933 AC_DEFINE_UNQUOTED([USE_JPEG_DECODER], [$USE_JPEG_DECODER],
934   [Defined to 1 if JPEG decoder is used])
935 AM_CONDITIONAL([USE_JPEG_DECODER], [test $USE_JPEG_DECODER -eq 1])
936
937 AC_DEFINE_UNQUOTED([USE_VP8_DECODER], [$USE_VP8_DECODER],
938   [Defined to 1 if VP8 decoder is used])
939 AM_CONDITIONAL([USE_VP8_DECODER], [test $USE_VP8_DECODER -eq 1])
940
941 AC_DEFINE_UNQUOTED([USE_VP9_DECODER], [$USE_VP9_DECODER],
942   [Defined to 1 if VP9 decoder is used])
943 AM_CONDITIONAL([USE_VP9_DECODER], [test $USE_VP9_DECODER -eq 1])
944
945 AC_DEFINE_UNQUOTED([USE_HEVC_DECODER], [$USE_HEVC_DECODER],
946   [Defined to 1 if HEVC decoder is used])
947 AM_CONDITIONAL([USE_HEVC_DECODER], [test $USE_HEVC_DECODER -eq 1])
948
949 AC_DEFINE_UNQUOTED([USE_DRM], [$USE_DRM],
950   [Defined to 1 if DRM is enabled])
951 AM_CONDITIONAL([USE_DRM], [test $USE_DRM -eq 1])
952
953 AC_DEFINE_UNQUOTED([USE_X11], [$USE_X11],
954   [Defined to 1 if X11 is enabled])
955 AM_CONDITIONAL([USE_X11], [test $USE_X11 -eq 1])
956
957 AC_DEFINE_UNQUOTED([USE_GLX], [$USE_GLX],
958   [Defined to 1 if GLX is enabled])
959 AM_CONDITIONAL([USE_GLX], [test $USE_GLX -eq 1])
960
961 AC_DEFINE_UNQUOTED([USE_EGL], [$USE_EGL],
962   [Defined to 1 if EGL is enabled])
963 AM_CONDITIONAL([USE_EGL], [test $USE_EGL -eq 1])
964
965 AC_DEFINE_UNQUOTED([USE_GLES_VERSION_MASK], [$GLES_VERSION_MASK],
966   [Defined to the set of enabled OpenGL ES APIs])
967
968 AC_DEFINE_UNQUOTED([USE_WAYLAND], [$USE_WAYLAND],
969   [Defined to 1 if WAYLAND is enabled])
970 AM_CONDITIONAL([USE_WAYLAND], [test $USE_WAYLAND -eq 1])
971
972 dnl @TODO hack for egl's dynamic module loading. remove it!
973 AC_DEFINE_UNQUOTED([GST_VAAPI_MAJOR_VERSION_S], ["0"],
974   [Defined to the string representation of gstreamer-vaapi major version])
975
976 AC_CONFIG_FILES([
977     Makefile
978     common/Makefile
979     common/m4/Makefile
980     m4/Makefile
981     docs/Makefile
982     docs/version.entities
983     docs/plugins/Makefile
984     docs/plugins/gstreamer-vaapi-plugins-docs.xml
985     gst-libs/Makefile
986     gst-libs/gst/Makefile
987     gst-libs/gst/base/Makefile
988     gst-libs/gst/vaapi/Makefile
989     gst/Makefile
990     gst/vaapi/Makefile
991     tests/Makefile
992 ])
993 AC_OUTPUT
994
995 dnl Print summary
996 yesno() {
997   test $1 -eq 1 && echo yes || echo no
998 }
999
1000 VIDEO_OUTPUTS=""
1001 AS_IF([test $USE_DRM -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS drm"])
1002 AS_IF([test $USE_X11 -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS x11"])
1003 AS_IF([test $USE_GLX -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS glx"])
1004 AS_IF([test $USE_EGL -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS egl"])
1005 AS_IF([test $USE_WAYLAND -eq 1], [VIDEO_OUTPUTS="$VIDEO_OUTPUTS wayland"])
1006
1007 echo
1008 echo $PACKAGE configuration summary:
1009 echo
1010 echo Installation Prefix .............. : ${prefix}
1011 echo GStreamer API version ............ : $GST_VERSION
1012 echo VA-API version ................... : $VA_VERSION_STR
1013 echo Video encoding ................... : $(yesno $USE_ENCODERS)
1014 echo Video outputs .................... : $VIDEO_OUTPUTS
1015 echo