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 FFMpeg, 0.10.11,
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)
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_WITH_PKG_CONFIG_PATH
62 AG_GST_ARG_WITH_PACKAGE_NAME
63 AG_GST_ARG_WITH_PACKAGE_ORIGIN
66 dnl *** checks for platform ***
68 dnl * hardware/architecture *
70 dnl common/m4/gst-arch.m4
74 dnl *** checks for programs ***
79 # FIXME: are these two lines needed ?
83 dnl check if the compiler supports '-c' and '-o' options
86 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
87 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
89 dnl check for documentation tools
93 AG_GST_PLUGIN_DOCS([1.3],[2.1])
95 dnl *** checks for libraries ***
97 dnl check for libm, for sin()
101 dnl *** checks for header files ***
103 dnl check if we have ANSI C header files
106 dnl *** checks for types/defines ***
108 dnl *** checks for structures ***
110 dnl *** checks for compiler characteristics ***
112 dnl *** checks for library functions ***
114 dnl *** checks for dependancy libraries ***
116 dnl checks for gstreamer
117 dnl uninstalled is selected preferentially -- see pkg-config(1)
118 AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ])
119 AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ])
120 AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GST_REQ])
121 AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
122 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
124 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
125 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
127 dnl orc is required for cpu detection for libpostproc
128 ORC_CHECK([$ORC_REQ])
130 dnl *** set variables based on configure arguments ***
132 dnl set location of plugin directory
135 dnl define an ERROR_CFLAGS Makefile variable
136 AG_GST_SET_ERROR_CFLAGS($GST_GIT, [
137 -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
138 -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
139 -Wcast-align -Winit-self -Wmissing-include-dirs -Waddress
140 -Waggregate-return -Wno-multichar -Wnested-externs ])
142 dnl define correct level for debugging messages
143 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
145 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
148 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
149 dnl GST_*: flags shared by built objects to link against GStreamer
150 dnl GST_ALL_LDFLAGS: linker flags shared by all
151 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
152 dnl GST_LT_LDFLAGS: library versioning of our libraries
153 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
155 dnl GST_OPTION_CFLAGS
156 if test "x$USE_DEBUG" = xyes; then
159 AC_SUBST(PROFILE_CFLAGS)
161 if test "x$GST_GIT" = "xyes"; then
162 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
166 AC_SUBST(DEPRECATED_CFLAGS)
168 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
169 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
171 AC_SUBST(GST_OPTION_CFLAGS)
173 dnl FIXME: do we want to rename to GST_ALL_* ?
174 dnl prefer internal headers to already installed ones
175 dnl also add builddir include for enumtypes and marshal
176 dnl add GST_OPTION_CFLAGS, but overridable
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])
208 dnl *** configure external libs ***
210 HAVE_FFMPEG_UNINSTALLED=1
212 AC_ARG_WITH(system-ffmpeg,
213 [AC_HELP_STRING([--with-system-ffmpeg], [use system FFmpeg libraries])])
215 if test "x$with_system_ffmpeg" = "xyes"; then
216 PKG_CHECK_MODULES(FFMPEG, libavformat libavcodec libavutil)
217 PKG_CHECK_MODULES(POSTPROC, libpostproc libavcodec libavutil)
218 PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
219 saved_CPPFLAGS="$CPPFLAGS"
220 CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
221 AC_CHECK_HEADERS([avi.h])
222 CPPFLAGS="$saved_CPPFLAGS"
223 AC_DEFINE([FFMPEG_SOURCE], ["system install"], [Describes where the FFmpeg libraries come from.])
224 HAVE_FFMPEG_UNINSTALLED=0
225 AC_MSG_NOTICE([Using system-installed FFMpeg code])
227 ======================================================================
228 WARNING: you have chosen to build gst-ffmpeg against a random
229 external version of ffmpeg instead of building it against the tested
230 internal ffmpeg snapshot that is included with gst-ffmpeg.
232 This is a very bad idea. So bad in fact that words cannot express
233 just how bad it is. Suffice to say that it is BAD.
235 The GStreamer developers cannot and will not support a gst-ffmpeg
236 built this way. Any bug reports that indicate there is an external
237 version of ffmpeg involved will be closed immediately without further
240 The reason such a setup can't be supported is that the ffmpeg API
241 and ABI is in constant flux, yet there aren't any official releases
242 of the ffmpeg library to develop against. This makes it impossible
243 to guarantee that gst-ffmpeg will work reliably, or even compile,
244 with a randomly picked version ffmpeg. Even if gst-ffmpeg compiles
245 and superficially appears to work fine against your chosen external
246 ffmpeg version, that might just not be the case on other systems, or
247 even the same system at a later time, or when using decoders,
248 encoders, demuxers or muxers that have not been tested.
250 Please do not create or distribute binary packages of gst-ffmpeg
251 that link against an external ffmpeg. Thank you!
252 ======================================================================
255 dnl No, this is not too extreme, we want people to see and read the above
259 . "$srcdir/ffmpegrev"
261 AC_MSG_NOTICE([Using ffmpeg revision $FFMPEG_REVISION])
263 dnl libgstffmpeg.la: include dirs
264 FFMPEG_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavformat \
265 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \
266 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec \
267 -I \$(top_srcdir)/gst-libs/ext/ffmpeg \
268 -I \$(top_builddir)/gst-libs/ext/ffmpeg \
269 -Wno-deprecated-declarations"
271 dnl libgstffmpeg.la: libs to statically link to
272 FFMPEG_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libavformat/libavformat.a \
273 \$(top_builddir)/gst-libs/ext/ffmpeg/libavcodec/libavcodec.a \
274 \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a"
276 POSTPROC_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libpostproc \
277 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \
278 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec \
279 -I \$(top_srcdir)/gst-libs/ext/ffmpeg \
280 -I \$(top_builddir)/gst-libs/ext/ffmpeg \
281 -Wno-deprecated-declarations"
283 dnl libgstpostproc.la: libs to statically link to
284 POSTPROC_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libpostproc/libpostproc.a \
285 \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a"
288 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libswscale \
289 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \
290 -I \$(top_srcdir)/gst-libs/ext/ffmpeg \
291 -I \$(top_builddir)/gst-libs/ext/ffmpeg \
292 -Wno-deprecated-declarations"
294 dnl libgstswscale.la: libs to statically link to
295 SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libswscale/libswscale.a \
296 \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a"
298 FFMPEG_SUBDIRS=gst-libs
299 AC_DEFINE(HAVE_AVI_H)
300 AC_DEFINE([FFMPEG_SOURCE], ["local snapshot"], [Describes where the FFmpeg libraries come from.])
302 AC_ARG_WITH(ffmpeg-extra-configure,
303 AC_HELP_STRING([--with-ffmpeg-extra-configure="xxx"],
304 [extra configure options for internal ffmpeg ./configure script]),,
305 with_ffmpeg_extra_configure=no)
308 embffmpeg_configure_args="--prefix=$prefix"
310 # Enable pic and static so that we get .a files, but with PIC code.
311 # embffmpeg_configure_args="$embffmpeg_configure_args --disable-ffserver --disable-ffplay\
312 # --disable-ffmpeg --disable-ffprobe --enable-postproc --enable-gpl --enable-static --enable-pic \
313 # --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
314 # --disable-network --disable-hwaccels --disable-filters --disable-doc\
315 # --enable-optimizations"
316 # ffmpeg cannot support msmpeg4v1 encoder properly.
317 # --enable-encoder=msmpeg4v1
319 embffmpeg_configure_args="$embffmpeg_configure_args \
320 --enable-static --enable-pic --enable-optimizations \
322 --disable-gpl --disable-postproc --disable-swscale \
323 --disable-mmx --enable-neon \
324 --disable-ffmpeg --disable-ffprobe --disable-ffserver --disable-ffplay \
325 --disable-decoders --disable-encoders \
326 --disable-muxers --disable-demuxers \
328 --disable-protocols --disable-network --disable-bsfs --disable-devices --disable-filters \
329 --enable-libvorbis --enable-libtheora \
330 --enable-encoder=aac \
331 --enable-encoder=h263 \
332 --enable-encoder=h263p \
333 --enable-encoder=mpeg4 \
334 --enable-encoder=msmpeg4v2 \
335 --enable-encoder=msmpeg4v3 \
336 --enable-decoder=aac \
337 --enable-decoder=h263 \
338 --enable-decoder=h264 \
339 --enable-decoder=mp3 \
340 --enable-decoder=mp3adu \
341 --enable-decoder=mpeg4 \
342 --enable-decoder=rv10 \
343 --enable-decoder=rv20 \
344 --enable-decoder=rv30 \
345 --enable-decoder=rv40 \
346 --enable-decoder=cook \
347 --enable-decoder=sipr \
348 --enable-decoder=ra_144 \
349 --enable-decoder=ra_288 \
350 --disable-decoder=mpegvideo \
351 --enable-decoder=msmpeg4v1 \
352 --enable-decoder=msmpeg4v2 \
353 --enable-decoder=msmpeg4v3 \
354 --enable-decoder=wmv3 \
355 --enable-decoder=vc1 \
356 --enable-decoder=wmav1 \
357 --enable-decoder=wmav2 \
358 --enable-decoder=theora \
359 --enable-decoder=vorbis \
363 --enable-muxer=adts \
364 --enable-demuxer=aac \
365 --enable-demuxer=ac3 \
366 --enable-demuxer=avi \
367 --enable-demuxer=amr \
368 --enable-demuxer=h263 \
369 --enable-demuxer=h264 \
370 --enable-demuxer=m4v \
371 --enable-demuxer=mov \
372 --enable-demuxer=mp3 \
373 --enable-demuxer=mpegts \
374 --enable-demuxer=mpegps \
375 --enable-demuxer=mpegtsraw \
376 --enable-demuxer=mpegvideo \
377 --enable-parser=aac \
378 --enable-parser=ac3 \
379 --enable-parser=h263 \
380 --enable-parser=h264 \
381 --enable-parser=mpeg4video \
382 --enable-parser=mpegaudio \
383 --enable-parser=mpegvideo"
386 # if we are cross-compiling, tell ffmpeg so
387 if test "x$cross_compiling" = xyes; then
388 embffmpeg_configure_args="$embffmpeg_configure_args --enable-cross-compile \
389 --target-os=$host_os --arch=$host_cpu --cross-prefix=$host_alias-"
393 # Unfortunately, in Mac OS 10.5 the current rev of ffmpeg builds
394 # some non-PIC code into the .a file. See
395 # http://trac.macosforge.org/projects/macports/ticket/13725 for more
398 embffmpeg_configure_args="$embffmpeg_configure_args --disable-mmx --disable-altivec"
401 embffmpeg_configure_args="$embffmpeg_configure_args --enable-memalign-hack"
402 WIN32_LIBS="-lws2_32"
409 dnl checks for extra enable/disable flags
410 FFMPEG_OPTS="(cd $srcdir/gst-libs/ext/ffmpeg && ./configure --help)"
411 # Let's check if we can disable the building of the ffmpeg binary
412 can_disable=`echo "$FFMPEG_OPTS" | grep 'disable-ffmpeg'`
413 if test "$can_disable" != ""; then
414 embffmpeg_configure_args="$embffmpeg_configure_args --disable-ffmpeg"
416 dnl check if libswscale needs enabling explicitly
417 can_enable=`echo "$FFMPEG_OPTS" | grep 'enable-swscale'`
418 if test "$can_enable" != ""; then
419 embffmpeg_configure_args="$embffmpeg_configure_args --enable-swscale"
422 # append extra configure options to embffmpeg_configure_args if needed
423 if test "x$with_ffmpeg_extra_configure" != "xno"; then
424 embffmpeg_configure_args="$embffmpeg_configure_args $with_ffmpeg_extra_configure"
427 AC_SUBST(FFMPEG_CO_DIR)
429 AC_SUBST(FFMPEG_REVISION)
430 AC_SUBST(FFMPEG_EXTERNALS_REVISION)
431 AC_CONFIG_COMMANDS([configure-embedded-ffmpeg],
432 [echo "Configuring included FFmpeg instance with args $embffmpeg_configure_args"
434 dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
435 dnl to detect out-of-tree builds
436 if test -z "$srcdir" -o "$srcdir" = .; then
439 confcmd="$origdir"/"$ac_top_srcdir"/gst-libs/ext/ffmpeg/configure
442 AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/ffmpeg])
443 cd "$ac_top_build_prefix"gst-libs/ext/ffmpeg &&
444 $confcmd $embffmpeg_configure_args ||
445 AC_MSG_ERROR([Failed to configure embedded FFmpeg tree])
448 [embffmpeg_configure_args="$embffmpeg_configure_args"])
449 AC_MSG_NOTICE([Using included FFMpeg code])
452 AC_SUBST(FFMPEG_CFLAGS)
453 AC_SUBST(FFMPEG_LIBS)
454 AC_SUBST(FFMPEG_SUBDIRS)
455 AC_SUBST(POSTPROC_CFLAGS)
456 AC_SUBST(POSTPROC_LIBS)
457 AC_SUBST(SWSCALE_CFLAGS)
458 AC_SUBST(SWSCALE_LIBS)
461 if test x$HAVE_FFMPEG_UNINSTALLED = x1; then
462 AC_DEFINE(HAVE_FFMPEG_UNINSTALLED, [], [Defined if building against uninstalled FFmpeg source])
464 AM_CONDITIONAL(HAVE_FFMPEG_UNINSTALLED, test x$HAVE_FFMPEG_UNINSTALLED = x1)
473 ext/libpostproc/Makefile
474 ext/libswscale/Makefile
476 gst-libs/ext/Makefile
478 docs/version.entities