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.10.12.1,
7 http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
12 dnl initialize automake
13 AM_INIT_AUTOMAKE([-Wno-portability 1.10])
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/ffmpeg/gstffmpeg.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
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_MAJORMINOR=$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_MAJORMINOR)
44 AG_GST_LIBTOOL_PREPARE
49 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_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_MAJORMINOR, [$GST_REQ])
118 AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ])
119 AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GST_REQ])
120 AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$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 orc is required for cpu detection for libpostproc
127 ORC_CHECK([$ORC_REQ])
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($GST_GIT, [
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="-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-ffmpeg])])
209 AM_CONDITIONAL(GST_FFMPEG_ENABLE_LGPL, test "x$enable_lgpl" = "xyes")
210 if test "x$enable_lgpl" = "xyes"; then
211 AC_DEFINE([GST_FFMPEG_ENABLE_LGPL], [], [Defined if building a LGPL-only version of gst-ffmpeg])
214 dnl *** configure external libs ***
216 HAVE_FFMPEG_UNINSTALLED=1
218 AC_ARG_WITH(system-ffmpeg,
219 [AC_HELP_STRING([--with-system-ffmpeg], [use system Libav libraries])])
221 if test "x$with_system_ffmpeg" = "xyes"; then
222 PKG_CHECK_MODULES(FFMPEG, libavformat libavcodec libavutil)
223 if test "x$enable_lgpl" != "xyes"; then
224 PKG_CHECK_MODULES(POSTPROC, libpostproc libavcodec libavutil)
226 PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
227 saved_CPPFLAGS="$CPPFLAGS"
228 CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
229 AC_CHECK_HEADERS([avi.h])
230 CPPFLAGS="$saved_CPPFLAGS"
231 AC_DEFINE([FFMPEG_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
232 HAVE_FFMPEG_UNINSTALLED=0
233 AC_MSG_NOTICE([Using system-installed FFMpeg code])
235 ======================================================================
236 WARNING: you have chosen to build gst-ffmpeg against a random
237 external version of Libav instead of building it against the tested
238 internal Libav snapshot that is included with gst-ffmpeg.
240 This is a very bad idea. So bad in fact that words cannot express
241 just how bad it is. Suffice to say that it is BAD.
243 The GStreamer developers cannot and will not support a gst-ffmpeg
244 built this way. Any bug reports that indicate there is an external
245 version of Libav involved will be closed immediately without further
248 The reason such a setup can't be supported is that the Libav API
249 and ABI is in constant flux, yet there aren't any official releases
250 of the Libav library to develop against. This makes it impossible
251 to guarantee that gst-ffmpeg will work reliably, or even compile,
252 with a randomly picked version Libav. Even if gst-ffmpeg compiles
253 and superficially appears to work fine against your chosen external
254 Libav version, that might just not be the case on other systems, or
255 even the same system at a later time, or when using decoders,
256 encoders, demuxers or muxers that have not been tested.
258 Please do not create or distribute binary packages of gst-Libav
259 that link against an external ffmpeg. Thank you!
260 ======================================================================
263 dnl No, this is not too extreme, we want people to see and read the above
267 AC_MSG_NOTICE([Using local Libav snapshot])
269 dnl libgstffmpeg.la: include dirs
270 FFMPEG_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav/libavutil \
271 -I \$(top_srcdir)/gst-libs/ext/libav/libavformat \
272 -I \$(top_srcdir)/gst-libs/ext/libav/libavcodec \
273 -I \$(top_srcdir)/gst-libs/ext/libav \
274 -I \$(top_builddir)/gst-libs/ext/libav \
275 -Wno-deprecated-declarations"
277 dnl libgstffmpeg.la: libs to statically link to
278 FFMPEG_LIBS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
279 \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
280 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
282 POSTPROC_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav/libpostproc \
283 -I \$(top_srcdir)/gst-libs/ext/libav/libavutil \
284 -I \$(top_srcdir)/gst-libs/ext/libav/libavcodec \
285 -I \$(top_srcdir)/gst-libs/ext/libav \
286 -I \$(top_builddir)/gst-libs/ext/libav \
287 -Wno-deprecated-declarations"
289 dnl libgstpostproc.la: libs to statically link to
290 POSTPROC_LIBS="\$(top_builddir)/gst-libs/ext/libav/libpostproc/libpostproc.a \
291 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
294 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav/libswscale \
295 -I \$(top_srcdir)/gst-libs/ext/libav/libavutil \
296 -I \$(top_srcdir)/gst-libs/ext/libav \
297 -I \$(top_builddir)/gst-libs/ext/libav \
298 -Wno-deprecated-declarations"
300 dnl libgstswscale.la: libs to statically link to
301 SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
302 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
304 FFMPEG_SUBDIRS=gst-libs
305 AC_DEFINE(HAVE_AVI_H)
306 AC_DEFINE([FFMPEG_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
308 AC_ARG_WITH(ffmpeg-extra-configure,
309 AC_HELP_STRING([--with-ffmpeg-extra-configure="xxx"],
310 [extra configure options for internal ffmpeg ./configure script]),,
311 with_ffmpeg_extra_configure=no)
314 embffmpeg_configure_args="--prefix=$prefix"
316 # Enable pic and static so that we get .a files, but with PIC code.
317 embffmpeg_configure_args="$embffmpeg_configure_args --disable-avserver --disable-avplay\
318 --disable-ffmpeg --disable-avprobe --enable-postproc --enable-static --enable-pic \
319 --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
320 --disable-network --disable-hwaccels --disable-filters --disable-doc\
321 --enable-optimizations"
323 if test "x$enable_lgpl" != "xyes"; then
324 embffmpeg_configure_args="$embffmpeg_configure_args --enable-postproc \
328 # if we are cross-compiling, tell ffmpeg so
329 target_os=`echo $host_os | sed 's/-gnu//'`
330 if test "x$cross_compiling" = xyes; then
331 embffmpeg_configure_args="$embffmpeg_configure_args --enable-cross-compile \
332 --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
336 # Unfortunately, in Mac OS 10.5 the current rev of ffmpeg builds
337 # some non-PIC code into the .a file. See
338 # http://trac.macosforge.org/projects/macports/ticket/13725 for more
341 embffmpeg_configure_args="$embffmpeg_configure_args --disable-mmx --disable-altivec"
344 embffmpeg_configure_args="$embffmpeg_configure_args --enable-memalign-hack"
345 WIN32_LIBS="-lws2_32"
352 dnl checks for extra enable/disable flags
353 FFMPEG_OPTS="(cd $srcdir/gst-libs/ext/libav && ./configure --help)"
354 # Let's check if we can disable the building of the ffmpeg binary
355 can_disable=`echo "$FFMPEG_OPTS" | grep 'disable-ffmpeg'`
356 if test "$can_disable" != ""; then
357 embffmpeg_configure_args="$embffmpeg_configure_args --disable-ffmpeg"
359 dnl check if libswscale needs enabling explicitly
360 can_enable=`echo "$FFMPEG_OPTS" | grep 'enable-swscale'`
361 if test "$can_enable" != ""; then
362 embffmpeg_configure_args="$embffmpeg_configure_args --enable-swscale"
365 # append extra configure options to embffmpeg_configure_args if needed
366 if test "x$with_ffmpeg_extra_configure" != "xno"; then
367 embffmpeg_configure_args="$embffmpeg_configure_args $with_ffmpeg_extra_configure"
370 AC_SUBST(FFMPEG_CO_DIR)
372 AC_SUBST(FFMPEG_REVISION)
373 AC_SUBST(FFMPEG_EXTERNALS_REVISION)
374 AC_CONFIG_COMMANDS([configure-embedded-ffmpeg],
375 [echo "Configuring included Libav instance with args $embffmpeg_configure_args"
377 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
378 dnl to detect out-of-tree builds
379 if test -z "$srcdir" -o "$srcdir" = .; then
382 confcmd="$origdir"/"$ac_top_srcdir"/gst-libs/ext/libav/configure
385 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
386 cd "$ac_top_build_prefix"gst-libs/ext/libav &&
387 eval "$confcmd $embffmpeg_configure_args" ||
388 AC_MSG_ERROR([Failed to configure embedded Libav tree])
391 [embffmpeg_configure_args="$embffmpeg_configure_args"])
392 AC_MSG_NOTICE([Using included Libav code])
395 AC_SUBST(FFMPEG_CFLAGS)
396 AC_SUBST(FFMPEG_LIBS)
397 AC_SUBST(FFMPEG_SUBDIRS)
398 AC_SUBST(POSTPROC_CFLAGS)
399 AC_SUBST(POSTPROC_LIBS)
400 AC_SUBST(SWSCALE_CFLAGS)
401 AC_SUBST(SWSCALE_LIBS)
404 if test x$HAVE_FFMPEG_UNINSTALLED = x1; then
405 AC_DEFINE(HAVE_FFMPEG_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
407 AM_CONDITIONAL(HAVE_FFMPEG_UNINSTALLED, test x$HAVE_FFMPEG_UNINSTALLED = x1)
416 ext/libpostproc/Makefile
417 ext/libswscale/Makefile
419 gst-libs/ext/Makefile
421 docs/version.entities