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