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.6.1,
7 http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
12 dnl initialize automake
15 dnl define PACKAGE_VERSION_* variables
18 dnl check if this is a release version
19 AS_NANO(GST_CVS="no", GST_CVS="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 our libraries and install dirs use major.minor as a version
34 GST_MAJORMINOR=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
35 dnl we override it here if we need to for the release candidate of new series
37 AC_SUBST(GST_MAJORMINOR)
42 dnl *** required versions of GStreamer stuff ***
47 dnl *** autotools stuff ****
49 dnl allow for different autotools
50 AS_AUTOTOOLS_ALTERNATE
52 dnl Add parameters for aclocal
53 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
55 dnl *** check for arguments to configure ***
57 AG_GST_ARG_WITH_PACKAGE_NAME
58 AG_GST_ARG_WITH_PACKAGE_ORIGIN
61 dnl *** checks for platform ***
63 dnl * hardware/architecture *
65 dnl common/m4/gst-arch.m4
69 dnl *** checks for programs ***
74 # FIXME: are these two lines needed ?
78 dnl check if the compiler supports '-c' and '-o' options
81 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
82 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
84 dnl check for documentation tools
88 AG_GST_PLUGIN_DOCS([1.3],[2.1])
90 dnl *** checks for libraries ***
92 dnl check for libm, for sin()
96 dnl *** checks for header files ***
98 dnl check if we have ANSI C header files
101 dnl *** checks for types/defines ***
103 dnl *** checks for structures ***
105 dnl *** checks for compiler characteristics ***
107 dnl *** checks for library functions ***
109 dnl *** checks for dependancy libraries ***
111 dnl checks for gstreamer
112 dnl uninstalled is selected preferentially -- see pkg-config(1)
113 AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ])
114 AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ])
115 AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GST_REQ])
116 AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
117 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
119 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
120 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
122 dnl liboil is required for cpu detection for libpostproc
123 dnl FIXME : In theory we should be able to compile libpostproc with cpudetect
124 dnl capabilities, which would enable us to get rid of this
125 PKG_CHECK_MODULES(LIBOIL, liboil-$LIBOIL_MAJORMINOR >= $LIBOIL_REQ, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
126 if test "x$HAVE_LIBOIL" != "xyes"
128 AC_MSG_ERROR([liboil-$LIBOIL_REQ or later is required])
132 AC_SUBST(LIBOIL_CFLAGS)
133 AC_SUBST(LIBOIL_LIBS)
135 dnl *** set variables based on configure arguments ***
137 dnl set location of plugin directory
140 dnl define an ERROR_CFLAGS Makefile variable
141 AG_GST_SET_ERROR_CFLAGS($GST_CVS)
143 dnl define correct level for debugging messages
144 AG_GST_SET_LEVEL_DEFAULT($GST_CVS)
146 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
149 dnl GST_OPTION_CFLAGS: common flags for profiling, debugging, errors, ...
150 dnl GST_*: flags shared by built objects to link against GStreamer
151 dnl GST_ALL_LDFLAGS: linker flags shared by all
152 dnl GST_LIB_LDFLAGS: additional linker flags for all libaries
153 dnl GST_LT_LDFLAGS: library versioning of our libraries
154 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
156 dnl GST_OPTION_CFLAGS
157 if test "x$USE_DEBUG" = xyes; then
160 AC_SUBST(PROFILE_CFLAGS)
162 if test "x$GST_CVS" = "xyes"; then
163 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
167 AC_SUBST(DEPRECATED_CFLAGS)
169 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
170 GST_OPTION_CFLAGS="\$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
172 AC_SUBST(GST_OPTION_CFLAGS)
174 dnl FIXME: do we want to rename to GST_ALL_* ?
175 dnl prefer internal headers to already installed ones
176 dnl also add builddir include for enumtypes and marshal
177 dnl add GST_OPTION_CFLAGS, but overridable
178 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS \$(GST_OPTION_CFLAGS)"
182 GST_ALL_LDFLAGS="-no-undefined"
183 AC_SUBST(GST_ALL_LDFLAGS)
185 dnl this really should only contain flags, not libs - they get added before
186 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
187 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc\$\$' $GST_ALL_LDFLAGS"
188 AC_SUBST(GST_PLUGIN_LDFLAGS)
190 dnl Add MacOSX specific flags
194 DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
200 AC_SUBST(DARWIN_LDFLAGS)
202 dnl *** Check for bz2
203 AG_GST_CHECK_LIBHEADER(BZ2, bz2, BZ2_bzlibVersion, , bzlib.h, have_bz2=yes, have_bz2=no)
204 AM_CONDITIONAL(HAVE_BZ2, test "x$have_bz2" = "xyes")
205 if test "x$have_bz2" = "xno"; then
206 AC_WARN([libbz2 not found, matroska demuxer will not be able to read bz2 tracks])
209 dnl *** configure external libs ***
211 HAVE_FFMPEG_UNINSTALLED=1
213 AC_ARG_WITH(system-ffmpeg,
214 [AC_HELP_STRING([--with-system-ffmpeg], [use system FFmpeg libraries])])
216 if test "x$with_system_ffmpeg" = "xyes"; then
217 PKG_CHECK_MODULES(FFMPEG, libavutil libavcodec libavformat)
218 PKG_CHECK_MODULES(POSTPROC, libavutil libavcodec libpostproc)
219 PKG_CHECK_MODULES(SWSCALE, libavutil libswscale)
220 saved_CPPFLAGS="$CPPFLAGS"
221 CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
222 AC_CHECK_HEADERS([avi.h])
223 CPPFLAGS="$saved_CPPFLAGS"
224 AC_DEFINE([FFMPEG_SOURCE], ["system install"], [Describes where the FFmpeg libraries come from.])
225 HAVE_FFMPEG_UNINSTALLED=0
226 AC_MSG_NOTICE([Using system-installed FFMpeg code])
228 ======================================================================
229 WARNING: you have chosen to build gst-ffmpeg against a random
230 external version of ffmpeg instead of building it against the tested
231 internal ffmpeg snapshot that is included with gst-ffmpeg.
233 This is a very bad idea. So bad in fact that words cannot express
234 just how bad it is. Suffice to say that it is BAD.
236 The GStreamer developers cannot and will not support a gst-ffmpeg
237 built this way. Any bug reports that indicate there is an external
238 version of ffmpeg involved will be closed immediately without further
241 The reason such a setup can't be supported is that the ffmpeg API
242 and ABI is in constant flux, yet there aren't any official releases
243 of the ffmpeg library to develop against. This makes it impossible
244 to guarantee that gst-ffmpeg will work reliably, or even compile,
245 with a randomly picked version ffmpeg. Even if gst-ffmpeg compiles
246 and superficially appears to work fine against your chosen external
247 ffmpeg version, that might just not be the case on other systems, or
248 even the same system at a later time, or when using decoders,
249 encoders, demuxers or muxers that have not been tested.
251 Please do not create or distribute binary packages of gst-ffmpeg
252 that link against an external ffmpeg. Thank you!
253 ======================================================================
256 dnl No, this is not too extreme, we want people to see and read the above
260 source "$srcdir/ffmpegrev"
262 AC_MSG_NOTICE([Using ffmpeg revision $FFMPEG_REVISION])
264 dnl libgstffmpeg.la: include dirs
265 FFMPEG_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavformat \
266 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \
267 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec \
268 -I \$(top_srcdir)/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 -Wno-deprecated-declarations"
282 dnl libgstpostproc.la: libs to statically link to
283 POSTPROC_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libpostproc/libpostproc.a \
284 \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a"
287 SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libswscale \
288 -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \
289 -I \$(top_srcdir)/gst-libs/ext/ffmpeg \
290 -Wno-deprecated-declarations"
292 dnl libgstswscale.la: libs to statically link to
293 SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libswscale/libswscale.a \
294 \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a"
296 FFMPEG_SUBDIRS=gst-libs
297 AC_DEFINE(HAVE_AVI_H)
298 AC_DEFINE([FFMPEG_SOURCE], ["local snapshot"], [Describes where the FFmpeg libraries come from.])
300 AC_ARG_WITH(ffmpeg-extra-configure,
301 AC_HELP_STRING([--with-ffmpeg-extra-configure="xxx"],
302 [extra configure options for internal ffmpeg ./configure script]),,
303 with_ffmpeg_extra_configure=no)
305 # Enable shared and static so that we get .a files, but with PIC code.
306 ac_configure_args="$ac_configure_args --disable-vhook --disable-ffserver --disable-ffplay --enable-postproc --enable-swscale --enable-gpl --enable-static --enable-shared --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices --disable-network"
308 # if we are cross-compiling, tell ffmpeg so
309 if test "x$cross_compiling" = xyes; then
310 ac_configure_args="$ac_configure_args --enable-cross-compile \
311 --target-os=$host_os --arch=$host_cpu --cross-prefix=$host_alias-"
315 # Unfortunately, in Mac OS 10.5 the current rev of ffmpeg builds
316 # some non-PIC code into the .a file. See
317 # http://trac.macosforge.org/projects/macports/ticket/13725 for more
320 ac_configure_args="$ac_configure_args --disable-mmx --disable-altivec"
323 ac_configure_args="$ac_configure_args --enable-memalign-hack"
324 WIN32_LIBS="-lws2_32"
331 # append extra configure options to ac_configure_args if needed
332 if test "x$with_ffmpeg_extra_configure" != no; then
333 ac_configure_args="$ac_configure_args $with_ffmpeg_extra_configure"
336 AC_SUBST(FFMPEG_CO_DIR)
338 AC_SUBST(FFMPEG_REVISION)
339 AC_SUBST(FFMPEG_EXTERNALS_REVISION)
340 AC_CONFIG_SUBDIRS(gst-libs/ext/ffmpeg)
341 AC_MSG_NOTICE([Using included FFMpeg code])
344 AC_SUBST(FFMPEG_CFLAGS)
345 AC_SUBST(FFMPEG_LIBS)
346 AC_SUBST(FFMPEG_SUBDIRS)
347 AC_SUBST(POSTPROC_CFLAGS)
348 AC_SUBST(POSTPROC_LIBS)
349 AC_SUBST(SWSCALE_CFLAGS)
350 AC_SUBST(SWSCALE_LIBS)
353 if test x$HAVE_FFMPEG_UNINSTALLED = x1; then
354 AC_DEFINE(HAVE_FFMPEG_UNINSTALLED, [], [Defined if building against uninstalled FFmpeg source])
356 AM_CONDITIONAL(HAVE_FFMPEG_UNINSTALLED, test x$HAVE_FFMPEG_UNINSTALLED = x1)
358 SHAVE_INIT([common],[enable])
369 ext/libpostproc/Makefile
370 ext/libswscale/Makefile
372 gst-libs/ext/Makefile
374 docs/version.entities