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.17.0.1,
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, 1700, 0, 1700)
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 *** checks for libraries ***
101 dnl check for libm, for sin()
105 dnl check for pthreads
108 dnl *** checks for header files ***
110 dnl check if we have ANSI C header files
113 dnl *** checks for types/defines ***
115 dnl *** checks for structures ***
117 dnl *** checks for compiler characteristics ***
119 dnl *** checks for library functions ***
121 dnl *** checks for dependancy libraries ***
126 AG_GST_GLIB_CHECK([$GLIB_REQ])
128 dnl checks for gstreamer
129 dnl uninstalled is selected preferentially -- see pkg-config(1)
130 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
131 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
132 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_PBREQ])
133 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
134 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
136 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
137 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
139 dnl Check for -Bsymbolic-functions linker flag used to avoid
140 dnl intra-library PLT jumps, if available.
141 AC_ARG_ENABLE(Bsymbolic,
142 [AS_HELP_STRING([--disable-Bsymbolic],[avoid linking with -Bsymbolic])],,
143 [SAVED_LDFLAGS="${LDFLAGS}" SAVED_LIBS="${LIBS}"
144 AC_MSG_CHECKING([for -Bsymbolic linker flag])
145 LDFLAGS=-Wl,-Bsymbolic
147 AC_TRY_LINK([], [return 0],
149 enable_Bsymbolic=yes,
152 LDFLAGS="${SAVED_LDFLAGS}" LIBS="${SAVED_LIBS}"])
154 dnl *** set variables based on configure arguments ***
156 dnl set location of plugin directory
159 dnl Detect if we are building static plugins, in which case we need to
160 dnl generates libav .la files and install the static libraries.
161 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static" = "xyes")
163 dnl define an ERROR_CFLAGS Makefile variable
164 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
165 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
166 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
167 -Winit-self -Wmissing-include-dirs -Waddress
168 -Waggregate-return -Wno-multichar -Wnested-externs ])
170 dnl define correct level for debugging messages
171 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
173 dnl disable strict aliasing
174 AS_COMPILER_FLAG([-fno-strict-aliasing], [EXTRA_CFLAGS="-fno-strict-aliasing"])
175 AC_SUBST(EXTRA_CFLAGS)
177 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
180 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
181 dnl GST_*: flags shared by built objects to link against GStreamer
182 dnl GST_ALL_LDFLAGS: linker flags shared by all
183 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
184 dnl GST_LT_LDFLAGS: library versioning of our libraries
185 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
187 dnl GST_OPTION_CFLAGS
188 if test "x$USE_DEBUG" = xyes; then
191 AC_SUBST(PROFILE_CFLAGS)
193 if test "x$GST_GIT" = "xyes"; then
194 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
198 AC_SUBST(DEPRECATED_CFLAGS)
200 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
201 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
203 AC_SUBST(GST_OPTION_CFLAGS)
205 dnl FIXME: do we want to rename to GST_ALL_* ?
206 dnl prefer internal headers to already installed ones
207 dnl also add builddir include for enumtypes and marshal
208 dnl add GST_OPTION_CFLAGS, but overridable
209 GST_CFLAGS="$GST_CFLAGS"
210 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $EXTRA_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
214 GST_ALL_LDFLAGS="-no-undefined"
215 if test "x${enable_Bsymbolic}" = "xyes"; then
216 GST_ALL_LDFLAGS="$GST_ALL_LDFLAGS -Wl,-Bsymbolic"
218 AC_SUBST(GST_ALL_LDFLAGS)
220 dnl this really should only contain flags, not libs - they get added before
221 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
222 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
223 AC_SUBST(GST_PLUGIN_LDFLAGS)
225 dnl Add MacOSX specific flags
229 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
235 AC_SUBST(DARWIN_LDFLAGS)
238 [AC_HELP_STRING([--enable-gpl], [build a GPL licensed gst-libav])])
239 AM_CONDITIONAL(GST_LIBAV_ENABLE_GPL, test "x$enable_gpl" = "xyes")
240 if test "x$enable_gpl" = "xyes"; then
241 AC_DEFINE([GST_LIBAV_ENABLE_GPL], [], [Defined if building a GPL-licensed version of gst-libav])
244 dnl *** configure external libs ***
246 HAVE_LIBAV_UNINSTALLED=1
248 AC_ARG_WITH(system-libav,
249 [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
253 if test "x$with_system_libav" = "xyes"; then
254 PKG_CHECK_MODULES(LIBAV, libavfilter libavformat libavcodec >= 58 libavutil)
255 saved_CPPFLAGS="$CPPFLAGS"
256 CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
257 AC_CHECK_HEADERS([avi.h])
258 AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
259 HAVE_LIBAV_UNINSTALLED=0
260 AC_MSG_NOTICE([Using system-installed libav code])
261 AC_MSG_CHECKING([whether libav is provided by FFmpeg])
262 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
263 #include <libavcodec/avcodec.h>
265 #if LIBAVCODEC_VERSION_MICRO >= 100
266 /* FFmpeg uses 100+ as its micro version */
268 #error libav provider should be FFmpeg
270 ]])], [is_ffmpeg=yes], [is_ffmpeg=no])
271 AC_MSG_RESULT([$is_ffmpeg])
272 CPPFLAGS="$saved_CPPFLAGS"
273 if test "$is_ffmpeg" = no; then
274 AC_MSG_ERROR([Uncompatible libavcodec found])
277 AC_MSG_NOTICE([Using local Libav snapshot])
279 dnl *** Check for bz2
282 AC_MSG_CHECKING([for BZ2_bzlibVersion in -lbz2])
283 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <bzlib.h>]], [[const char *version = BZ2_bzlibVersion ();]])],[HAVE_BZ2=yes],[HAVE_BZ2=no])
284 AC_MSG_RESULT($HAVE_BZ2)
286 if test "x$HAVE_BZ2" = "xno"; then
287 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
293 dnl *** Check for lzma
296 AC_MSG_CHECKING([for lzma_version_string in -llzma])
297 AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <lzma.h>]], [[const char *version = lzma_version_string ();]])],[HAVE_LZMA=yes],[HAVE_LZMA=no])
298 AC_MSG_RESULT($HAVE_LZMA)
300 if test "x$HAVE_LZMA" = "xno"; then
301 AC_WARN([lzma not found, tiff reader will not be able to read lzma files])
307 dnl libgstlibav.la: include dirs
308 LIBAV_CPPFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
309 -I \$(top_builddir)/gst-libs/ext/libav"
311 LIBAV_CFLAGS="-Wno-deprecated-declarations"
313 LIBAV_DEPS="\$(top_builddir)/gst-libs/ext/libav/libavfilter/libavfilter.a \
314 \$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
315 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
316 \$(top_builddir)/gst-libs/ext/libav/libswresample/libswresample.a \
317 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
319 LIBAV_LIBS="$ac_pwd/gst-libs/ext/libavfilter.la \
320 $ac_pwd/gst-libs/ext/libavformat.la \
321 $ac_pwd/gst-libs/ext/libavcodec.la \
322 $ac_pwd/gst-libs/ext/libswresample.la \
323 $ac_pwd/gst-libs/ext/libavutil.la"
325 LIBAV_SUBDIRS=gst-libs
326 AC_DEFINE(HAVE_AVI_H)
327 AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
329 AC_ARG_WITH(libav-extra-configure,
330 AC_HELP_STRING([--with-libav-extra-configure="xxx"],
331 [extra configure options for internal libav ./configure script]),,
335 emblibav_configure_args="--prefix=$prefix"
337 # Enable pic and static so that we get .a files, but with PIC code.
338 emblibav_configure_args="$emblibav_configure_args \
339 --enable-static --enable-pic \
340 --disable-avdevice --disable-postproc --disable-swscale \
341 --disable-programs --disable-ffplay --disable-ffprobe --disable-ffmpeg \
342 --disable-encoder=flac --disable-protocols --disable-devices \
343 --disable-network --disable-hwaccels --disable-dxva2 --disable-vdpau \
344 --disable-filters --enable-filter=yadif --disable-doc --disable-d3d11va \
345 --disable-audiotoolbox --disable-videotoolbox --disable-vaapi --disable-crystalhd \
346 --disable-mediacodec --disable-nvenc --disable-mmal --disable-omx \
347 --disable-omx-rpi --disable-cuda --disable-cuvid --disable-libmfx \
348 --disable-libnpp --disable-iconv --disable-jni --disable-v4l2_m2m --enable-optimizations"
350 if test "x$enable_gpl" == "xyes"; then
351 emblibav_configure_args="$emblibav_configure_args --enable-gpl"
354 # if we are cross-compiling, tell libav so
363 target_os=`echo $host_os | sed 's/-gnu.*//'`
367 if test "x$cross_compiling" = xyes; then
368 emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
369 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
374 WIN32_LIBS="-lws2_32 -lbcrypt"
381 if test x"$AR" != x; then
382 emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
385 if test x"$orig_AS" != x; then
386 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$orig_AS\\\""
388 elif test x"$CC" != x; then
389 dnl No external $AS - try $CC for the libav assembler
390 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$CC\\\""
393 if test x"$CC" != x; then
394 emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
397 if test x"$LD" != x; then
398 emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
401 if test x"$NM" != x; then
402 emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
405 dnl checks for extra enable/disable flags
406 LIBAV_OPTS=`cd $srcdir/gst-libs/ext/libav && ./configure --help`
407 # Let's check if we can disable the building of the libav binary
408 can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
409 if test "$can_disable" != ""; then
410 emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
413 # append extra configure options to emblibav_configure_args if needed
414 if test "x$with_libav_extra_configure" != "xno"; then
415 emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
418 AC_SUBST(LIBAV_CO_DIR)
420 AC_SUBST(LIBAV_REVISION)
421 AC_SUBST(LIBAV_EXTERNALS_REVISION)
422 AC_CONFIG_COMMANDS([configure-embedded-libav],
423 [echo "Configuring included Libav instance with args $emblibav_configure_args"
425 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
426 dnl to detect out-of-tree builds
427 if test -z "$srcdir" -o "$srcdir" = .; then
430 confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
432 gasppdir="$ac_abs_top_srcdir"/gst-libs/ext/gas-preprocessor
434 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
436 PATH="$gasppdir:$PATH"
437 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
438 eval "$confcmd $emblibav_configure_args" ||
439 AC_MSG_ERROR([Failed to configure embedded Libav tree])
443 [emblibav_configure_args="$emblibav_configure_args"])
444 AC_MSG_NOTICE([Using included Libav code])
447 AM_CONDITIONAL(HAVE_BZ2, test "x$HAVE_BZ2" = "xyes")
448 AM_CONDITIONAL(HAVE_LZMA, test "x$HAVE_LZMA" = "xyes")
450 AC_SUBST(LIBAV_CPPFLAGS)
451 AC_SUBST(LIBAV_CFLAGS)
454 AC_SUBST(LIBAV_SUBDIRS)
459 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
460 AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
462 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
471 gst-libs/ext/Makefile
476 pkgconfig/gstreamer-plugins-libav-uninstalled.pc