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