3 dnl initialize autoconf
4 dnl when going to/from release please set the nano (fourth number) right !
5 dnl releases only do Wall, cvs and prerelease does Werror too
6 AC_INIT(GStreamer libav, 1.13.90,
7 http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
12 dnl initialize automake
13 AM_INIT_AUTOMAKE([-Wno-portability 1.14 no-dist-gzip dist-xz tar-ustar subdir-objects])
15 dnl define PACKAGE_VERSION_* variables
18 dnl check if this is a release version
19 AS_NANO(GST_GIT="no", GST_GIT="yes")
21 dnl can autoconf find the source ?
22 AC_CONFIG_SRCDIR([ext/libav/gstav.c])
24 dnl define the output header for config
25 AC_CONFIG_HEADERS([config.h])
27 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
28 AM_MAINTAINER_MODE([enable])
30 dnl sets host_* variables
33 dnl use pretty build output by default
34 AM_SILENT_RULES([yes])
36 dnl our libraries and install dirs use major.minor as a version
37 GST_API_VERSION=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
38 dnl we override it here if we need to for the release candidate of new series
40 AC_SUBST(GST_API_VERSION)
42 dnl *** Check for external $AS vs detected by AS_LIBTOOL
44 AG_GST_LIBTOOL_PREPARE
45 AS_LIBTOOL(GST, 1390, 0, 1390)
47 dnl *** required versions of GStreamer stuff ***
54 dnl *** autotools stuff ****
56 dnl allow for different autotools
57 AS_AUTOTOOLS_ALTERNATE
59 dnl Add parameters for aclocal
60 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
62 dnl *** check for arguments to configure ***
64 AG_GST_ARG_DISABLE_FATAL_WARNINGS
65 AG_GST_ARG_ENABLE_EXTRA_CHECKS
67 AG_GST_ARG_WITH_PKG_CONFIG_PATH
68 AG_GST_ARG_WITH_PACKAGE_NAME
69 AG_GST_ARG_WITH_PACKAGE_ORIGIN
73 dnl *** checks for platform ***
75 dnl * hardware/architecture *
77 dnl common/m4/gst-arch.m4
81 dnl *** checks for programs ***
87 dnl check if the compiler supports '-c' and '-o' options
90 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
91 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
93 dnl check for documentation tools
95 AG_GST_PLUGIN_DOCS([1.12])
97 dnl *** checks for libraries ***
99 dnl check for libm, for sin()
103 dnl check for pthreads
106 dnl *** checks for header files ***
108 dnl check if we have ANSI C header files
111 dnl *** checks for types/defines ***
113 dnl *** checks for structures ***
115 dnl *** checks for compiler characteristics ***
117 dnl *** checks for library functions ***
119 dnl *** checks for dependancy libraries ***
124 AG_GST_GLIB_CHECK([$GLIB_REQ])
126 dnl checks for gstreamer
127 dnl uninstalled is selected preferentially -- see pkg-config(1)
128 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
129 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
130 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_PBREQ])
131 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
132 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
134 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
135 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
137 dnl Check for -Bsymbolic-functions linker flag used to avoid
138 dnl intra-library PLT jumps, if available.
139 AC_ARG_ENABLE(Bsymbolic,
140 [AS_HELP_STRING([--disable-Bsymbolic],[avoid linking with -Bsymbolic])],,
141 [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
142 AC_MSG_CHECKING([for -Bsymbolic linker flag])
143 LDFLAGS=-Wl,-Bsymbolic
145 AC_TRY_LINK([], [return 0],
147 enable_Bsymbolic=yes,
150 LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
152 dnl *** set variables based on configure arguments ***
154 dnl set location of plugin directory
157 dnl Detect if we are building static plugins, in which case we need to
158 dnl generates libav .la files and install the static libraries.
159 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static" = "xyes")
161 dnl define an ERROR_CFLAGS Makefile variable
162 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
163 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
164 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
165 -Winit-self -Wmissing-include-dirs -Waddress
166 -Waggregate-return -Wno-multichar -Wnested-externs ])
168 dnl define correct level for debugging messages
169 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
171 dnl disable strict aliasing
172 AS_COMPILER_FLAG([-fno-strict-aliasing], [EXTRA_CFLAGS="-fno-strict-aliasing"])
173 AC_SUBST(EXTRA_CFLAGS)
175 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
178 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
179 dnl GST_*: flags shared by built objects to link against GStreamer
180 dnl GST_ALL_LDFLAGS: linker flags shared by all
181 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
182 dnl GST_LT_LDFLAGS: library versioning of our libraries
183 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
185 dnl GST_OPTION_CFLAGS
186 if test "x$USE_DEBUG" = xyes; then
189 AC_SUBST(PROFILE_CFLAGS)
191 if test "x$GST_GIT" = "xyes"; then
192 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
196 AC_SUBST(DEPRECATED_CFLAGS)
198 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
199 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
201 AC_SUBST(GST_OPTION_CFLAGS)
203 dnl FIXME: do we want to rename to GST_ALL_* ?
204 dnl prefer internal headers to already installed ones
205 dnl also add builddir include for enumtypes and marshal
206 dnl add GST_OPTION_CFLAGS, but overridable
207 GST_CFLAGS="$GST_CFLAGS"
208 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
212 GST_ALL_LDFLAGS="-no-undefined"
213 if test "x${enable_Bsymbolic}" = "xyes"; then
214 GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic"
216 AC_SUBST(GST_ALL_LDFLAGS)
218 dnl this really should only contain flags, not libs - they get added before
219 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
220 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
221 AC_SUBST(GST_PLUGIN_LDFLAGS)
223 dnl Add MacOSX specific flags
227 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
233 AC_SUBST(DARWIN_LDFLAGS)
236 [AC_HELP_STRING([--enable-gpl], [build a GPL licensed gst-libav])])
237 AM_CONDITIONAL(GST_LIBAV_ENABLE_GPL, test "x$enable_gpl" = "xyes")
238 if test "x$enable_gpl" = "xyes"; then
239 AC_DEFINE([GST_LIBAV_ENABLE_GPL], [], [Defined if building a GPL-licensed version of gst-libav])
242 dnl *** configure external libs ***
244 HAVE_LIBAV_UNINSTALLED=1
246 AC_ARG_WITH(system-libav,
247 [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
251 if test "x$with_system_libav" = "xyes"; then
252 PKG_CHECK_MODULES(LIBAV, libavfilter libavformat libavcodec >= 57 libavutil)
253 PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
254 saved_CPPFLAGS="$CPPFLAGS"
255 CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
256 AC_CHECK_HEADERS([avi.h])
257 AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
258 HAVE_LIBAV_UNINSTALLED=0
259 AC_MSG_NOTICE([Using system-installed libav code])
260 AC_MSG_CHECKING([whether libav is provided by FFmpeg])
261 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
262 #include <libavcodec/avcodec.h>
264 #if LIBAVCODEC_VERSION_MICRO >= 100
265 /* FFmpeg uses 100+ as its micro version */
267 #error libav provider should be FFmpeg
269 ]])], [is_ffmpeg=yes], [is_ffmpeg=no])
270 AC_MSG_RESULT([$is_ffmpeg])
271 CPPFLAGS="$saved_CPPFLAGS"
272 if test "$is_ffmpeg" = no; then
273 AC_MSG_ERROR([Uncompatible libavcodec found])
276 AC_MSG_NOTICE([Using local Libav snapshot])
278 dnl *** Check for bz2
281 AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
282 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
283 AC_MSG_RESULT($HAVE_BZ2)
285 if test "x$HAVE_BZ2" = "xno"; then
286 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
292 dnl *** Check for lzma
295 AC_MSG_CHECKING([for lzma_version_string in -llzma])
296 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <lzma.h>]], [[const char *version = lzma_version_string ();]])],[HAVE_LZMA=yes],[HAVE_LZMA=no])
297 AC_MSG_RESULT($HAVE_LZMA)
299 if test "x$HAVE_LZMA" = "xno"; then
300 AC_WARN([lzma not found, tiff reader will not be able to read lzma files])
306 dnl libgstlibav.la: include dirs
307 LIBAV_CPPFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
308 -I \$(top_builddir)/gst-libs/ext/libav"
310 LIBAV_CFLAGS="-Wno-deprecated-declarations"
312 LIBAV_DEPS="\$(top_builddir)/gst-libs/ext/libav/libavfilter/libavfilter.a \
313 \$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
314 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
315 \$(top_builddir)/gst-libs/ext/libav/libswresample/libswresample.a \
316 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
318 LIBAV_LIBS="$ac_pwd/gst-libs/ext/libavfilter.la \
319 $ac_pwd/gst-libs/ext/libavformat.la \
320 $ac_pwd/gst-libs/ext/libavcodec.la \
321 $ac_pwd/gst-libs/ext/libswresample.la \
322 $ac_pwd/gst-libs/ext/libavutil.la"
325 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
326 -I \$(top_builddir)/gst-libs/ext/libav \
327 -Wno-deprecated-declarations"
329 SWSCALE_DEPS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
330 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
331 if test "x$enable_static_plugins" = xyes; then
332 dnl with static linking we can't use the .a archive directly as they would
333 dnl be included in the final libgstswscale.a as a file and won't be usable.
334 dnl libav*.a must be copied to the final destination too
335 SWSCALE_LIBS="-lswscale -lavutil"
337 dnl libgstswscale.la: libs to statically link to
338 SWSCALE_LIBS="$SWSCALE_DEPS"
341 LIBAV_SUBDIRS=gst-libs
342 AC_DEFINE(HAVE_AVI_H)
343 AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
345 AC_ARG_WITH(libav-extra-configure,
346 AC_HELP_STRING([--with-libav-extra-configure="xxx"],
347 [extra configure options for internal libav ./configure script]),,
351 emblibav_configure_args="--prefix=$prefix"
353 # Enable pic and static so that we get .a files, but with PIC code.
354 emblibav_configure_args="$emblibav_configure_args \
355 --enable-static --enable-pic \
356 --disable-avdevice --disable-postproc \
357 --disable-programs --disable-ffserver --disable-ffplay --disable-ffprobe --disable-ffmpeg \
358 --disable-encoder=flac --disable-protocols --disable-devices \
359 --disable-network --disable-hwaccels --disable-dxva2 --disable-vdpau \
360 --disable-filters --enable-filter=yadif --disable-doc --disable-vda --disable-d3d11va --disable-dxva2 \
361 --disable-audiotoolbox --disable-videotoolbox --disable-vaapi --disable-crystalhd \
362 --disable-mediacodec --disable-nvenc --disable-mmal --disable-omx \
363 --disable-omx-rpi --disable-cuda --disable-cuvid --disable-libmfx \
364 --disable-libnpp --disable-iconv --disable-jni --disable-v4l2_m2m --enable-optimizations"
366 if test "x$enable_gpl" == "xyes"; then
367 emblibav_configure_args="$emblibav_configure_args --enable-gpl"
370 # if we are cross-compiling, tell libav so
379 target_os=`echo $host_os | sed 's/-gnu.*//'`
383 if test "x$cross_compiling" = xyes; then
384 emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
385 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
390 WIN32_LIBS="-lws2_32"
397 if test x"$AR" != x; then
398 emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
401 if test x"$orig_AS" != x; then
402 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$orig_AS\\\""
403 elif test x"$CC" != x; then
404 dnl No external $AS - try $CC for the libav assembler
405 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$CC\\\""
408 if test x"$CC" != x; then
409 emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
412 if test x"$LD" != x; then
413 emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
416 if test x"$NM" != x; then
417 emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
420 dnl checks for extra enable/disable flags
421 LIBAV_OPTS=`cd $srcdir/gst-libs/ext/libav && ./configure --help`
422 # Let's check if we can disable the building of the libav binary
423 can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
424 if test "$can_disable" != ""; then
425 emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
427 dnl check if libswscale needs enabling explicitly
428 can_enable=`echo "$LIBAV_OPTS" | grep 'enable-swscale'`
429 if test "$can_enable" != ""; then
430 emblibav_configure_args="$emblibav_configure_args --enable-swscale"
433 # append extra configure options to emblibav_configure_args if needed
434 if test "x$with_libav_extra_configure" != "xno"; then
435 emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
438 AC_SUBST(LIBAV_CO_DIR)
440 AC_SUBST(LIBAV_REVISION)
441 AC_SUBST(LIBAV_EXTERNALS_REVISION)
442 AC_CONFIG_COMMANDS([configure-embedded-libav],
443 [echo "Configuring included Libav instance with args $emblibav_configure_args"
445 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
446 dnl to detect out-of-tree builds
447 if test -z "$srcdir" -o "$srcdir" = .; then
449 gasppdir=../gas-preprocessor
451 confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
452 gasppdir="$ac_abs_top_srcdir"/gst-libs/ext/gas-preprocessor
455 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
457 PATH="$gasppdir:$PATH"
458 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
459 eval "$confcmd $emblibav_configure_args" ||
460 AC_MSG_ERROR([Failed to configure embedded Libav tree])
464 [emblibav_configure_args="$emblibav_configure_args"])
465 AC_MSG_NOTICE([Using included Libav code])
468 AM_CONDITIONAL(HAVE_BZ2, test "x$HAVE_BZ2" = "xyes")
469 AM_CONDITIONAL(HAVE_LZMA, test "x$HAVE_LZMA" = "xyes")
471 AC_SUBST(LIBAV_CPPFLAGS)
472 AC_SUBST(LIBAV_CFLAGS)
475 AC_SUBST(LIBAV_SUBDIRS)
476 AC_SUBST(SWSCALE_CFLAGS)
477 AC_SUBST(SWSCALE_DEPS)
478 AC_SUBST(SWSCALE_LIBS)
483 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
484 AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
486 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
494 ext/libswscale/Makefile
496 gst-libs/ext/Makefile
498 docs/plugins/Makefile
499 docs/version.entities
504 pkgconfig/gstreamer-plugins-libav-uninstalled.pc