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
71 dnl *** checks for platform ***
73 dnl * hardware/architecture *
75 dnl common/m4/gst-arch.m4
79 dnl *** checks for programs ***
85 dnl check if the compiler supports '-c' and '-o' options
88 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
89 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
91 dnl check for documentation tools
95 AG_GST_PLUGIN_DOCS([1.3],[2.1])
97 dnl *** checks for libraries ***
99 dnl check for libm, for sin()
103 dnl *** checks for header files ***
105 dnl check if we have ANSI C header files
108 dnl *** checks for types/defines ***
110 dnl *** checks for structures ***
112 dnl *** checks for compiler characteristics ***
114 dnl *** checks for library functions ***
116 dnl *** checks for dependancy libraries ***
118 dnl checks for gstreamer
119 dnl uninstalled is selected preferentially -- see pkg-config(1)
120 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
121 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
122 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_PBREQ])
123 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
124 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
126 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
127 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
129 dnl *** set variables based on configure arguments ***
131 dnl set location of plugin directory
134 dnl define an ERROR_CFLAGS Makefile variable
135 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
136 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
137 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
138 -Winit-self -Wmissing-include-dirs -Waddress
139 -Waggregate-return -Wno-multichar -Wnested-externs ])
141 dnl define correct level for debugging messages
142 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
144 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
147 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
148 dnl GST_*: flags shared by built objects to link against GStreamer
149 dnl GST_ALL_LDFLAGS: linker flags shared by all
150 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
151 dnl GST_LT_LDFLAGS: library versioning of our libraries
152 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
154 dnl GST_OPTION_CFLAGS
155 if test "x$USE_DEBUG" = xyes; then
158 AC_SUBST(PROFILE_CFLAGS)
160 if test "x$GST_GIT" = "xyes"; then
161 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
165 AC_SUBST(DEPRECATED_CFLAGS)
167 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
168 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
170 AC_SUBST(GST_OPTION_CFLAGS)
172 dnl FIXME: do we want to rename to GST_ALL_* ?
173 dnl prefer internal headers to already installed ones
174 dnl also add builddir include for enumtypes and marshal
175 dnl add GST_OPTION_CFLAGS, but overridable
176 GST_CFLAGS="$GST_CFLAGS"
177 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
181 GST_ALL_LDFLAGS="-no-undefined"
182 AC_SUBST(GST_ALL_LDFLAGS)
184 dnl this really should only contain flags, not libs - they get added before
185 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
186 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc.*' $GST_ALL_LDFLAGS"
187 AC_SUBST(GST_PLUGIN_LDFLAGS)
189 dnl Add MacOSX specific flags
193 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
199 AC_SUBST(DARWIN_LDFLAGS)
201 dnl *** Check for bz2
202 AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzlibVersion, , bzlib.h, have_bz2=yes, have_bz2=no)
203 AM_CONDITIONAL(HAVE_BZ2, test "x$have_bz2" = "xyes")
204 if test "x$have_bz2" = "xno"; then
205 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
209 [AC_HELP_STRING([--enable-lgpl], [build a LGPL licensed gst-libav])])
210 AM_CONDITIONAL(GST_LIBAV_ENABLE_LGPL, test "x$enable_lgpl" = "xyes")
211 if test "x$enable_lgpl" = "xyes"; then
212 AC_DEFINE([GST_LIBAV_ENABLE_LGPL], [], [Defined if building a LGPL-only version of gst-libav])
215 dnl *** configure external libs ***
217 HAVE_LIBAV_UNINSTALLED=1
219 AC_ARG_WITH(system-libav,
220 [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
222 if test "x$with_system_libav" = "xyes"; then
223 PKG_CHECK_MODULES(LIBAV, libavformat libavcodec libavutil)
224 PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
225 saved_CPPFLAGS="$CPPFLAGS"
226 CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
227 AC_CHECK_HEADERS([avi.h])
228 CPPFLAGS="$saved_CPPFLAGS"
229 AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
230 HAVE_LIBAV_UNINSTALLED=0
231 AC_MSG_NOTICE([Using system-installed libav code])
233 ======================================================================
234 WARNING: you have chosen to build gst-libav against a random
235 external version of Libav instead of building it against the tested
236 internal Libav snapshot that is included with gst-libav.
238 This is a very bad idea. So bad in fact that words cannot express
239 just how bad it is. Suffice to say that it is BAD.
241 The GStreamer developers cannot and will not support a gst-libav
242 built this way. Any bug reports that indicate there is an external
243 version of Libav involved will be closed immediately without further
246 The reason such a setup can't be supported is that the Libav API
247 and ABI is in constant flux, yet there aren't any official releases
248 of the Libav library to develop against. This makes it impossible
249 to guarantee that gst-libav will work reliably, or even compile,
250 with a randomly picked version Libav. Even if gst-libav compiles
251 and superficially appears to work fine against your chosen external
252 Libav version, that might just not be the case on other systems, or
253 even the same system at a later time, or when using decoders,
254 encoders, demuxers or muxers that have not been tested.
256 Please do not create or distribute binary packages of gst-Libav
257 that link against an external libav. Thank you!
258 ======================================================================
261 dnl No, this is not too extreme, we want people to see and read the above
265 AC_MSG_NOTICE([Using local Libav snapshot])
267 dnl libgstlibav.la: include dirs
268 LIBAV_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
269 -I \$(top_builddir)/gst-libs/ext/libav \
270 -Wno-deprecated-declarations"
272 dnl libgstlibav.la: libs to statically link to
273 LIBAV_LIBS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
274 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
275 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
278 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
279 -I \$(top_builddir)/gst-libs/ext/libav \
280 -Wno-deprecated-declarations"
282 dnl libgstswscale.la: libs to statically link to
283 SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
284 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
286 LIBAV_SUBDIRS=gst-libs
287 AC_DEFINE(HAVE_AVI_H)
288 AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
290 AC_ARG_WITH(libav-extra-configure,
291 AC_HELP_STRING([--with-libav-extra-configure="xxx"],
292 [extra configure options for internal libav ./configure script]),,
296 emblibav_configure_args="--prefix=$prefix"
298 # Enable pic and static so that we get .a files, but with PIC code.
299 emblibav_configure_args="$emblibav_configure_args --disable-avserver --disable-avplay\
300 --disable-avconv --disable-avprobe --enable-static --enable-pic \
301 --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
302 --disable-network --disable-hwaccels --disable-filters --disable-doc\
303 --enable-optimizations"
305 if test "x$enable_lgpl" != "xyes"; then
306 emblibav_configure_args="$emblibav_configure_args --enable-gpl"
309 # if we are cross-compiling, tell libav so
315 target_os=`echo $host_os | sed 's/-gnu//'`
319 if test "x$cross_compiling" = xyes; then
320 emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
321 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
325 # Unfortunately, in Mac OS 10.5 the current rev of libav builds
326 # some non-PIC code into the .a file. See
327 # http://trac.macosforge.org/projects/macports/ticket/13725 for more
330 emblibav_configure_args="$emblibav_configure_args --disable-mmx --disable-altivec"
333 emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
334 WIN32_LIBS="-lws2_32"
341 if test x"$AR" != x; then
342 emblibav_configure_args="$emblibav_configure_args --ar=\\\"\\\$AR\\\""
345 if test x"$AS" != x; then
346 emblibav_configure_args="$emblibav_configure_args --as=\\\"\\\$AS\\\""
349 if test x"$CC" != x; then
350 emblibav_configure_args="$emblibav_configure_args --cc=\\\"\\\$CC\\\""
353 if test x"$LD" != x; then
354 emblibav_configure_args="$emblibav_configure_args --ld=\\\"\\\$CC\\\""
357 if test x"$NM" != x; then
358 emblibav_configure_args="$emblibav_configure_args --nm=\\\"\\\$NM\\\""
361 dnl checks for extra enable/disable flags
362 LIBAV_OPTS="(cd $srcdir/gst-libs/ext/libav && ./configure --help)"
363 # Let's check if we can disable the building of the libav binary
364 can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
365 if test "$can_disable" != ""; then
366 emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
368 dnl check if libswscale needs enabling explicitly
369 can_enable=`echo "$LIBAV_OPTS" | grep 'enable-swscale'`
370 if test "$can_enable" != ""; then
371 emblibav_configure_args="$emblibav_configure_args --enable-swscale"
374 # append extra configure options to emblibav_configure_args if needed
375 if test "x$with_libav_extra_configure" != "xno"; then
376 emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
379 AC_SUBST(LIBAV_CO_DIR)
381 AC_SUBST(LIBAV_REVISION)
382 AC_SUBST(LIBAV_EXTERNALS_REVISION)
383 AC_CONFIG_COMMANDS([configure-embedded-libav],
384 [echo "Configuring included Libav instance with args $emblibav_configure_args"
386 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
387 dnl to detect out-of-tree builds
388 if test -z "$srcdir" -o "$srcdir" = .; then
391 confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
394 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
395 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
396 eval "$confcmd $emblibav_configure_args" ||
397 AC_MSG_ERROR([Failed to configure embedded Libav tree])
400 [emblibav_configure_args="$emblibav_configure_args"])
401 AC_MSG_NOTICE([Using included Libav code])
404 AC_SUBST(LIBAV_CFLAGS)
406 AC_SUBST(LIBAV_SUBDIRS)
407 AC_SUBST(SWSCALE_CFLAGS)
408 AC_SUBST(SWSCALE_LIBS)
411 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
412 AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
414 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
423 ext/libswscale/Makefile
425 gst-libs/ext/Makefile
427 docs/version.entities