ext/ffmpeg/Makefile.am (libgstffmpeg_la_LIBADD): Re-add -lz explicitly here.
[platform/upstream/gstreamer.git] / configure.ac
1 AC_PREREQ(2.52)
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.3.1,
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
14
15 dnl define PACKAGE_VERSION_* variables
16 AS_VERSION
17
18 dnl check if this is a release version
19 AS_NANO(GST_CVS="no", GST_CVS="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 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
36 GST_MAJORMINOR=0.10
37 AC_SUBST(GST_MAJORMINOR)
38
39 AM_PROG_LIBTOOL
40
41 dnl *** required versions of GStreamer stuff ***
42 GST_REQ=0.10.13
43 LIBOIL_MAJORMINOR=0.3
44 LIBOIL_REQ=0.3.6
45
46 dnl *** autotools stuff ****
47
48 dnl allow for different autotools
49 AS_AUTOTOOLS_ALTERNATE
50
51 dnl Add parameters for aclocal
52 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
53
54 dnl *** check for arguments to configure ***
55
56 AG_GST_ARG_WITH_PACKAGE_NAME
57 AG_GST_ARG_WITH_PACKAGE_ORIGIN
58 AG_GST_ARG_VALGRIND
59
60 dnl *** checks for platform ***
61
62 dnl * hardware/architecture *
63
64 dnl common/m4/gst-arch.m4
65 dnl check CPU type
66 AG_GST_ARCH
67
68 dnl *** checks for programs ***
69
70 dnl find a compiler
71 AC_PROG_CC
72
73 # FIXME: are these two lines needed ?
74 AM_PROG_CC_STDC
75 AS="${CC}"
76
77 dnl check if the compiler supports '-c' and '-o' options
78 AM_PROG_CC_C_O
79
80 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
81 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
82
83 dnl check for documentation tools
84 GTK_DOC_CHECK([1.3])
85 AS_PATH_PYTHON([2.1])
86
87 dnl *** checks for libraries ***
88
89 dnl check for libm, for sin()
90 AC_CHECK_LIBM
91 AC_SUBST(LIBM)
92
93 dnl *** checks for header files ***
94
95 dnl check if we have ANSI C header files
96 AC_HEADER_STDC
97
98 dnl *** checks for types/defines ***
99
100 dnl *** checks for structures ***
101
102 dnl *** checks for compiler characteristics ***
103
104 dnl *** checks for library functions ***
105
106 dnl *** checks for dependancy libraries ***
107
108 dnl checks for gstreamer
109 dnl uninstalled is selected preferentially -- see pkg-config(1)
110 AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ])
111 AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ])
112 AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GST_REQ])
113 AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
114 AM_CONDITIONAL(HAVE_GST_CHECK, test "x$HAVE_GST_CHECK" = "xyes")
115
116 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
117 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
118
119 dnl liboil is required for cpu detection for libpostproc
120 dnl FIXME : In theory we should be able to compile libpostproc with cpudetect
121 dnl capabilities, which would enable us to get rid of this
122 PKG_CHECK_MODULES(LIBOIL, liboil-$LIBOIL_MAJORMINOR >= $LIBOIL_REQ, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
123 if test "x$HAVE_LIBOIL" != "xyes"
124 then
125   AC_MSG_ERROR([liboil-$LIBOIL_REQ or later is required])
126   AC_ERROR
127 fi
128
129 AC_SUBST(LIBOIL_CFLAGS)
130 AC_SUBST(LIBOIL_LIBS)
131
132 dnl *** set variables based on configure arguments ***
133
134 dnl set location of plugin directory
135 AG_GST_SET_PLUGINDIR
136
137 dnl define an ERROR_CFLAGS Makefile variable
138 AG_GST_SET_ERROR_CFLAGS($GST_CVS)
139
140 dnl define correct level for debugging messages
141 AG_GST_SET_LEVEL_DEFAULT($GST_CVS)
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_CVS" = "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="\$(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="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS \$(GST_OPTION_CFLAGS)"
176 AC_SUBST(GST_CFLAGS)
177 AC_SUBST(GST_LIBS)
178
179 GST_ALL_LDFLAGS="-no-undefined"
180 AC_SUBST(GST_ALL_LDFLAGS)
181
182 dnl this really should only contain flags, not libs - they get added before
183 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
184 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc\$\$' $GST_ALL_LDFLAGS"
185 AC_SUBST(GST_PLUGIN_LDFLAGS)
186
187 dnl Add MacOSX specific flags
188 AC_CANONICAL_HOST
189 case $host_os in
190      darwin*)
191         DARWIN_LDFLAGS="-Wl,-read_only_relocs,suppress"
192         ;;
193      *)
194         DARWIN_LDFLAGS=""
195         ;;
196 esac
197 AC_SUBST(DARWIN_LDFLAGS)
198
199 dnl *** configure external libs ***
200
201 HAVE_FFMPEG_UNINSTALLED=1
202
203 AC_ARG_WITH(system-ffmpeg,
204             [AC_HELP_STRING([--with-system-ffmpeg], [use system FFmpeg libraries])])
205
206 if test "x$with_system_ffmpeg" = "xyes"; then
207   PKG_CHECK_MODULES(FFMPEG, libavutil libavcodec libavformat)
208   PKG_CHECK_MODULES(POSTPROC, libavcodec libpostproc)
209   saved_CPPFLAGS="$CPPFLAGS"
210   CPPFLAGS="$CPPFLAGS $FFMPEG_CFLAGS"
211   AC_CHECK_HEADERS([avi.h])
212   CPPFLAGS="$saved_CPPFLAGS"
213   AC_DEFINE([FFMPEG_SOURCE], ["system install"], [Describes where the FFmpeg libraries come from.])
214   HAVE_FFMPEG_UNINSTALLED=0
215   AC_MSG_NOTICE([Using system-installed FFMpeg code])
216   AC_MSG_WARN([
217   ======================================================================
218    WARNING: you have chosen to build gst-ffmpeg against a random
219    external version of ffmpeg instead of building it against the tested
220    internal ffmpeg snapshot that is included with gst-ffmpeg.
221    
222    This is a very bad idea.  So bad in fact that words cannot express
223    just how bad it is.  Suffice to say that it is BAD.
224    
225    The GStreamer developers cannot and will not support a gst-ffmpeg
226    built this way.  Any bug reports that indicate there is an external
227    version of ffmpeg involved will be closed immediately without further
228    investigation.
229    
230    The reason such a setup can't be supported is that the ffmpeg API
231    and ABI is in constant flux, yet there aren't any official releases
232    of the ffmpeg library to develop against.  This makes it impossible
233    to guarantee that gst-ffmpeg will work reliably, or even compile,
234    with a randomly picked version ffmpeg.  Even if gst-ffmpeg compiles
235    and superficially appears to work fine against your chosen external
236    ffmpeg version, that might just not be the case on other systems, or
237    even the same system at a later time, or when using decoders,
238    encoders, demuxers or muxers that have not been tested.
239    
240    Please do not create or distribute binary packages of gst-ffmpeg
241    that link against an external ffmpeg. Thank you!
242   ======================================================================
243   ])
244
245   dnl No, this is not too extreme, we want people to see and read the above
246   sleep 15
247 else
248
249   source ./ffmpegrev 
250   
251   AC_MSG_NOTICE([Using ffmpeg revision $FFMPEG_REVISION])
252   
253   dnl libgstffmpeg.la: include dirs
254   FFMPEG_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavformat \
255                  -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil \
256                  -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec \
257                  -Wno-deprecated-declarations"
258
259   dnl libgstffmpeg.la: libs to statically link to        
260   FFMPEG_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libavformat/libavformat.a \
261                \$(top_builddir)/gst-libs/ext/ffmpeg/libavcodec/libavcodec.a \
262                \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a"
263   dnl
264   POSTPROC_CFLAGS="-I \$(top_srcdir)/gst-libs/ext/ffmpeg/libpostproc    \
265                    -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavutil      \
266                    -I \$(top_srcdir)/gst-libs/ext/ffmpeg/libavcodec     \
267                    -Wno-deprecated-declarations"
268
269   dnl libgstpostproc.la: libs to statically link to
270   POSTPROC_LIBS="\$(top_builddir)/gst-libs/ext/ffmpeg/libpostproc/libpostproc.a \
271                  \$(top_builddir)/gst-libs/ext/ffmpeg/libavutil/libavutil.a"
272                                  
273   FFMPEG_SUBDIRS=gst-libs
274   AC_DEFINE(HAVE_AVI_H)
275   AC_DEFINE([FFMPEG_SOURCE], ["local snapshot"], [Describes where the FFmpeg libraries come from.])
276   ac_configure_args="$ac_configure_args --disable-vhook --disable-ffserver --disable-ffplay --enable-pp --enable-gpl --enable-static --disable-encoder=flac --disable-decoder=cavs --extra-cflags=-fPIC"
277   case $host_os in
278     # Unfortunately, in Mac OS 10.5 the current rev of ffmpeg builds
279     # some non-PIC code into the .a file. See
280     # http://trac.macosforge.org/projects/macports/ticket/13725 for more
281     # info.
282     darwin*) 
283       ac_configure_args="$ac_configure_args --disable-mmx --disable-altivec"
284       ;;
285     *)
286       # --disable-shared on macos turns on -mdynamic-no-pic, which we
287       # can't have
288       ac_configure_args="$ac_configure_args --disable-shared"
289       ;;
290   esac
291   AC_SUBST(FFMPEG_CO_DIR)
292   AC_SUBST(FFMPEG_SVN)
293   AC_SUBST(FFMPEG_REVISION)
294   AC_CONFIG_SUBDIRS(gst-libs/ext/ffmpeg)
295   AC_MSG_NOTICE([Using included FFMpeg code])
296 fi
297
298 AC_SUBST(FFMPEG_CFLAGS)
299 AC_SUBST(FFMPEG_LIBS)
300 AC_SUBST(FFMPEG_SUBDIRS)
301 AC_SUBST(POSTPROC_CFLAGS)
302 AC_SUBST(POSTPROC_LIBS)
303   
304 AC_DEFINE_UNQUOTED(HAVE_FFMPEG_UNINSTALLED, $HAVE_FFMPEG_UNINSTALLED,
305                    [Defined if building against uninstalled FFmpeg source])
306 AM_CONDITIONAL(HAVE_FFMPEG_UNINSTALLED, test x$HAVE_FFMPEG_UNINSTALLED = x1)
307
308 AC_CONFIG_FILES(
309 Makefile
310 gst-ffmpeg.spec
311 ext/Makefile
312 ext/ffmpeg/Makefile
313 ext/libpostproc/Makefile
314 gst-libs/Makefile
315 gst-libs/ext/Makefile
316 docs/Makefile
317 docs/version.entities
318 docs/plugins/Makefile
319 common/Makefile
320 common/m4/Makefile
321 tests/Makefile
322 tests/check/Makefile
323 )
324 AC_OUTPUT
325