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.16.2,
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, 1602, 0, 1602)
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
83 dnl check for large file support
84 dnl affected plugins must include config.h
87 dnl *** checks for programs ***
93 dnl check if the compiler supports '-c' and '-o' options
96 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
97 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
99 dnl check for documentation tools
100 GTK_DOC_CHECK([1.12])
101 AG_GST_PLUGIN_DOCS([1.12])
103 dnl *** checks for libraries ***
105 dnl check for libm, for sin()
109 dnl check for pthreads
112 dnl *** checks for header files ***
114 dnl check if we have ANSI C header files
117 dnl *** checks for types/defines ***
119 dnl *** checks for structures ***
121 dnl *** checks for compiler characteristics ***
123 dnl *** checks for library functions ***
125 dnl *** checks for dependancy libraries ***
130 AG_GST_GLIB_CHECK([$GLIB_REQ])
132 dnl checks for gstreamer
133 dnl uninstalled is selected preferentially -- see pkg-config(1)
134 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
135 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
136 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_PBREQ])
137 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
138 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
140 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
141 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
143 dnl Check for -Bsymbolic-functions linker flag used to avoid
144 dnl intra-library PLT jumps, if available.
145 AC_ARG_ENABLE(Bsymbolic,
146 [AS_HELP_STRING([--disable-Bsymbolic],[avoid linking with -Bsymbolic])],,
147 [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
148 AC_MSG_CHECKING([for -Bsymbolic linker flag])
149 LDFLAGS=-Wl,-Bsymbolic
151 AC_TRY_LINK([], [return 0],
153 enable_Bsymbolic=yes,
156 LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
158 dnl *** set variables based on configure arguments ***
160 dnl set location of plugin directory
163 dnl Detect if we are building static plugins, in which case we need to
164 dnl generates libav .la files and install the static libraries.
165 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static" = "xyes")
167 dnl define an ERROR_CFLAGS Makefile variable
168 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
169 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
170 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
171 -Winit-self -Wmissing-include-dirs -Waddress
172 -Waggregate-return -Wno-multichar -Wnested-externs ])
174 dnl define correct level for debugging messages
175 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
177 dnl disable strict aliasing
178 AS_COMPILER_FLAG([-fno-strict-aliasing], [EXTRA_CFLAGS="-fno-strict-aliasing"])
179 AC_SUBST(EXTRA_CFLAGS)
181 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
184 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
185 dnl GST_*: flags shared by built objects to link against GStreamer
186 dnl GST_ALL_LDFLAGS: linker flags shared by all
187 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
188 dnl GST_LT_LDFLAGS: library versioning of our libraries
189 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
191 dnl GST_OPTION_CFLAGS
192 if test "x$USE_DEBUG" = xyes; then
195 AC_SUBST(PROFILE_CFLAGS)
197 if test "x$GST_GIT" = "xyes"; then
198 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
202 AC_SUBST(DEPRECATED_CFLAGS)
204 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
205 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
207 AC_SUBST(GST_OPTION_CFLAGS)
209 dnl FIXME: do we want to rename to GST_ALL_* ?
210 dnl prefer internal headers to already installed ones
211 dnl also add builddir include for enumtypes and marshal
212 dnl add GST_OPTION_CFLAGS, but overridable
213 GST_CFLAGS="$GST_CFLAGS"
214 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
218 GST_ALL_LDFLAGS="-no-undefined"
219 if test "x${enable_Bsymbolic}" = "xyes"; then
220 GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic"
222 AC_SUBST(GST_ALL_LDFLAGS)
224 dnl this really should only contain flags, not libs - they get added before
225 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
226 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
227 AC_SUBST(GST_PLUGIN_LDFLAGS)
229 dnl Add MacOSX specific flags
233 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
239 AC_SUBST(DARWIN_LDFLAGS)
242 [AC_HELP_STRING([--enable-gpl], [build a GPL licensed gst-libav])])
243 AM_CONDITIONAL(GST_LIBAV_ENABLE_GPL, test "x$enable_gpl" = "xyes")
244 if test "x$enable_gpl" = "xyes"; then
245 AC_DEFINE([GST_LIBAV_ENABLE_GPL], [], [Defined if building a GPL-licensed version of gst-libav])
248 dnl *** configure external libs ***
250 HAVE_LIBAV_UNINSTALLED=1
252 AC_ARG_WITH(system-libav,
253 [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
257 if test "x$with_system_libav" = "xyes"; then
258 PKG_CHECK_MODULES(LIBAV, libavfilter libavformat libavcodec >= 58 libavutil)
259 saved_CPPFLAGS="$CPPFLAGS"
260 CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
261 AC_CHECK_HEADERS([avi.h])
262 AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
263 HAVE_LIBAV_UNINSTALLED=0
264 AC_MSG_NOTICE([Using system-installed libav code])
265 AC_MSG_CHECKING([whether libav is provided by FFmpeg])
266 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
267 #include <libavcodec/avcodec.h>
269 #if LIBAVCODEC_VERSION_MICRO >= 100
270 /* FFmpeg uses 100+ as its micro version */
272 #error libav provider should be FFmpeg
274 ]])], [is_ffmpeg=yes], [is_ffmpeg=no])
275 AC_MSG_RESULT([$is_ffmpeg])
276 CPPFLAGS="$saved_CPPFLAGS"
277 if test "$is_ffmpeg" = no; then
278 AC_MSG_ERROR([Uncompatible libavcodec found])
281 AC_MSG_NOTICE([Using local Libav snapshot])
283 dnl *** Check for bz2
286 AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
287 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
288 AC_MSG_RESULT($HAVE_BZ2)
290 if test "x$HAVE_BZ2" = "xno"; then
291 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
297 dnl *** Check for lzma
300 AC_MSG_CHECKING([for lzma_version_string in -llzma])
301 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <lzma.h>]], [[const char *version = lzma_version_string ();]])],[HAVE_LZMA=yes],[HAVE_LZMA=no])
302 AC_MSG_RESULT($HAVE_LZMA)
304 if test "x$HAVE_LZMA" = "xno"; then
305 AC_WARN([lzma not found, tiff reader will not be able to read lzma files])
311 dnl libgstlibav.la: include dirs
312 LIBAV_CPPFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
313 -I \$(top_builddir)/gst-libs/ext/libav"
315 LIBAV_CFLAGS="-Wno-deprecated-declarations"
317 LIBAV_DEPS="\$(top_builddir)/gst-libs/ext/libav/libavfilter/libavfilter.a \
318 \$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
319 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
320 \$(top_builddir)/gst-libs/ext/libav/libswresample/libswresample.a \
321 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
323 LIBAV_LIBS="$ac_pwd/gst-libs/ext/libavfilter.la \
324 $ac_pwd/gst-libs/ext/libavformat.la \
325 $ac_pwd/gst-libs/ext/libavcodec.la \
326 $ac_pwd/gst-libs/ext/libswresample.la \
327 $ac_pwd/gst-libs/ext/libavutil.la"
329 LIBAV_SUBDIRS=gst-libs
330 AC_DEFINE(HAVE_AVI_H)
331 AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
333 AC_ARG_WITH(libav-extra-configure,
334 AC_HELP_STRING([--with-libav-extra-configure="xxx"],
335 [extra configure options for internal libav ./configure script]),,
339 emblibav_configure_args="--prefix=$prefix"
341 # Enable pic and static so that we get .a files, but with PIC code.
342 emblibav_configure_args="$emblibav_configure_args \
343 --enable-static --enable-pic \
344 --disable-avdevice --disable-postproc --disable-swscale \
345 --disable-programs --disable-ffplay --disable-ffprobe --disable-ffmpeg \
346 --disable-encoder=flac --disable-protocols --disable-devices \
347 --disable-network --disable-hwaccels --disable-dxva2 --disable-vdpau \
348 --disable-filters --enable-filter=yadif --disable-doc --disable-d3d11va \
349 --disable-audiotoolbox --disable-videotoolbox --disable-vaapi --disable-crystalhd \
350 --disable-mediacodec --disable-nvenc --disable-mmal --disable-omx \
351 --disable-omx-rpi --disable-cuda --disable-cuvid --disable-libmfx \
352 --disable-libnpp --disable-iconv --disable-jni --disable-v4l2_m2m --enable-optimizations"
354 if test "x$enable_gpl" == "xyes"; then
355 emblibav_configure_args="$emblibav_configure_args --enable-gpl"
358 # if we are cross-compiling, tell libav so
367 target_os=`echo $host_os | sed 's/-gnu.*//'`
371 if test "x$cross_compiling" = xyes; then
372 emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
373 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
378 WIN32_LIBS="-lws2_32 -lbcrypt"
385 if test x"$AR" != x; then
386 emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
389 if test x"$orig_AS" != x; then
390 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$orig_AS\\\""
392 elif test x"$CC" != x; then
393 dnl No external $AS - try $CC for the libav assembler
394 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$CC\\\""
397 if test x"$CC" != x; then
398 emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
401 if test x"$LD" != x; then
402 emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
405 if test x"$NM" != x; then
406 emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
409 dnl checks for extra enable/disable flags
410 LIBAV_OPTS=`cd $srcdir/gst-libs/ext/libav && ./configure --help`
411 # Let's check if we can disable the building of the libav binary
412 can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
413 if test "$can_disable" != ""; then
414 emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
417 # append extra configure options to emblibav_configure_args if needed
418 if test "x$with_libav_extra_configure" != "xno"; then
419 emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
422 AC_SUBST(LIBAV_CO_DIR)
424 AC_SUBST(LIBAV_REVISION)
425 AC_SUBST(LIBAV_EXTERNALS_REVISION)
426 AC_CONFIG_COMMANDS([configure-embedded-libav],
427 [echo "Configuring included Libav instance with args $emblibav_configure_args"
429 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
430 dnl to detect out-of-tree builds
431 if test -z "$srcdir" -o "$srcdir" = .; then
434 confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
436 gasppdir="$ac_abs_top_srcdir"/gst-libs/ext/gas-preprocessor
438 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
440 PATH="$gasppdir:$PATH"
441 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
442 eval "$confcmd $emblibav_configure_args" ||
443 AC_MSG_ERROR([Failed to configure embedded Libav tree])
447 [emblibav_configure_args="$emblibav_configure_args"])
448 AC_MSG_NOTICE([Using included Libav code])
451 AM_CONDITIONAL(HAVE_BZ2, test "x$HAVE_BZ2" = "xyes")
452 AM_CONDITIONAL(HAVE_LZMA, test "x$HAVE_LZMA" = "xyes")
454 AC_SUBST(LIBAV_CPPFLAGS)
455 AC_SUBST(LIBAV_CFLAGS)
458 AC_SUBST(LIBAV_SUBDIRS)
463 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
464 AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
466 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
475 gst-libs/ext/Makefile
477 docs/plugins/Makefile
478 docs/version.entities
483 pkgconfig/gstreamer-plugins-libav-uninstalled.pc