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.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, 101, 0, 101)
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 build static plugins or not
136 AC_MSG_CHECKING([whether to build static plugins or not])
140 [--enable-static-plugins],
141 [build static plugins @<:@default=no@:>@]),
143 [$enableval], [no], [], [yes], [],
144 [AC_MSG_ERROR([bad value "$enableval" for --enable-static-plugins])])],
145 [enable_static_plugins=no])
146 AC_MSG_RESULT([$enable_static_plugins])
147 if test "x$enable_static_plugins" = xyes; then
148 AC_DEFINE(GST_PLUGIN_BUILD_STATIC, 1,
149 [Define if static plugins should be built])
150 GST_PLUGIN_LIBTOOLFLAGS=""
152 GST_PLUGIN_LIBTOOLFLAGS="--tag=disable-static"
154 AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
155 AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")
157 dnl define an ERROR_CFLAGS Makefile variable
158 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
159 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
160 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
161 -Winit-self -Wmissing-include-dirs -Waddress
162 -Waggregate-return -Wno-multichar -Wnested-externs ])
164 dnl define correct level for debugging messages
165 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
167 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
170 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
171 dnl GST_*: flags shared by built objects to link against GStreamer
172 dnl GST_ALL_LDFLAGS: linker flags shared by all
173 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
174 dnl GST_LT_LDFLAGS: library versioning of our libraries
175 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
177 dnl GST_OPTION_CFLAGS
178 if test "x$USE_DEBUG" = xyes; then
181 AC_SUBST(PROFILE_CFLAGS)
183 if test "x$GST_GIT" = "xyes"; then
184 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
188 AC_SUBST(DEPRECATED_CFLAGS)
190 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
191 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
193 AC_SUBST(GST_OPTION_CFLAGS)
195 dnl FIXME: do we want to rename to GST_ALL_* ?
196 dnl prefer internal headers to already installed ones
197 dnl also add builddir include for enumtypes and marshal
198 dnl add GST_OPTION_CFLAGS, but overridable
199 GST_CFLAGS="$GST_CFLAGS"
200 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
204 GST_ALL_LDFLAGS="-no-undefined"
205 AC_SUBST(GST_ALL_LDFLAGS)
207 dnl this really should only contain flags, not libs - they get added before
208 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
209 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_.*' $GST_ALL_LDFLAGS"
210 AC_SUBST(GST_PLUGIN_LDFLAGS)
212 dnl Add MacOSX specific flags
216 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
222 AC_SUBST(DARWIN_LDFLAGS)
224 dnl *** Check for bz2
225 AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzlibVersion, , bzlib.h, have_bz2=yes, have_bz2=no)
226 AM_CONDITIONAL(HAVE_BZ2, test "x$have_bz2" = "xyes")
227 if test "x$have_bz2" = "xno"; then
228 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
232 [AC_HELP_STRING([--enable-lgpl], [build a LGPL licensed gst-libav])])
233 AM_CONDITIONAL(GST_LIBAV_ENABLE_LGPL, test "x$enable_lgpl" = "xyes")
234 if test "x$enable_lgpl" = "xyes"; then
235 AC_DEFINE([GST_LIBAV_ENABLE_LGPL], [], [Defined if building a LGPL-only version of gst-libav])
238 dnl *** configure external libs ***
240 HAVE_LIBAV_UNINSTALLED=1
242 AC_ARG_WITH(system-libav,
243 [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
245 if test "x$with_system_libav" = "xyes"; then
246 PKG_CHECK_MODULES(LIBAV, libavformat libavcodec libavutil)
247 PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
248 saved_CPPFLAGS="$CPPFLAGS"
249 CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
250 AC_CHECK_HEADERS([avi.h])
251 CPPFLAGS="$saved_CPPFLAGS"
252 AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
253 HAVE_LIBAV_UNINSTALLED=0
254 AC_MSG_NOTICE([Using system-installed libav code])
256 ======================================================================
257 WARNING: you have chosen to build gst-libav against a random
258 external version of Libav instead of building it against the tested
259 internal Libav snapshot that is included with gst-libav.
261 This is a very bad idea. So bad in fact that words cannot express
262 just how bad it is. Suffice to say that it is BAD.
264 The GStreamer developers cannot and will not support a gst-libav
265 built this way. Any bug reports that indicate there is an external
266 version of Libav involved will be closed immediately without further
269 The reason such a setup can't be supported is that the Libav API
270 and ABI is in constant flux, yet there aren't any official releases
271 of the Libav library to develop against. This makes it impossible
272 to guarantee that gst-libav will work reliably, or even compile,
273 with a randomly picked version Libav. Even if gst-libav compiles
274 and superficially appears to work fine against your chosen external
275 Libav version, that might just not be the case on other systems, or
276 even the same system at a later time, or when using decoders,
277 encoders, demuxers or muxers that have not been tested.
279 Please do not create or distribute binary packages of gst-Libav
280 that link against an external libav. Thank you!
281 ======================================================================
284 dnl No, this is not too extreme, we want people to see and read the above
288 AC_MSG_NOTICE([Using local Libav snapshot])
290 dnl libgstlibav.la: include dirs
291 LIBAV_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
292 -I \$(top_builddir)/gst-libs/ext/libav \
293 -Wno-deprecated-declarations"
295 LIBAV_DEPS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
296 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
297 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
298 if test "x$enable_static_plugins" = xyes; then
299 dnl with static linking we can't use the .a archive directly as they would
300 dnl be included in the final libgstlibav.a as a file and won't be usable.
301 dnl libav*.a must be copied to the final destination too
302 LIBAV_LIBS="-lavformat -lavcodec -lavutil"
304 dnl libgstlibav.la: libs to statically link to
305 LIBAV_LIBS="$LIBAV_DEPS"
309 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
310 -I \$(top_builddir)/gst-libs/ext/libav \
311 -Wno-deprecated-declarations"
313 SWSCALE_DEPS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
314 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
315 if test "x$enable_static_plugins" = xyes; then
316 dnl with static linking we can't use the .a archive directly as they would
317 dnl be included in the final libgstswscale.a as a file and won't be usable.
318 dnl libav*.a must be copied to the final destination too
319 SWSCALE_LIBS="-lswscale -lavutil"
321 dnl libgstswscale.la: libs to statically link to
322 SWSCALE_LIBS="$SWSCALE_DEPS"
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 --disable-avserver --disable-avplay\
339 --disable-avconv --disable-avprobe --enable-static --enable-pic \
340 --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
341 --disable-network --disable-hwaccels --disable-filters --disable-doc\
342 --enable-optimizations"
344 if test "x$enable_lgpl" != "xyes"; then
345 emblibav_configure_args="$emblibav_configure_args --enable-gpl"
348 # if we are cross-compiling, tell libav so
354 target_os=`echo $host_os | sed 's/-gnu//'`
358 if test "x$cross_compiling" = xyes; then
359 emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
360 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
364 # Unfortunately, in Mac OS 10.5 the current rev of libav builds
365 # some non-PIC code into the .a file. See
366 # http://trac.macosforge.org/projects/macports/ticket/13725 for more
369 emblibav_configure_args="$emblibav_configure_args --disable-mmx --disable-altivec"
372 emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
373 WIN32_LIBS="-lws2_32"
380 if test x"$AR" != x; then
381 emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
384 if test x"$AS" != x; then
385 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$CC\\\""
388 if test x"$CC" != x; then
389 emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
392 if test x"$LD" != x; then
393 emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
396 if test x"$NM" != x; then
397 emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
400 dnl checks for extra enable/disable flags
401 LIBAV_OPTS=`cd $srcdir/gst-libs/ext/libav && ./configure --help`
402 # Let's check if we can disable the building of the libav binary
403 can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
404 if test "$can_disable" != ""; then
405 emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
407 dnl check if libswscale needs enabling explicitly
408 can_enable=`echo "$LIBAV_OPTS" | grep 'enable-swscale'`
409 if test "$can_enable" != ""; then
410 emblibav_configure_args="$emblibav_configure_args --enable-swscale"
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
433 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
434 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
435 eval "$confcmd $emblibav_configure_args" ||
436 AC_MSG_ERROR([Failed to configure embedded Libav tree])
439 [emblibav_configure_args="$emblibav_configure_args"])
440 AC_MSG_NOTICE([Using included Libav code])
443 AC_SUBST(LIBAV_CFLAGS)
446 AC_SUBST(LIBAV_SUBDIRS)
447 AC_SUBST(SWSCALE_CFLAGS)
448 AC_SUBST(SWSCALE_DEPS)
449 AC_SUBST(SWSCALE_LIBS)
452 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
453 AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
455 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
464 ext/libswscale/Makefile
466 gst-libs/ext/Makefile
468 docs/version.entities
473 pkgconfig/gstreamer-plugins-libav-uninstalled.pc