Disable the mpegvideo codec
[framework/multimedia/gstreamer0.10-ffmpeg.git] / configure.ac
1 AC_PREREQ(2.60)
2
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,
8     gst-ffmpeg)
9
10 AG_GST_INIT
11
12 dnl initialize automake
13 AM_INIT_AUTOMAKE([-Wno-portability 1.10])
14
15 dnl define PACKAGE_VERSION_* variables
16 AS_VERSION
17
18 dnl check if this is a release version
19 AS_NANO(GST_GIT="no", GST_GIT="yes")
20
21 dnl can autoconf find the source ?
22 AC_CONFIG_SRCDIR([ext/ffmpeg/gstffmpeg.c])
23
24 dnl define the output header for config
25 AM_CONFIG_HEADER([config.h])
26
27 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
28 AM_MAINTAINER_MODE
29
30 dnl sets host_* variables
31 AC_CANONICAL_HOST
32
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)])
37
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
41 GST_MAJORMINOR=0.10
42 AC_SUBST(GST_MAJORMINOR)
43
44 AC_LIBTOOL_WIN32_DLL
45 AM_PROG_LIBTOOL
46
47 dnl *** required versions of GStreamer stuff ***
48 GST_REQ=0.10.22
49 ORC_REQ=0.4.5
50
51 dnl *** autotools stuff ****
52
53 dnl allow for different autotools
54 AS_AUTOTOOLS_ALTERNATE
55
56 dnl Add parameters for aclocal
57 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
58
59 dnl *** check for arguments to configure ***
60
61 AG_GST_ARG_WITH_PKG_CONFIG_PATH
62 AG_GST_ARG_WITH_PACKAGE_NAME
63 AG_GST_ARG_WITH_PACKAGE_ORIGIN
64 AG_GST_ARG_VALGRIND
65
66 dnl *** checks for platform ***
67
68 dnl * hardware/architecture *
69
70 dnl common/m4/gst-arch.m4
71 dnl check CPU type
72 AG_GST_ARCH
73
74 dnl *** checks for programs ***
75
76 dnl find a compiler
77 AC_PROG_CC
78
79 # FIXME: are these two lines needed ?
80 AM_PROG_CC_STDC
81 AS="${CC}"
82
83 dnl check if the compiler supports '-c' and '-o' options
84 AM_PROG_CC_C_O
85
86 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
87 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
88
89 dnl check for documentation tools
90 AG_GST_DOCBOOK_CHECK
91 GTK_DOC_CHECK([1.3])
92 AS_PATH_PYTHON([2.1])
93 AG_GST_PLUGIN_DOCS([1.3],[2.1])
94
95 dnl *** checks for libraries ***
96
97 dnl check for libm, for sin()
98 AC_CHECK_LIBM
99 AC_SUBST(LIBM)
100
101 dnl *** checks for header files ***
102
103 dnl check if we have ANSI C header files
104 AC_HEADER_STDC
105
106 dnl *** checks for types/defines ***
107
108 dnl *** checks for structures ***
109
110 dnl *** checks for compiler characteristics ***
111
112 dnl *** checks for library functions ***
113
114 dnl *** checks for dependancy libraries ***
115
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")
123
124 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
125 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
126
127 dnl orc is required for cpu detection for libpostproc
128 ORC_CHECK([$ORC_REQ])
129
130 dnl *** set variables based on configure arguments ***
131
132 dnl set location of plugin directory
133 AG_GST_SET_PLUGINDIR
134
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 ])
141
142 dnl define correct level for debugging messages
143 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
144
145 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
146
147 dnl Overview:
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
154
155 dnl GST_OPTION_CFLAGS
156 if test "x$USE_DEBUG" = xyes; then
157    PROFILE_CFLAGS="-g"
158 fi
159 AC_SUBST(PROFILE_CFLAGS)
160
161 if test "x$GST_GIT" = "xyes"; then
162   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
163 else
164   DEPRECATED_CFLAGS=""
165 fi
166 AC_SUBST(DEPRECATED_CFLAGS)
167
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)"
170
171 AC_SUBST(GST_OPTION_CFLAGS)
172
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)"
178 AC_SUBST(GST_CFLAGS)
179 AC_SUBST(GST_LIBS)
180
181 GST_ALL_LDFLAGS="-no-undefined"
182 AC_SUBST(GST_ALL_LDFLAGS)
183
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)
188
189 dnl Add MacOSX specific flags
190 AC_CANONICAL_HOST
191 case $host_os in
192      darwin*)
193         DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
194         ;;
195      *)
196         DARWIN_LDFLAGS=""
197         ;;
198 esac
199 AC_SUBST(DARWIN_LDFLAGS)
200
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])
206 fi
207
208 dnl *** configure external libs ***
209
210 HAVE_FFMPEG_UNINSTALLED=1
211
212 AC_ARG_WITH(system-ffmpeg,
213             [AC_HELP_STRING([--with-system-ffmpeg], [use system FFmpeg libraries])])
214
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])
226   AC_MSG_WARN([
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.
231    
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.
234    
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
238    investigation.
239    
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.
249    
250    Please do not create or distribute binary packages of gst-ffmpeg
251    that link against an external ffmpeg. Thank you!
252   ======================================================================
253   ])
254
255   dnl No, this is not too extreme, we want people to see and read the above
256   sleep 15
257 else
258
259   . "$srcdir/ffmpegrev"
260   
261   AC_MSG_NOTICE([Using ffmpeg revision $FFMPEG_REVISION])
262   
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"
270
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"
275   dnl
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"
282
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"
286                                  
287   dnl
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"
293
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"
297
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.])
301
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)
306
307   # basic arguments
308   embffmpeg_configure_args="--prefix=$prefix"
309
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
318
319         embffmpeg_configure_args="$embffmpeg_configure_args \
320                                                           --enable-static --enable-pic --enable-optimizations \
321                                                           --disable-doc \
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 \
327                                                           --disable-parsers  \
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     \
360                                                           --enable-muxer=amr \
361                                                           --enable-muxer=tgp \
362                                                           --enable-muxer=mp4 \
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"
384
385
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-"
390   fi
391
392   case $host_os in
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
396     # info.
397     darwin*) 
398       embffmpeg_configure_args="$embffmpeg_configure_args --disable-mmx --disable-altivec"
399       ;;
400     mingw32*)
401       embffmpeg_configure_args="$embffmpeg_configure_args --enable-memalign-hack"
402       WIN32_LIBS="-lws2_32"
403       ;;
404     *)
405       WIN32_LIBS=
406       ;;
407   esac
408
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"
415   fi
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"
420   fi
421
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"
425   fi
426
427   AC_SUBST(FFMPEG_CO_DIR)
428   AC_SUBST(FFMPEG_SVN)
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"
433      origdir=`pwd`
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
437        confcmd=./configure
438      else
439        confcmd="$origdir"/"$ac_top_srcdir"/gst-libs/ext/ffmpeg/configure
440      fi
441
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])
446      cd "$origdir"
447     ],
448     [embffmpeg_configure_args="$embffmpeg_configure_args"])
449   AC_MSG_NOTICE([Using included FFMpeg code])
450 fi
451
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)
459 AC_SUBST(WIN32_LIBS)
460  
461 if test x$HAVE_FFMPEG_UNINSTALLED = x1; then
462   AC_DEFINE(HAVE_FFMPEG_UNINSTALLED, [], [Defined if building against uninstalled FFmpeg source])
463 fi
464 AM_CONDITIONAL(HAVE_FFMPEG_UNINSTALLED, test x$HAVE_FFMPEG_UNINSTALLED = x1)
465
466 AC_CONFIG_FILES(
467 Makefile
468 common/Makefile
469 common/m4/Makefile
470 gst-ffmpeg.spec
471 ext/Makefile
472 ext/ffmpeg/Makefile
473 ext/libpostproc/Makefile
474 ext/libswscale/Makefile
475 gst-libs/Makefile
476 gst-libs/ext/Makefile
477 docs/Makefile
478 docs/version.entities
479 tests/Makefile
480 tests/check/Makefile
481 tests/files/Makefile
482 )
483 AC_OUTPUT
484
485 ORC_OUTPUT