configure: fix os type configure option for android
[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, 1.0.1.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, 1, 0, 1)
46
47 dnl *** required versions of GStreamer stuff ***
48 GST_REQ=1.0.0
49
50 ORC_REQ=0.4.16
51 ORC_CHECK([$ORC_REQ])
52
53 dnl *** autotools stuff ****
54
55 dnl allow for different autotools
56 AS_AUTOTOOLS_ALTERNATE
57
58 dnl Add parameters for aclocal
59 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
60
61 dnl *** check for arguments to configure ***
62
63 AG_GST_ARG_DISABLE_FATAL_WARNINGS
64
65 AG_GST_ARG_WITH_PKG_CONFIG_PATH
66 AG_GST_ARG_WITH_PACKAGE_NAME
67 AG_GST_ARG_WITH_PACKAGE_ORIGIN
68 AG_GST_ARG_VALGRIND
69
70 dnl *** checks for platform ***
71
72 dnl * hardware/architecture *
73
74 dnl common/m4/gst-arch.m4
75 dnl check CPU type
76 AG_GST_ARCH
77
78 dnl *** checks for programs ***
79
80 dnl find a compiler
81 AC_PROG_CC
82 AC_PROG_CC_STDC
83
84 dnl check if the compiler supports '-c' and '-o' options
85 AM_PROG_CC_C_O
86
87 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
88 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
89
90 dnl check for documentation tools
91 AG_GST_DOCBOOK_CHECK
92 GTK_DOC_CHECK([1.12])
93 AS_PATH_PYTHON([2.1])
94 AG_GST_PLUGIN_DOCS([1.3],[2.1])
95
96 dnl *** checks for libraries ***
97
98 dnl check for libm, for sin()
99 LT_LIB_M
100 AC_SUBST(LIBM)
101
102 dnl *** checks for header files ***
103
104 dnl check if we have ANSI C header files
105 AC_HEADER_STDC
106
107 dnl *** checks for types/defines ***
108
109 dnl *** checks for structures ***
110
111 dnl *** checks for compiler characteristics ***
112
113 dnl *** checks for library functions ***
114
115 dnl *** checks for dependancy libraries ***
116
117 dnl checks for gstreamer
118 dnl uninstalled is selected preferentially -- see pkg-config(1)
119 AG_GST_CHECK_GST($GST_API_VERSION, [$GST_REQ])
120 AG_GST_CHECK_GST_BASE($GST_API_VERSION, [$GST_REQ])
121 AG_GST_CHECK_GST_PLUGINS_BASE($GST_API_VERSION, [$GST_REQ])
122 AG_GST_CHECK_GST_CHECK($GST_API_VERSION, [$GST_REQ], no)
123 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
124
125 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
126 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
127
128 dnl *** set variables based on configure arguments ***
129
130 dnl set location of plugin directory
131 AG_GST_SET_PLUGINDIR
132
133 dnl define an ERROR_CFLAGS Makefile variable
134 AG_GST_SET_ERROR_CFLAGS($FATAL_WARNINGS, [
135     -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef
136     -Wwrite-strings -Wformat-nonliteral -Wformat-security -Wold-style-definition
137     -Winit-self -Wmissing-include-dirs -Waddress
138     -Waggregate-return -Wno-multichar -Wnested-externs ])
139
140 dnl define correct level for debugging messages
141 AG_GST_SET_LEVEL_DEFAULT($GST_GIT)
142
143 dnl *** finalize CFLAGS, LDFLAGS, LIBS ***
144
145 dnl Overview:
146 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
147 dnl GST_*:              flags shared by built objects to link against GStreamer
148 dnl GST_ALL_LDFLAGS:    linker flags shared by all
149 dnl GST_LIB_LDFLAGS:    additional linker flags for all libaries
150 dnl GST_LT_LDFLAGS:     library versioning of our libraries
151 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
152
153 dnl GST_OPTION_CFLAGS
154 if test "x$USE_DEBUG" = xyes; then
155    PROFILE_CFLAGS="-g"
156 fi
157 AC_SUBST(PROFILE_CFLAGS)
158
159 if test "x$GST_GIT" = "xyes"; then
160   DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
161 else
162   DEPRECATED_CFLAGS=""
163 fi
164 AC_SUBST(DEPRECATED_CFLAGS)
165
166 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
167 GST_OPTION_CFLAGS="\$(WARNING_CFLAGS) \$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
168
169 AC_SUBST(GST_OPTION_CFLAGS)
170
171 dnl FIXME: do we want to rename to GST_ALL_* ?
172 dnl prefer internal headers to already installed ones
173 dnl also add builddir include for enumtypes and marshal
174 dnl add GST_OPTION_CFLAGS, but overridable
175 GST_CFLAGS="$GST_CFLAGS"
176 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
177 AC_SUBST(GST_CFLAGS)
178 AC_SUBST(GST_LIBS)
179
180 GST_ALL_LDFLAGS="-no-undefined"
181 AC_SUBST(GST_ALL_LDFLAGS)
182
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)
187
188 dnl Add MacOSX specific flags
189 AC_CANONICAL_HOST
190 case $host_os in
191      darwin*)
192         DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
193         ;;
194      *)
195         DARWIN_LDFLAGS=""
196         ;;
197 esac
198 AC_SUBST(DARWIN_LDFLAGS)
199
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])
205 fi
206
207 AC_ARG_ENABLE(lgpl,
208               [AC_HELP_STRING([--enable-lgpl], [build a LGPL licensed gst-libav])])
209 AM_CONDITIONAL(GST_LIBAV_ENABLE_LGPL, test "x$enable_lgpl" = "xyes")
210 if test "x$enable_lgpl" = "xyes"; then
211   AC_DEFINE([GST_LIBAV_ENABLE_LGPL], [], [Defined if building a LGPL-only version of gst-libav])
212 fi
213
214 dnl *** configure external libs ***
215
216 HAVE_LIBAV_UNINSTALLED=1
217
218 AC_ARG_WITH(system-libav,
219             [AC_HELP_STRING([--with-system-libav], [use system Libav libraries])])
220
221 if test "x$with_system_libav" = "xyes"; then
222   PKG_CHECK_MODULES(LIBAV, libavformat libavcodec libavutil) 
223   PKG_CHECK_MODULES(SWSCALE, libswscale libavutil)
224   saved_CPPFLAGS="$CPPFLAGS"
225   CPPFLAGS="$CPPFLAGS $LIBAV_CFLAGS"
226   AC_CHECK_HEADERS([avi.h])
227   CPPFLAGS="$saved_CPPFLAGS"
228   AC_DEFINE([LIBAV_SOURCE], ["system install"], [Describes where the Libav libraries come from.])
229   HAVE_LIBAV_UNINSTALLED=0
230   AC_MSG_NOTICE([Using system-installed libav code])
231   AC_MSG_WARN([
232   ======================================================================
233    WARNING: you have chosen to build gst-libav against a random
234    external version of Libav instead of building it against the tested
235    internal Libav snapshot that is included with gst-libav.
236    
237    This is a very bad idea.  So bad in fact that words cannot express
238    just how bad it is.  Suffice to say that it is BAD.
239    
240    The GStreamer developers cannot and will not support a gst-libav
241    built this way.  Any bug reports that indicate there is an external
242    version of Libav involved will be closed immediately without further
243    investigation.
244    
245    The reason such a setup can't be supported is that the Libav API
246    and ABI is in constant flux, yet there aren't any official releases
247    of the Libav library to develop against.  This makes it impossible
248    to guarantee that gst-libav will work reliably, or even compile,
249    with a randomly picked version Libav.  Even if gst-libav compiles
250    and superficially appears to work fine against your chosen external
251    Libav version, that might just not be the case on other systems, or
252    even the same system at a later time, or when using decoders,
253    encoders, demuxers or muxers that have not been tested.
254    
255    Please do not create or distribute binary packages of gst-Libav
256    that link against an external libav. Thank you!
257   ======================================================================
258   ])
259
260   dnl No, this is not too extreme, we want people to see and read the above
261   sleep 15
262 else
263
264   AC_MSG_NOTICE([Using local Libav snapshot])
265   
266   dnl libgstlibav.la: include dirs
267   LIBAV_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
268                 -I \$(top_builddir)/gst-libs/ext/libav \
269                  -Wno-deprecated-declarations"
270
271   dnl libgstlibav.la: libs to statically link to        
272   LIBAV_LIBS="\$(top_builddir)/gst-libs/ext/libav/libavformat/libavformat.a \
273                \$(top_builddir)/gst-libs/ext/libav/libavcodec/libavcodec.a \
274                \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
275
276   dnl
277   SWSCALE_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/libav \
278                   -I \$(top_builddir)/gst-libs/ext/libav \
279                   -Wno-deprecated-declarations"
280
281   dnl libgstswscale.la: libs to statically link to
282   SWSCALE_LIBS="\$(top_builddir)/gst-libs/ext/libav/libswscale/libswscale.a \
283                 \$(top_builddir)/gst-libs/ext/libav/libavutil/libavutil.a"
284
285   LIBAV_SUBDIRS=gst-libs
286   AC_DEFINE(HAVE_AVI_H)
287   AC_DEFINE([LIBAV_SOURCE], ["local snapshot"], [Describes where the Libav libraries come from.])
288
289   AC_ARG_WITH(libav-extra-configure, 
290       AC_HELP_STRING([--with-libav-extra-configure="xxx"],
291       [extra configure options for internal libav ./configure script]),,
292       with_libav=no)
293
294   # basic arguments
295   emblibav_configure_args="--prefix=$prefix"
296
297   # Enable pic and static so that we get .a files, but with PIC code.
298   emblibav_configure_args="$emblibav_configure_args --disable-avserver --disable-avplay\
299         --disable-avconv --disable-avprobe --enable-static --enable-pic \
300         --disable-encoder=flac --disable-decoder=cavs --disable-protocols --disable-devices\
301         --disable-network --disable-hwaccels --disable-filters --disable-doc\
302         --enable-optimizations"
303
304   if test "x$enable_lgpl" != "xyes"; then
305     emblibav_configure_args="$emblibav_configure_args --enable-gpl"
306   fi
307
308   # if we are cross-compiling, tell libav so
309   case $host in
310       *android*)
311         target_os=linux
312       ;;
313       *)
314         target_os=`echo $host_os | sed 's/-gnu//'`
315       ;;
316   esac
317
318   if test "x$cross_compiling" = xyes; then
319     emblibav_configure_args="$emblibav_configure_args --enable-cross-compile \
320         --target-os=$target_os --arch=$host_cpu --cross-prefix=$host_alias-"
321   fi
322
323   case $host_os in
324     # Unfortunately, in Mac OS 10.5 the current rev of libav builds
325     # some non-PIC code into the .a file. See
326     # http://trac.macosforge.org/projects/macports/ticket/13725 for more
327     # info.
328     darwin*) 
329       emblibav_configure_args="$emblibav_configure_args --disable-mmx --disable-altivec"
330       ;;
331     mingw32*)
332       emblibav_configure_args="$emblibav_configure_args --enable-memalign-hack"
333       WIN32_LIBS="-lws2_32"
334       ;;
335     *)
336       WIN32_LIBS=
337       ;;
338   esac
339
340   dnl checks for extra enable/disable flags
341   LIBAV_OPTS="(cd $srcdir/gst-libs/ext/libav && ./configure --help)"
342   # Let's check if we can disable the building of the libav binary
343   can_disable=`echo "$LIBAV_OPTS" | grep 'disable-ffmpeg'`
344   if test "$can_disable" != ""; then
345     emblibav_configure_args="$emblibav_configure_args --disable-ffmpeg"
346   fi
347   dnl check if libswscale needs enabling explicitly
348   can_enable=`echo "$LIBAV_OPTS" | grep 'enable-swscale'`
349   if test "$can_enable" != ""; then
350     emblibav_configure_args="$emblibav_configure_args --enable-swscale"
351   fi
352
353   # append extra configure options to emblibav_configure_args if needed
354   if test "x$with_libav_extra_configure" != "xno"; then
355     emblibav_configure_args="$emblibav_configure_args $with_libav_extra_configure"
356   fi
357
358   AC_SUBST(LIBAV_CO_DIR)
359   AC_SUBST(LIBAV_SVN)
360   AC_SUBST(LIBAV_REVISION)
361   AC_SUBST(LIBAV_EXTERNALS_REVISION)
362   AC_CONFIG_COMMANDS([configure-embedded-libav],
363     [echo "Configuring included Libav instance with args $emblibav_configure_args"
364      origdir=`pwd`
365      dnl Don't put path on the configure call when not needed, as FFmpeg's configure relies on it
366      dnl to detect out-of-tree builds
367      if test -z "$srcdir" -o "$srcdir" = .; then
368        confcmd=./configure
369      else
370        confcmd="$ac_abs_top_srcdir"/gst-libs/ext/libav/configure
371      fi
372
373      AS_MKDIR_P(["$ac_top_build_prefix"gst-libs/ext/libav])
374      cd "$ac_top_build_prefix"gst-libs/ext/libav &&
375          eval "$confcmd $emblibav_configure_args" ||
376          AC_MSG_ERROR([Failed to configure embedded Libav tree])
377      cd "$origdir"
378     ],
379     [emblibav_configure_args="$emblibav_configure_args"])
380   AC_MSG_NOTICE([Using included Libav code])
381 fi
382
383 AC_SUBST(LIBAV_CFLAGS)
384 AC_SUBST(LIBAV_LIBS)
385 AC_SUBST(LIBAV_SUBDIRS)
386 AC_SUBST(SWSCALE_CFLAGS)
387 AC_SUBST(SWSCALE_LIBS)
388 AC_SUBST(WIN32_LIBS)
389  
390 if test x$HAVE_LIBAV_UNINSTALLED = x1; then
391   AC_DEFINE(HAVE_LIBAV_UNINSTALLED, [], [Defined if building against uninstalled Libav source])
392 fi
393 AM_CONDITIONAL(HAVE_LIBAV_UNINSTALLED, test x$HAVE_LIBAV_UNINSTALLED = x1)
394
395 AC_CONFIG_FILES(
396 Makefile
397 common/Makefile
398 common/m4/Makefile
399 gst-libav.spec
400 ext/Makefile
401 ext/libav/Makefile
402 ext/libswscale/Makefile
403 gst-libs/Makefile
404 gst-libs/ext/Makefile
405 docs/Makefile
406 docs/version.entities
407 tests/Makefile
408 tests/check/Makefile
409 tests/files/Makefile
410 )
411 AC_OUTPUT
412
413 ORC_OUTPUT