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.1.0.1,
7 http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
12 dnl initialize automake
13 AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar])
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 with automake >= 1.11
34 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],
35 [AM_DEFAULT_VERBOSITY=1
36 AC_SUBST(AM_DEFAULT_VERBOSITY)])
38 dnl our libraries and install dirs use major.minor as a version
39 GST_API_VERSION=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
40 dnl we override it here if we need to for the release candidate of new series
42 AC_SUBST(GST_API_VERSION)
44 AG_GST_LIBTOOL_PREPARE
45 AS_LIBTOOL(GST, 2, 0, 2)
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
66 AG_GST_ARG_WITH_PKG_CONFIG_PATH
67 AG_GST_ARG_WITH_PACKAGE_NAME
68 AG_GST_ARG_WITH_PACKAGE_ORIGIN
72 dnl *** checks for platform ***
74 dnl * hardware/architecture *
76 dnl common/m4/gst-arch.m4
80 dnl *** checks for programs ***
86 dnl check if the compiler supports '-c' and '-o' options
89 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
90 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
92 dnl check for documentation tools
96 AG_GST_PLUGIN_DOCS([1.3],[2.1])
98 dnl *** checks for libraries ***
100 dnl check for libm, for sin()
104 dnl *** checks for header files ***
106 dnl check if we have ANSI C header files
109 dnl *** checks for types/defines ***
111 dnl *** checks for structures ***
113 dnl *** checks for compiler characteristics ***
115 dnl *** checks for library functions ***
117 dnl *** checks for dependancy libraries ***
119 dnl checks for gstreamer
120 dnl uninstalled is selected preferentially -- see pkg-config(1)
121 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
122 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
123 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_PBREQ])
124 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
125 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
127 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
128 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
130 dnl *** set variables based on configure arguments ***
132 dnl set location of plugin directory
135 dnl define an ERROR_CFLAGS Makefile variable
136 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
137 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
138 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
139 -Winit-self -Wmissing-include-dirs -Waddress
140 -Waggregate-return -Wno-multichar -Wnested-externs ])
142 dnl define correct level for debugging messages
143 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
145 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
148 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
149 dnl GST_*: flags shared by built objects to link against GStreamer
150 dnl GST_ALL_LDFLAGS: linker flags shared by all
151 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
152 dnl GST_LT_LDFLAGS: library versioning of our libraries
153 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
155 dnl GST_OPTION_CFLAGS
156 if test "x$USE_DEBUG" = xyes; then
159 AC_SUBST(PROFILE_CFLAGS)
161 if test "x$GST_GIT" = "xyes"; then
162 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
166 AC_SUBST(DEPRECATED_CFLAGS)
168 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
169 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
171 AC_SUBST(GST_OPTION_CFLAGS)
173 dnl FIXME: do we want to rename to GST_ALL_* ?
174 dnl prefer internal headers to already installed ones
175 dnl also add builddir include for enumtypes and marshal
176 dnl add GST_OPTION_CFLAGS, but overridable
177 GST_CFLAGS="$GST_CFLAGS"
178 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
182 GST_ALL_LDFLAGS="-no-undefined"
183 AC_SUBST(GST_ALL_LDFLAGS)
185 dnl this really should only contain flags, not libs - they get added before
186 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
187 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
188 AC_SUBST(GST_PLUGIN_LDFLAGS)
190 dnl Add MacOSX specific flags
194 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
200 AC_SUBST(DARWIN_LDFLAGS)
202 dnl *** Check for bz2
203 AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzlibVersion, , bzlib.h, have_bz2=yes, have_bz2=no)
204 AM_CONDITIONAL(HAVE_BZ2, test "x$have_bz2" = "xyes")
205 if test "x$have_bz2" = "xno"; then
206 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
210 [AC_HELP_STRING([--enable-lgpl], [build a LGPL licensed gst-libav])])
211 AM_CONDITIONAL(GST_LIBAV_ENABLE_LGPL, test "x$enable_lgpl" = "xyes")
212 if test "x$enable_lgpl" = "xyes"; then
213 AC_DEFINE([GST_LIBAV_ENABLE_LGPL], [], [Defined if building a LGPL-only version of gst-libav])
216 dnl *** configure external libs ***
218 HAVE_LIBAV_UNINSTALLED=1
220 AC_ARG_WITH(system-libav,
221 [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
223 if test "x$with_system_libav" = "xyes"; then
224 PKG_CHECK_MODULES(LIBAV, libavformat libavcodec libavutil)
225 PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
226 saved_CPPFLAGS="$CPPFLAGS"
227 CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
228 AC_CHECK_HEADERS([avi.h])
229 CPPFLAGS="$saved_CPPFLAGS"
230 AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
231 HAVE_LIBAV_UNINSTALLED=0
232 AC_MSG_NOTICE([Using system-installed libav code])
234 ======================================================================
235 WARNING: you have chosen to build gst-libav against a random
236 external version of Libav instead of building it against the tested
237 internal Libav snapshot that is included with gst-libav.
239 This is a very bad idea. So bad in fact that words cannot express
240 just how bad it is. Suffice to say that it is BAD.
242 The GStreamer developers cannot and will not support a gst-libav
243 built this way. Any bug reports that indicate there is an external
244 version of Libav involved will be closed immediately without further
247 The reason such a setup can't be supported is that the Libav API
248 and ABI is in constant flux, yet there aren't any official releases
249 of the Libav library to develop against. This makes it impossible
250 to guarantee that gst-libav will work reliably, or even compile,
251 with a randomly picked version Libav. Even if gst-libav compiles
252 and superficially appears to work fine against your chosen external
253 Libav version, that might just not be the case on other systems, or
254 even the same system at a later time, or when using decoders,
255 encoders, demuxers or muxers that have not been tested.
257 Please do not create or distribute binary packages of gst-Libav
258 that link against an external libav. Thank you!
259 ======================================================================
262 dnl No, this is not too extreme, we want people to see and read the above
266 AC_MSG_NOTICE([Using local Libav snapshot])
268 dnl libgstlibav.la: include dirs
269 LIBAV_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
270 -I \$(top_builddir)/gst-libs/ext/libav \
271 -Wno-deprecated-declarations"
273 dnl libgstlibav.la: libs to statically link to
274 LIBAV_LIBS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
275 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
276 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
279 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
280 -I \$(top_builddir)/gst-libs/ext/libav \
281 -Wno-deprecated-declarations"
283 dnl libgstswscale.la: libs to statically link to
284 SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
285 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
287 LIBAV_SUBDIRS=gst-libs
288 AC_DEFINE(HAVE_AVI_H)
289 AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
291 AC_ARG_WITH(libav-extra-configure,
292 AC_HELP_STRING([--with-libav-extra-configure="xxx"],
293 [extra configure options for internal libav ./configure script]),,
297 emblibav_configure_args="--prefix=$prefix"
299 # Enable pic and static so that we get .a files, but with PIC code.
300 emblibav_configure_args="$emblibav_configure_args --disable-avserver --disable-avplay\
301 --disable-avconv --disable-avprobe --enable-static --enable-pic \
302 --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
303 --disable-network --disable-hwaccels --disable-filters --disable-doc\
304 --enable-optimizations"
306 if test "x$enable_lgpl" != "xyes"; then
307 emblibav_configure_args="$emblibav_configure_args --enable-gpl"
310 # if we are cross-compiling, tell libav so
316 target_os=`echo $host_os | sed 's/-gnu//'`
320 if test "x$cross_compiling" = xyes; then
321 emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
322 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
326 # Unfortunately, in Mac OS 10.5 the current rev of libav builds
327 # some non-PIC code into the .a file. See
328 # http://trac.macosforge.org/projects/macports/ticket/13725 for more
331 emblibav_configure_args="$emblibav_configure_args --disable-mmx --disable-altivec"
334 emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
335 WIN32_LIBS="-lws2_32"
342 if test x"$AR" != x; then
343 emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
346 if test x"$AS" != x; then
347 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$CC\\\""
350 if test x"$CC" != x; then
351 emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
354 if test x"$LD" != x; then
355 emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
358 if test x"$NM" != x; then
359 emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
362 dnl checks for extra enable/disable flags
363 LIBAV_OPTS=`cd $srcdir/gst-libs/ext/libav && ./configure --help`
364 # Let's check if we can disable the building of the libav binary
365 can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
366 if test "$can_disable" != ""; then
367 emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
369 dnl check if libswscale needs enabling explicitly
370 can_enable=`echo "$LIBAV_OPTS" | grep 'enable-swscale'`
371 if test "$can_enable" != ""; then
372 emblibav_configure_args="$emblibav_configure_args --enable-swscale"
375 # append extra configure options to emblibav_configure_args if needed
376 if test "x$with_libav_extra_configure" != "xno"; then
377 emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
380 AC_SUBST(LIBAV_CO_DIR)
382 AC_SUBST(LIBAV_REVISION)
383 AC_SUBST(LIBAV_EXTERNALS_REVISION)
384 AC_CONFIG_COMMANDS([configure-embedded-libav],
385 [echo "Configuring included Libav instance with args $emblibav_configure_args"
387 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
388 dnl to detect out-of-tree builds
389 if test -z "$srcdir" -o "$srcdir" = .; then
392 confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
395 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
396 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
397 eval "$confcmd $emblibav_configure_args" ||
398 AC_MSG_ERROR([Failed to configure embedded Libav tree])
401 [emblibav_configure_args="$emblibav_configure_args"])
402 AC_MSG_NOTICE([Using included Libav code])
405 AC_SUBST(LIBAV_CFLAGS)
407 AC_SUBST(LIBAV_SUBDIRS)
408 AC_SUBST(SWSCALE_CFLAGS)
409 AC_SUBST(SWSCALE_LIBS)
412 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
413 AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
415 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
424 ext/libswscale/Makefile
426 gst-libs/ext/Makefile
428 docs/version.entities
433 pkgconfig/gstreamer-plugins-libav-uninstalled.pc