ext: ffmpeg/gstffmpeg*.[ch] => libav/gstav*.[ch]
[platform/upstream/gst-libav.git] / configure.ac
1 AC_PREREQ(2.62)
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 libav, 0.11.93.1,
7     http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
8     gst-libav)
9
10 AG_GST_INIT
11
12 dnl initialize automake
13 AM_INIT_AUTOMAKE([-Wno-portability 1.11 no-dist-gzip dist-xz tar-ustar])
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/libav/gstav.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([enable])
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_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
41 GST_API_VERSION=1.0
42 AC_SUBST(GST_API_VERSION)
43
44 AG_GST_LIBTOOL_PREPARE
45 AS_LIBTOOL(GST, 0, 0, 0)
46
47 dnl *** required versions of GStreamer stuff ***
48 GST_REQ=0.11.93
49 ORC_REQ=0.4.16
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_DISABLE_FATAL_WARNINGS
62
63 AG_GST_ARG_WITH_PKG_CONFIG_PATH
64 AG_GST_ARG_WITH_PACKAGE_NAME
65 AG_GST_ARG_WITH_PACKAGE_ORIGIN
66 AG_GST_ARG_VALGRIND
67
68 dnl *** checks for platform ***
69
70 dnl * hardware/architecture *
71
72 dnl common/m4/gst-arch.m4
73 dnl check CPU type
74 AG_GST_ARCH
75
76 dnl *** checks for programs ***
77
78 dnl find a compiler
79 AC_PROG_CC
80 AC_PROG_CC_STDC
81
82 dnl check if the compiler supports '-c' and '-o' options
83 AM_PROG_CC_C_O
84
85 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
86 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
87
88 dnl check for documentation tools
89 AG_GST_DOCBOOK_CHECK
90 GTK_DOC_CHECK([1.12])
91 AS_PATH_PYTHON([2.1])
92 AG_GST_PLUGIN_DOCS([1.3],[2.1])
93
94 dnl *** checks for libraries ***
95
96 dnl check for libm, for sin()
97 LT_LIB_M
98 AC_SUBST(LIBM)
99
100 dnl *** checks for header files ***
101
102 dnl check if we have ANSI C header files
103 AC_HEADER_STDC
104
105 dnl *** checks for types/defines ***
106
107 dnl *** checks for structures ***
108
109 dnl *** checks for compiler characteristics ***
110
111 dnl *** checks for library functions ***
112
113 dnl *** checks for dependancy libraries ***
114
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")
122
123 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
124 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
125
126 dnl *** set variables based on configure arguments ***
127
128 dnl set location of plugin directory
129 AG_GST_SET_PLUGINDIR
130
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 ])
137
138 dnl define correct level for debugging messages
139 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
140
141 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
142
143 dnl Overview:
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
150
151 dnl GST_OPTION_CFLAGS
152 if test "x$USE_DEBUG" = xyes; then
153    PROFILE_CFLAGS="-g"
154 fi
155 AC_SUBST(PROFILE_CFLAGS)
156
157 if test "x$GST_GIT" = "xyes"; then
158   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
159 else
160   DEPRECATED_CFLAGS=""
161 fi
162 AC_SUBST(DEPRECATED_CFLAGS)
163
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)"
166
167 AC_SUBST(GST_OPTION_CFLAGS)
168
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)"
175 AC_SUBST(GST_CFLAGS)
176 AC_SUBST(GST_LIBS)
177
178 GST_ALL_LDFLAGS="-no-undefined"
179 AC_SUBST(GST_ALL_LDFLAGS)
180
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)
185
186 dnl Add MacOSX specific flags
187 AC_CANONICAL_HOST
188 case $host_os in
189      darwin*)
190         DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
191         ;;
192      *)
193         DARWIN_LDFLAGS=""
194         ;;
195 esac
196 AC_SUBST(DARWIN_LDFLAGS)
197
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])
203 fi
204
205 AC_ARG_ENABLE(lgpl,
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])
210 fi
211
212 dnl *** configure external libs ***
213
214 HAVE_LIBAV_UNINSTALLED=1
215
216 AC_ARG_WITH(system-libav,
217             [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
218
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])
229   AC_MSG_WARN([
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.
234    
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.
237    
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
241    investigation.
242    
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.
252    
253    Please do not create or distribute binary packages of gst-Libav
254    that link against an external libav. Thank you!
255   ======================================================================
256   ])
257
258   dnl No, this is not too extreme, we want people to see and read the above
259   sleep 15
260 else
261
262   AC_MSG_NOTICE([Using local Libav snapshot])
263   
264   dnl libgstlibav.la: include dirs
265   LIBAV_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
266                  -Wno-deprecated-declarations"
267
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"
272
273   dnl
274   SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
275                   -Wno-deprecated-declarations"
276
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"
280
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.])
284
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]),,
288       with_libav=no)
289
290   # basic arguments
291   emblibav_configure_args="--prefix=$prefix"
292
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"
299
300   if test "x$enable_lgpl" != "xyes"; then
301     emblibav_configure_args="$emblibav_configure_args --enable-gpl"
302   fi
303
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-"
309   fi
310
311   case $host_os in
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
315     # info.
316     darwin*) 
317       emblibav_configure_args="$emblibav_configure_args --disable-mmx --disable-altivec"
318       ;;
319     mingw32*)
320       emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
321       WIN32_LIBS="-lws2_32"
322       ;;
323     *)
324       WIN32_LIBS=
325       ;;
326   esac
327
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"
334   fi
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"
339   fi
340
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"
344   fi
345
346   AC_SUBST(LIBAV_CO_DIR)
347   AC_SUBST(LIBAV_SVN)
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"
352      origdir=`pwd`
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
356        confcmd=./configure
357      else
358        confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
359      fi
360
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])
365      cd "$origdir"
366     ],
367     [emblibav_configure_args="$emblibav_configure_args"])
368   AC_MSG_NOTICE([Using included Libav code])
369 fi
370
371 AC_SUBST(LIBAV_CFLAGS)
372 AC_SUBST(LIBAV_LIBS)
373 AC_SUBST(LIBAV_SUBDIRS)
374 AC_SUBST(SWSCALE_CFLAGS)
375 AC_SUBST(SWSCALE_LIBS)
376 AC_SUBST(WIN32_LIBS)
377  
378 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
379   AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
380 fi
381 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
382
383 AC_CONFIG_FILES(
384 Makefile
385 common/Makefile
386 common/m4/Makefile
387 gst-libav.spec
388 ext/Makefile
389 ext/libav/Makefile
390 ext/libswscale/Makefile
391 gst-libs/Makefile
392 gst-libs/ext/Makefile
393 docs/Makefile
394 docs/version.entities
395 tests/Makefile
396 tests/check/Makefile
397 tests/files/Makefile
398 )
399 AC_OUTPUT
400
401 ORC_OUTPUT