vaapisink: drop checks for new APIs used by default.
[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], [4])
4 m4_define([gst_vaapi_micro_version], [0])
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 # glib version number
13 m4_define([glib_major_version], [2])
14 m4_define([glib_minor_version], [28])
15 m4_define([glib_micro_version], [0])
16 m4_define([glib_major_minor_version],
17           [glib_major_version.glib_minor_version])
18 m4_define([glib_version],
19           [glib_major_version.glib_minor_version.glib_micro_version])
20
21 # gst version number
22 m4_define([gst_major_version], [0])
23 m4_define([gst_minor_version], [10])
24 m4_define([gst_micro_version], [14])
25 m4_define([gst_major_minor_version],
26           [gst_major_version.gst_minor_version])
27 m4_define([gst_version],
28           [gst_major_version.gst_minor_version.gst_micro_version])
29
30 # gst plugins-base version number
31 m4_define([gst_plugins_base_major_version], [0])
32 m4_define([gst_plugins_base_minor_version], [10])
33 m4_define([gst_plugins_base_micro_version], [31])
34 m4_define([gst_plugins_base_version],
35           [gst_plugins_base_major_version.gst_plugins_base_minor_version.gst_plugins_base_micro_version])
36
37 # gst plugins-bad version number
38 m4_define([gst_plugins_bad_major_version], [0])
39 m4_define([gst_plugins_bad_minor_version], [10])
40 m4_define([gst_plugins_bad_micro_version], [22])
41 m4_define([gst_plugins_bad_version],
42           [gst_plugins_bad_major_version.gst_plugins_bad_minor_version.gst_plugins_bad_micro_version])
43
44 # VA-API minimum version number
45 m4_define([va_api_x11_version], [0.31.0])
46 m4_define([va_api_glx_version], [0.32.0])
47
48 # libva package version number
49 m4_define([libva_x11_package_version], [1.0.3])
50 m4_define([libva_glx_package_version], [1.0.9])
51
52 # gtk-doc version number
53 # XXX: introspection annotations require gtk-doc >= 1.12
54 m4_define([gtkdoc_major_version], [1])
55 m4_define([gtkdoc_minor_version], [9])
56 m4_define([gtkdoc_version], [gtkdoc_major_version.gtkdoc_minor_version])
57
58 AC_PREREQ([2.58])
59 AC_INIT([gst_vaapi], [gst_vaapi_version],
60     [gwenole.beauchesne@intel.com],
61     [gstreamer-vaapi])
62
63 AC_CONFIG_HEADERS([config.h])
64 AC_CONFIG_SRCDIR([Makefile.am])
65 AC_CONFIG_MACRO_DIR([m4])
66 AC_CONFIG_AUX_DIR([build-aux])
67
68 AC_CANONICAL_TARGET
69
70 AM_INIT_AUTOMAKE
71
72 TODAY="`LC_ALL=C date +'%a, %d %b %Y %X %z'`"
73 AC_SUBST(TODAY)
74
75 GST_VAAPI_MAJOR_VERSION=gst_vaapi_major_version
76 AC_SUBST(GST_VAAPI_MAJOR_VERSION)
77
78 LIBVA_PACKAGE_VERSION=libva_x11_package_version
79 AC_SUBST(LIBVA_PACKAGE_VERSION)
80
81 dnl Versions for GStreamer and plugins-base
82 GST_MAJORMINOR=gst_major_minor_version
83 GST_VERSION_REQUIRED=gst_version
84 GST_PLUGINS_BASE_VERSION_REQUIRED=gst_plugins_base_version
85 GST_PLUGINS_BAD_VERSION_REQUIRED=gst_plugins_bad_version
86 AC_SUBST(GST_MAJORMINOR)
87 AC_SUBST(GST_VERSION_REQUIRED)
88 AC_SUBST(GST_PLUGINS_BASE_VERSION_REQUIRED)
89 AC_SUBST(GST_PLUGINS_BAD_VERSION_REQUIRED)
90
91 dnl Use pretty build output with automake >= 1.11
92 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])], [
93   AM_DEFAULT_VERBOSITY=1
94   AC_SUBST(AM_DEFAULT_VERBOSITY)
95 ])
96
97 dnl Check for tools
98 AC_PROG_CC
99 AM_PROG_CC_C_O
100 AC_PROG_LIBTOOL
101
102 AC_ARG_ENABLE(glx,
103     AS_HELP_STRING([--enable-glx],
104                    [enable OpenGL/X11 @<:@default=yes@:>@]),
105     [], [enable_glx="yes"])
106
107 AC_ARG_ENABLE(vaapi-glx,
108     AS_HELP_STRING([--enable-vaapi-glx],
109                    [enable VA/GLX extensions @<:@default=yes@:>@]),
110     [], [enable_vaapi_glx="yes"])
111
112 AC_ARG_ENABLE(vaapisink-glx,
113     AS_HELP_STRING([--enable-vaapisink-glx],
114                    [enable OpenGL/X11 to vaapisink @<:@default=yes@:>@]),
115     [], [enable_vaapisink_glx="no"])
116
117 dnl Check for basic libraries
118 AC_CHECK_LIB(m, tan)
119
120 dnl Check for Gtk doc
121 GTKDOC_VERSION=gtkdoc_version
122 # gtkdocize greps for '^GTK_DOC_CHECK', so it needs to be on its own line
123 m4_ifdef([GTK_DOC_CHECK], [
124 GTK_DOC_CHECK([$GTKDOC_VERSION], [--flavour no-tmpl])], [
125 AM_CONDITIONAL([ENABLE_GTK_DOC], [false])])
126 AC_SUBST(GTKDOC_VERSION)
127
128 dnl Check for GLib
129 GLIB_VERSION_REQUIRED=glib_version
130 PKG_CHECK_MODULES([GLIB], [glib-2.0 >= $GLIB_VERSION_REQUIRED])
131 AC_SUBST(GLIB_VERSION_REQUIRED)
132
133 dnl ---------------------------------------------------------------------------
134 dnl -- GStreamer                                                             --
135 dnl ---------------------------------------------------------------------------
136
137 dnl GStreamer Core
138 PKG_CHECK_MODULES([GST],      [gstreamer-$GST_MAJORMINOR >= gst_version])
139 PKG_CHECK_MODULES([GST_BASE], [gstreamer-base-$GST_MAJORMINOR >= gst_version])
140
141 AC_CACHE_CHECK([for GstBaseSink::query hook], ac_cv_have_gst_base_sink_query, [
142     saved_CFLAGS="$CFLAGS"
143     CFLAGS="$CFLAGS $GST_BASE_CFLAGS"
144     saved_LIBS="$LIBS"
145     LIBS="$LIBS $GST_BASE_LIBS"
146     AC_COMPILE_IFELSE(
147         [AC_LANG_PROGRAM(
148             [[#include <gst/base/gstbasesink.h>]],
149             [[GstBaseSinkClass klass; klass.query = NULL;]])],
150         [ac_cv_have_gst_base_sink_query="yes"],
151         [ac_cv_have_gst_base_sink_query="no"]
152     )
153     CFLAGS="$saved_CFLAGS"
154     LIBS="$saved_LIBS"
155 ])
156 if test "$ac_cv_have_gst_base_sink_query" != "yes"; then
157     AC_MSG_ERROR([GstBaseSink does not contain the 'query' vfunc])
158 fi
159
160 dnl GStreamer -base plugins
161 PKG_CHECK_MODULES([GST_PLUGINS_BASE],
162     [gstreamer-plugins-base-$GST_MAJORMINOR >= gst_plugins_base_version])
163 PKG_CHECK_MODULES([GST_INTERFACES],
164     [gstreamer-interfaces-$GST_MAJORMINOR >= gst_plugins_base_version])
165
166 dnl ... GstVideoOverlayComposition (gstreamer-video)
167 PKG_CHECK_MODULES([GST_VIDEO],
168     [gstreamer-video-$GST_MAJORMINOR >= gst_plugins_base_version])
169
170 AC_CACHE_CHECK([for GstVideoOverlayComposition],
171     ac_cv_have_gst_video_overlay_composition, [
172     saved_CFLAGS="$CFLAGS"
173     CFLAGS="$CFLAGS $GST_CFLAGS"
174     saved_LIBS="$LIBS"
175     LIBS="$LIBS $GST_LIBS"
176     AC_COMPILE_IFELSE(
177         [AC_LANG_PROGRAM(
178             [[#include <gst/video/video-overlay-composition.h>]],
179             [[GstVideoOverlayComposition *c = gst_video_overlay_composition_new(0);]])],
180         [ac_cv_have_gst_video_overlay_composition="yes"],
181         [ac_cv_have_gst_video_overlay_composition="no"]
182     )
183     CFLAGS="$saved_CFLAGS"
184     LIBS="$saved_LIBS"
185 ])
186 if test "$ac_cv_have_gst_video_overlay_composition" != "yes"; then
187     AC_MSG_ERROR([GstVideoOverlayComposition is not available])
188 fi
189
190 dnl GStreamer -bad plugins
191 PKG_CHECK_MODULES([GST_BASEVIDEO],
192     [gstreamer-basevideo-$GST_MAJORMINOR >= gst_plugins_bad_version])
193
194 dnl ... bitstream parsers
195 USE_CODEC_PARSERS=1
196 USE_LOCAL_CODEC_PARSERS=0
197
198 PKG_CHECK_MODULES([GST_CODEC_PARSERS],
199     [gstreamer-codecparsers-$GST_MAJORMINOR >= gst_plugins_bad_version])
200
201 dnl ... 0.10.23 addition, could be implemented otherwise
202 AC_CACHE_CHECK([for GstH264SliceHdr::n_emulation_prevention_bytes],
203     ac_cv_have_gst_h264_slice_hdr_epb_count, [
204     saved_CFLAGS="$CFLAGS"
205     CFLAGS="$CFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
206     saved_LIBS="$LIBS"
207     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
208     AC_COMPILE_IFELSE(
209         [AC_LANG_PROGRAM(
210             [[#include <gst/codecparsers/gsth264parser.h>]],
211             [[GstH264SliceHdr slice_hdr;
212               slice_hdr.n_emulation_prevention_bytes = 0;]])],
213         [ac_cv_have_gst_h264_slice_hdr_epb_count="yes"],
214         [ac_cv_have_gst_h264_slice_hdr_epb_count="no"]
215     )
216     CFLAGS="$saved_CFLAGS"
217     LIBS="$saved_LIBS"
218 ])
219
220 if test "$ac_cv_have_gst_h264_slice_hdr_epb_count" = "yes"; then
221     AC_DEFINE_UNQUOTED(HAVE_GST_H264_SLICE_HDR_EPB_COUNT, 1,
222         [Defined to 1 if GstH264SliceHdr::n_emulation_prevention_bytes exists.])
223 fi
224
225 dnl ... JPEG parser, not upstream yet
226 AC_CACHE_CHECK([for JPEG parser],
227     ac_cv_have_gst_jpeg_parser, [
228     saved_CFLAGS="$CFLAGS"
229     CFLAGS="$CFLAGS $GST_CFLAGS $GST_CODEC_PARSERS_CFLAGS"
230     saved_LIBS="$LIBS"
231     LIBS="$LIBS $GST_LIBS $GST_CODEC_PARSERS_LIBS"
232     AC_COMPILE_IFELSE(
233         [AC_LANG_PROGRAM(
234             [[#include <gst/codecparsers/gstjpegparser.h>]],
235             [[GstJpegImage jpeg_image;]])],
236         [ac_cv_have_gst_jpeg_parser="yes"],
237         [ac_cv_have_gst_jpeg_parser="no" USE_LOCAL_CODEC_PARSERS=1]
238     )
239     CFLAGS="$saved_CFLAGS"
240     LIBS="$saved_LIBS"
241 ])
242
243 if test "$ac_cv_have_gst_jpeg_parser" = "yes"; then
244     AC_DEFINE_UNQUOTED(HAVE_GST_JPEG_PARSER, 1,
245         [Defined to 1 if JPEG parser exists.])
246 fi
247 AM_CONDITIONAL(USE_LOCAL_CODEC_PARSERS, test $USE_LOCAL_CODEC_PARSERS -eq 1)
248
249 dnl GST_ALL_LDFLAGS:
250 dnl LDFLAGS really should only contain flags, not libs - they get added before
251 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
252 GST_ALL_LDFLAGS="-no-undefined"
253 AC_SUBST(GST_ALL_LDFLAGS)
254
255 dnl GST_PLUGIN_LDFLAGS:
256 dnl this really should only contain flags, not libs - they get added before
257 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
258 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^([_]*gst_plugin_desc|gst_.*_get_type)\$\$' $GST_ALL_LDFLAGS"
259 AC_SUBST(GST_PLUGIN_LDFLAGS)
260
261 dnl Check for the GStreamer plugins directory
262 AC_MSG_CHECKING([for GStreamer plugins directory])
263 GST_PLUGINS_DIR=`$PKG_CONFIG gstreamer-$GST_MAJORMINOR --variable pluginsdir`
264 if test -z "$GST_PLUGINS_DIR"; then
265     echo "FAIL FAIL FAIL"
266     GST_PLUGINS_DIR="\$(libdir)/gstreamer-$GST_MAJORMINOR"
267 fi
268 AC_MSG_RESULT([$GST_PLUGINS_DIR])
269 plugindir="$GST_PLUGINS_DIR"
270 AC_SUBST(plugindir)
271
272 dnl ---------------------------------------------------------------------------
273 dnl -- Renderers                                                             --
274 dnl ---------------------------------------------------------------------------
275
276 dnl Check for X11
277 PKG_CHECK_MODULES(X11, [x11])
278
279 dnl Check for OpenGL
280 USE_GLX=1
281 if test "$enable_glx" != "yes"; then
282     USE_GLX=0
283 fi
284 GLX_CFLAGS=""
285 GLX_LIBS=""
286 AC_CHECK_HEADERS([GL/gl.h GL/glext.h GL/glx.h], [], [USE_GLX=0], [
287 #ifdef HAVE_GL_GL_H
288 # include <GL/gl.h>
289 #endif
290 ])
291 AC_CHECK_LIB(GL, glXCreateContext, [GLX_LIBS="-lGL"], [USE_GLX=0])
292 AC_SUBST(GLX_CFLAGS)
293 AC_SUBST(GLX_LIBS)
294
295 dnl ---------------------------------------------------------------------------
296 dnl -- VA-API                                                                --
297 dnl ---------------------------------------------------------------------------
298
299 dnl Check for VA-API
300 LIBVA_PKGNAME="libva"
301 PKG_CHECK_MODULES(LIBVA, [$LIBVA_PKGNAME])
302 AC_SUBST(LIBVA_PKGNAME)
303
304 dnl ... original VA-API 0.29
305 AC_CACHE_CHECK([for old VA-API 0.29],
306     ac_cv_have_vaapi_old, [
307     saved_CFLAGS="$CFLAGS"
308     CFLAGS="$CFLAGS $LIBVA_CFLAGS"
309     saved_LIBS="$LIBS"
310     LIBS="$LIBS $LIBVA_LIBS"
311     AC_LINK_IFELSE(
312         [AC_LANG_PROGRAM(
313             [[#include <va_x11.h>]],
314             [[vaGetDisplay(NULL)]])],
315         [ac_cv_have_vaapi_old="yes"],
316         [ac_cv_have_vaapi_old="no"]
317     )
318     CFLAGS="$saved_CFLAGS"
319     LIBS="$saved_LIBS"
320 ])
321 if test "$ac_cv_have_vaapi_old" = "yes"; then
322     LIBVA_EXTRA_CFLAGS="$LIBVA_CFLAGS -DGST_VAAPI_USE_OLD_VAAPI_0_29"
323 fi
324
325 dnl ... VA-API >= 0.31 or -sds
326 LIBVA_X11_PKGNAME="libva-x11"
327 PKG_CHECK_MODULES(LIBVA_X11, [$LIBVA_X11_PKGNAME],
328     [ac_cv_have_vaapi_x11="yes"],
329     [ac_cv_have_vaapi_x11="no"]
330 )
331 if test "$ac_cv_have_vaapi_x11" = "no"; then
332     if test "$ac_cv_have_vaapi_old" = "yes"; then
333         LIBVA_X11_PKGNAME="libva"
334         CFLAGS="$CFLAGS $LIBVA_EXTRA_CFLAGS"
335         LIBS="$LIBS $LIBVA_EXTRA_LIBS"
336     else
337         AC_MSG_ERROR([could not find VA-API])
338     fi
339 fi
340 AC_SUBST(LIBVA_X11_PKGNAME)
341
342 dnl ... VA-API >= 0.31 or -sds (VA/GLX extensions)
343 USE_VAAPI_GLX=0
344 if test $USE_GLX -eq 1; then
345     if test "$enable_vaapi_glx" = "yes"; then
346         LIBVA_GLX_PKGNAME="libva-glx"
347         PKG_CHECK_MODULES(LIBVA_GLX, [$LIBVA_GLX_PKGNAME],
348             [ac_cv_have_vaapi_glx="yes" USE_VAAPI_GLX=1],
349             [ac_cv_have_vaapi_glx="no"]
350         )
351     fi
352     if test $USE_VAAPI_GLX -eq 0; then
353         AC_MSG_WARN([VA/GLX not found or disabled. Fallbacking to TFP+FBO])
354         LIBVA_GLX_PKGNAME="$LIBVA_X11_PKGNAME"
355     fi
356 fi
357 AC_SUBST(LIBVA_GLX_PKGNAME)
358
359 AC_SUBST(LIBVA_EXTRA_CFLAGS)
360 AC_SUBST(LIBVA_EXTRA_LIBS)
361
362 dnl Check for JPEG decoding API (0.33+)
363 USE_JPEG_DECODER=0
364 AC_CACHE_CHECK([for JPEG decoding API],
365     ac_cv_have_jpeg_decoding_api, [
366     saved_CFLAGS="$CFLAGS"
367     CFLAGS="$CFLAGS $LIBVA_CFLAGS"
368     saved_LIBS="$LIBS"
369     LIBS="$CFLAGS $LIBVA_LIBS"
370     AC_COMPILE_IFELSE(
371         [AC_LANG_PROGRAM(
372             [[#include <va/va.h>
373               #include <va/va_dec_jpeg.h>]],
374             [[VAPictureParameterBufferJPEG pic_param;
375               VASliceParameterBufferJPEG slice_param;
376               VAHuffmanTableBufferJPEG huffman_table;
377               VAIQMatrixBufferJPEG iq_matrix;]])],
378         [ac_cv_have_jpeg_decoding_api="yes" USE_JPEG_DECODER=1],
379         [ac_cv_have_jpeg_decoding_api="no"]
380     )
381     CFLAGS="$saved_CFLAGS"
382     LIBS="$saved_LIBS"
383 ])
384
385 dnl Check for OpenGL support to vaapisink
386 if test "$enable_vaapisink_glx:$USE_GLX" = "yes:1"; then
387     USE_VAAPISINK_GLX=1
388 else
389     USE_VAAPISINK_GLX=0
390 fi
391
392 dnl ---------------------------------------------------------------------------
393 dnl -- Generate files and summary                                            --
394 dnl ---------------------------------------------------------------------------
395
396 AC_DEFINE_UNQUOTED(USE_JPEG_DECODER, $USE_JPEG_DECODER,
397     [Defined to 1 if JPEG decoder is used])
398 AM_CONDITIONAL(USE_JPEG_DECODER, test $USE_JPEG_DECODER -eq 1)
399
400 AC_DEFINE_UNQUOTED(USE_GLX, $USE_GLX,
401     [Defined to 1 if GLX is enabled])
402 AM_CONDITIONAL(USE_GLX, test $USE_GLX -eq 1)
403
404 AC_DEFINE_UNQUOTED(USE_VAAPI_GLX, $USE_VAAPI_GLX,
405     [Defined to 1 if VA/GLX is enabled])
406 AM_CONDITIONAL(USE_VAAPI_GLX, test $USE_VAAPI_GLX -eq 1)
407
408 AC_DEFINE_UNQUOTED(USE_VAAPISINK_GLX, $USE_VAAPISINK_GLX,
409     [Defined to 1 to enable GLX support to vaapisink])
410 AM_CONDITIONAL(USE_VAAPISINK_GLX, test $USE_VAAPISINK_GLX -eq 1)
411
412 VA_VERSION=`$PKG_CONFIG --modversion libva`
413 VA_MAJOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f1`
414 VA_MINOR_VERSION=`echo "$VA_VERSION" | cut -d'.' -f2`
415 VA_MICRO_VERSION=`echo "$VA_VERSION" | cut -d'.' -f3`
416 VA_VERSION_STR="$VA_VERSION"
417
418 pkgconfigdir=${libdir}/pkgconfig
419 AC_SUBST(pkgconfigdir)
420
421 AC_CONFIG_FILES([
422     Makefile
423     debian.upstream/Makefile
424     debian.upstream/changelog
425     debian.upstream/control
426     debian.upstream/gstreamer$GST_MAJORMINOR-vaapi-doc.install:\
427 debian.upstream/gstreamer-vaapi-doc.install.in
428     debian.upstream/gstreamer$GST_MAJORMINOR-vaapi.install:\
429 debian.upstream/gstreamer-vaapi.install.in
430     debian.upstream/libgstvaapi$GST_VAAPI_MAJOR_VERSION.install:\
431 debian.upstream/libgstvaapi.install.in
432     debian.upstream/libgstvaapi-dev.install
433     debian.upstream/libgstvaapi-glx-$GST_VAAPI_MAJOR_VERSION.install:\
434 debian.upstream/libgstvaapi-glx.install.in
435     debian.upstream/libgstvaapi-x11-$GST_VAAPI_MAJOR_VERSION.install:\
436 debian.upstream/libgstvaapi-x11.install.in
437     docs/Makefile
438     docs/reference/Makefile
439     docs/reference/libs/Makefile
440     docs/reference/libs/libs-docs.xml
441     docs/reference/plugins/Makefile
442     docs/reference/plugins/plugins-docs.xml
443     gst-libs/Makefile
444     gst-libs/gst/Makefile
445     gst-libs/gst/codecparsers/Makefile
446     gst-libs/gst/vaapi/Makefile
447     gst/Makefile
448     gst/vaapi/Makefile
449     pkgconfig/Makefile
450     pkgconfig/gstreamer-vaapi-$GST_MAJORMINOR.pc:\
451 pkgconfig/gstreamer-vaapi.pc.in
452     pkgconfig/gstreamer-vaapi-glx-$GST_MAJORMINOR.pc:\
453 pkgconfig/gstreamer-vaapi-glx.pc.in
454     pkgconfig/gstreamer-vaapi-x11-$GST_MAJORMINOR.pc:\
455 pkgconfig/gstreamer-vaapi-x11.pc.in
456     tests/Makefile
457 ])
458 AC_OUTPUT
459
460 dnl Print summary
461 yesno() {
462     test $1 -eq 1 && echo yes || echo no
463 }
464
465 echo
466 echo $PACKAGE configuration summary:
467 echo
468 echo VA-API version ................... : $VA_VERSION_STR
469 echo GLX support ...................... : $(yesno $USE_GLX)
470 echo VA/GLX support ................... : $(yesno $USE_VAAPI_GLX)
471 echo VaapiSink/GL ..................... : $(yesno $USE_VAAPISINK_GLX)
472 echo