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.0.0,
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 AM_CONFIG_HEADER([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, 0, 0, 0)
47 dnl *** required versions of GStreamer stuff ***
53 dnl *** autotools stuff ****
55 dnl allow for different autotools
56 AS_AUTOTOOLS_ALTERNATE
58 dnl Add parameters for aclocal
59 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
61 dnl *** check for arguments to configure ***
63 AG_GST_ARG_DISABLE_FATAL_WARNINGS
65 AG_GST_ARG_WITH_PKG_CONFIG_PATH
66 AG_GST_ARG_WITH_PACKAGE_NAME
67 AG_GST_ARG_WITH_PACKAGE_ORIGIN
70 dnl *** checks for platform ***
72 dnl * hardware/architecture *
74 dnl common/m4/gst-arch.m4
78 dnl *** checks for programs ***
84 dnl check if the compiler supports '-c' and '-o' options
87 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
88 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
90 dnl check for documentation tools
94 AG_GST_PLUGIN_DOCS([1.3],[2.1])
96 dnl *** checks for libraries ***
98 dnl check for libm, for sin()
102 dnl *** checks for header files ***
104 dnl check if we have ANSI C header files
107 dnl *** checks for types/defines ***
109 dnl *** checks for structures ***
111 dnl *** checks for compiler characteristics ***
113 dnl *** checks for library functions ***
115 dnl *** checks for dependancy libraries ***
117 dnl checks for gstreamer
118 dnl uninstalled is selected preferentially -- see pkg-config(1)
119 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
120 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
121 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_REQ])
122 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
123 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
125 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
126 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
128 dnl *** set variables based on configure arguments ***
130 dnl set location of plugin directory
133 dnl define an ERROR_CFLAGS Makefile variable
134 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
135 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
136 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
137 -Winit-self -Wmissing-include-dirs -Waddress
138 -Waggregate-return -Wno-multichar -Wnested-externs ])
140 dnl define correct level for debugging messages
141 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
143 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
146 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
147 dnl GST_*: flags shared by built objects to link against GStreamer
148 dnl GST_ALL_LDFLAGS: linker flags shared by all
149 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
150 dnl GST_LT_LDFLAGS: library versioning of our libraries
151 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
153 dnl GST_OPTION_CFLAGS
154 if test "x$USE_DEBUG" = xyes; then
157 AC_SUBST(PROFILE_CFLAGS)
159 if test "x$GST_GIT" = "xyes"; then
160 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
164 AC_SUBST(DEPRECATED_CFLAGS)
166 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
167 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
169 AC_SUBST(GST_OPTION_CFLAGS)
171 dnl FIXME: do we want to rename to GST_ALL_* ?
172 dnl prefer internal headers to already installed ones
173 dnl also add builddir include for enumtypes and marshal
174 dnl add GST_OPTION_CFLAGS, but overridable
175 GST_CFLAGS="$GST_CFLAGS"
176 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
180 GST_ALL_LDFLAGS="-no-undefined"
181 AC_SUBST(GST_ALL_LDFLAGS)
183 dnl this really should only contain flags, not libs - they get added before
184 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
185 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
186 AC_SUBST(GST_PLUGIN_LDFLAGS)
188 dnl Add MacOSX specific flags
192 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
198 AC_SUBST(DARWIN_LDFLAGS)
200 dnl *** Check for bz2
201 AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzlibVersion, , bzlib.h, have_bz2=yes, have_bz2=no)
202 AM_CONDITIONAL(HAVE_BZ2, test "x$have_bz2" = "xyes")
203 if test "x$have_bz2" = "xno"; then
204 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
208 [AC_HELP_STRING([--enable-lgpl], [build a LGPL licensed gst-libav])])
209 AM_CONDITIONAL(GST_LIBAV_ENABLE_LGPL, test "x$enable_lgpl" = "xyes")
210 if test "x$enable_lgpl" = "xyes"; then
211 AC_DEFINE([GST_LIBAV_ENABLE_LGPL], [], [Defined if building a LGPL-only version of gst-libav])
214 dnl *** configure external libs ***
216 HAVE_LIBAV_UNINSTALLED=1
218 AC_ARG_WITH(system-libav,
219 [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
221 if test "x$with_system_libav" = "xyes"; then
222 PKG_CHECK_MODULES(LIBAV, libavformat libavcodec libavutil)
223 PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
224 saved_CPPFLAGS="$CPPFLAGS"
225 CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
226 AC_CHECK_HEADERS([avi.h])
227 CPPFLAGS="$saved_CPPFLAGS"
228 AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
229 HAVE_LIBAV_UNINSTALLED=0
230 AC_MSG_NOTICE([Using system-installed libav code])
232 ======================================================================
233 WARNING: you have chosen to build gst-libav against a random
234 external version of Libav instead of building it against the tested
235 internal Libav snapshot that is included with gst-libav.
237 This is a very bad idea. So bad in fact that words cannot express
238 just how bad it is. Suffice to say that it is BAD.
240 The GStreamer developers cannot and will not support a gst-libav
241 built this way. Any bug reports that indicate there is an external
242 version of Libav involved will be closed immediately without further
245 The reason such a setup can't be supported is that the Libav API
246 and ABI is in constant flux, yet there aren't any official releases
247 of the Libav library to develop against. This makes it impossible
248 to guarantee that gst-libav will work reliably, or even compile,
249 with a randomly picked version Libav. Even if gst-libav compiles
250 and superficially appears to work fine against your chosen external
251 Libav version, that might just not be the case on other systems, or
252 even the same system at a later time, or when using decoders,
253 encoders, demuxers or muxers that have not been tested.
255 Please do not create or distribute binary packages of gst-Libav
256 that link against an external libav. Thank you!
257 ======================================================================
260 dnl No, this is not too extreme, we want people to see and read the above
264 AC_MSG_NOTICE([Using local Libav snapshot])
266 dnl libgstlibav.la: include dirs
267 LIBAV_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
268 -I \$(top_builddir)/gst-libs/ext/libav \
269 -Wno-deprecated-declarations"
271 dnl libgstlibav.la: libs to statically link to
272 LIBAV_LIBS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
273 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
274 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
277 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
278 -I \$(top_builddir)/gst-libs/ext/libav \
279 -Wno-deprecated-declarations"
281 dnl libgstswscale.la: libs to statically link to
282 SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
283 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
285 LIBAV_SUBDIRS=gst-libs
286 AC_DEFINE(HAVE_AVI_H)
287 AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
289 AC_ARG_WITH(libav-extra-configure,
290 AC_HELP_STRING([--with-libav-extra-configure="xxx"],
291 [extra configure options for internal libav ./configure script]),,
295 emblibav_configure_args="--prefix=$prefix"
297 # Enable pic and static so that we get .a files, but with PIC code.
298 emblibav_configure_args="$emblibav_configure_args --disable-avserver --disable-avplay\
299 --disable-avconv --disable-avprobe --enable-static --enable-pic \
300 --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
301 --disable-network --disable-hwaccels --disable-filters --disable-doc\
302 --enable-optimizations"
304 if test "x$enable_lgpl" != "xyes"; then
305 emblibav_configure_args="$emblibav_configure_args --enable-gpl"
308 # if we are cross-compiling, tell libav so
309 target_os=`echo $host_os | sed 's/-gnu//'`
310 if test "x$cross_compiling" = xyes; then
311 emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
312 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
316 # Unfortunately, in Mac OS 10.5 the current rev of libav builds
317 # some non-PIC code into the .a file. See
318 # http://trac.macosforge.org/projects/macports/ticket/13725 for more
321 emblibav_configure_args="$emblibav_configure_args --disable-mmx --disable-altivec"
324 emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
325 WIN32_LIBS="-lws2_32"
332 dnl checks for extra enable/disable flags
333 LIBAV_OPTS="(cd $srcdir/gst-libs/ext/libav && ./configure --help)"
334 # Let's check if we can disable the building of the libav binary
335 can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
336 if test "$can_disable" != ""; then
337 emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
339 dnl check if libswscale needs enabling explicitly
340 can_enable=`echo "$LIBAV_OPTS" | grep 'enable-swscale'`
341 if test "$can_enable" != ""; then
342 emblibav_configure_args="$emblibav_configure_args --enable-swscale"
345 # append extra configure options to emblibav_configure_args if needed
346 if test "x$with_libav_extra_configure" != "xno"; then
347 emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
350 AC_SUBST(LIBAV_CO_DIR)
352 AC_SUBST(LIBAV_REVISION)
353 AC_SUBST(LIBAV_EXTERNALS_REVISION)
354 AC_CONFIG_COMMANDS([configure-embedded-libav],
355 [echo "Configuring included Libav instance with args $emblibav_configure_args"
357 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
358 dnl to detect out-of-tree builds
359 if test -z "$srcdir" -o "$srcdir" = .; then
362 confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
365 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
366 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
367 eval "$confcmd $emblibav_configure_args" ||
368 AC_MSG_ERROR([Failed to configure embedded Libav tree])
371 [emblibav_configure_args="$emblibav_configure_args"])
372 AC_MSG_NOTICE([Using included Libav code])
375 AC_SUBST(LIBAV_CFLAGS)
377 AC_SUBST(LIBAV_SUBDIRS)
378 AC_SUBST(SWSCALE_CFLAGS)
379 AC_SUBST(SWSCALE_LIBS)
382 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
383 AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
385 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
394 ext/libswscale/Makefile
396 gst-libs/ext/Makefile
398 docs/version.entities