gst/debug/breakmydata.c: Fix gst_buffer_is_writable() assertion.
[platform/upstream/gst-plugins-good.git] / configure.ac
1 AC_PREREQ(2.52)
2
3 dnl please read gstreamer/docs/random/autotools before changing this file
4
5 dnl initialize autoconf
6 dnl releases only do -Wall, cvs and prerelease does -Werror too
7 dnl use a three digit version number for releases, and four for cvs/pre
8 AC_INIT(GStreamer Good Plug-ins, 0.10.5.1,
9     http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer,
10     gst-plugins-good)
11
12 AG_GST_INIT
13
14 dnl initialize automake
15 AM_INIT_AUTOMAKE
16
17 dnl define PACKAGE_VERSION_* variables
18 AS_VERSION
19
20 dnl check if this is a release version
21 AS_NANO(GST_CVS="no", GST_CVS="yes")
22
23 dnl can autoconf find the source ?
24 AC_CONFIG_SRCDIR([gst/law/alaw.c])
25
26 dnl define the output header for config
27 AM_CONFIG_HEADER([config.h])
28
29 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
30 AM_MAINTAINER_MODE
31
32 dnl sets host_* variables
33 AC_CANONICAL_HOST
34
35 dnl our libraries and install dirs use major.minor as a version
36 GST_MAJORMINOR=$PACKAGE_VERSION_MAJOR.$PACKAGE_VERSION_MINOR
37 dnl we override it here if we need to for the release candidate of new series
38 GST_MAJORMINOR=0.10
39 AC_SUBST(GST_MAJORMINOR)
40
41 dnl FIXME: this macro doesn't actually work;
42 dnl the generated libtool script has no support for the listed tags.
43 dnl So this needs to be fixed first if we want to use this
44 dnl AS_LIBTOOL_TAGS
45
46 AM_PROG_LIBTOOL
47
48 dnl *** required versions of GStreamer stuff ***
49 GST_REQ=0.10.11.1
50 GSTPB_REQ=0.10.11.1
51
52 dnl *** autotools stuff ****
53
54 dnl allow for different autotools
55 AS_AUTOTOOLS_ALTERNATE
56
57 dnl Add parameters for aclocal
58 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I common/m4")
59
60 dnl set up gettext
61 dnl the version check needs to stay here because autopoint greps for it
62 AM_GNU_GETTEXT_VERSION([0.11.5])
63 AM_GNU_GETTEXT([external])
64 AG_GST_GETTEXT([gst-plugins-good-$GST_MAJORMINOR])
65
66 dnl *** check for arguments to configure ***
67
68 AG_GST_ARG_DEBUG
69 AG_GST_ARG_PROFILING
70 AG_GST_ARG_VALGRIND
71 AG_GST_ARG_GCOV
72
73 AG_GST_ARG_EXAMPLES
74
75 AG_GST_ARG_WITH_PKG_CONFIG_PATH
76 AG_GST_ARG_WITH_PACKAGE_NAME
77 AG_GST_ARG_WITH_PACKAGE_ORIGIN
78
79 dnl these are all the gst plug-ins, compilable without additional libs
80 dnl videofilter is at the top because others depend on it
81 GST_PLUGINS_ALL="\
82                 videofilter \
83                 alpha \
84                 apetag \
85                 audiofx \
86                 auparse \
87                 autodetect \
88                 avi \
89                 cutter \
90                 debug \
91                 effectv \
92                 id3demux \
93                 icydemux \
94                 flx \
95                 goom \
96                 law \
97                 level \
98                 matroska \
99                 monoscope \
100                 multipart \
101                 rtp     \
102                 rtsp    \
103                 smpte   \
104                 udp     \
105                 videobox \
106                 videomixer \
107                 wavenc \
108                 wavparse \
109                 "
110 AC_SUBST(GST_PLUGINS_ALL)
111
112 GST_PLUGINS_SELECTED=""
113
114 AC_ARG_WITH(plugins,
115     AC_HELP_STRING([--with-plugins],
116       [comma-separated list of plug-ins to compile]),
117     [for i in `echo $withval | tr , ' '`; do
118         if echo $GST_PLUGINS_ALL | grep $i > /dev/null
119         then
120             GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED $i"
121         else
122             echo "plug-in $i not recognized, ignoring..."
123         fi
124     done],
125     [GST_PLUGINS_SELECTED=$GST_PLUGINS_ALL])
126
127 dnl disable gst plugins we might not be able to build on this
128 dnl platform: udp and rtsp (ugly but minimally invasive)
129 dnl FIXME: maybe move to sys
130 AC_CHECK_HEADERS([sys/socket.h], HAVE_SYS_SOCKET_H=yes)
131 AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
132
133 if test "x$HAVE_SYS_SOCKET_H" != "xyes" -a "x$HAVE_WINSOCK2_H" != "xyes"; then
134   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/udp//`
135   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/rtsp//`
136 fi
137
138 if test "x$HAVE_WINSOCK2_H" = "xyes"; then
139   WIN32_LIBS="-lws2_32"
140   AC_SUBST(WIN32_LIBS)
141 fi
142
143 dnl ext plug-ins; plug-ins that have external dependencies
144 AG_GST_CHECK_FEATURE(EXTERNAL, [building of plug-ins with external deps],,
145   [HAVE_EXTERNAL=yes], enabled,
146   [
147     AC_MSG_NOTICE(building external plug-ins)
148     BUILD_EXTERNAL="yes"
149   ],[
150     AC_MSG_NOTICE(all plug-ins with external dependencies will not be built)
151     BUILD_EXTERNAL="no"
152   ])
153 AM_CONDITIONAL(BUILD_EXTERNAL, test "x$BUILD_EXTERNAL" = "xyes")
154
155 dnl experimental plug-ins; stuff that hasn't had the dust settle yet
156 AG_GST_CHECK_FEATURE(EXPERIMENTAL, [enable building of experimental plug-ins],,
157 [HAVE_EXPERIMENTAL=yes],disabled,
158 [
159   AC_MSG_WARN(building experimental plug-ins)
160   USE_GST_V4L2="yes"
161 ],[
162   AC_MSG_NOTICE(not building experimental plug-ins)
163   USE_GST_V4L2="no"
164   GST_PLUGINS_SELECTED=`echo $GST_PLUGINS_SELECTED | $SED -e s/monoscope//`
165 ])
166
167 AC_SUBST(GST_PLUGINS_SELECTED)
168
169 dnl *** checks for platform ***
170
171 dnl * hardware/architecture *
172
173 dnl common/m4/gst-arch.m4
174 dnl check CPU type
175 AG_GST_ARCH
176
177 dnl Determine endianness
178 AC_C_BIGENDIAN
179
180 dnl *** checks for programs ***
181
182 dnl find a compiler
183 AC_PROG_CC
184
185 dnl determine c++ compiler
186 AC_PROG_CXX
187 dnl determine if c++ is available on this system
188 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
189
190 dnl determine c++ preprocessor
191 dnl FIXME: do we need this ?
192 AC_PROG_CXXCPP
193
194 AS_PROG_OBJC
195
196 AC_PATH_PROG(VALGRIND_PATH, valgrind, no)
197 AM_CONDITIONAL(HAVE_VALGRIND, test ! "x$VALGRIND_PATH" = "xno")
198
199 dnl check for gconftool-2
200 dnl this macro defines an am conditional, so it needs to be run always
201 AM_GCONF_SOURCE_2
202
203 dnl check for documentation tools
204 GTK_DOC_CHECK([1.3])
205 AS_PATH_PYTHON([2.1])
206 AG_GST_PLUGIN_DOCS([1.3],[2.1])
207
208 dnl *** checks for libraries ***
209
210 dnl check for libm, for sin()
211 AC_CHECK_LIBM
212 AC_SUBST(LIBM)
213
214 dnl *** checks for header files ***
215
216 dnl check if we have ANSI C header files
217 AC_HEADER_STDC
218
219 dnl used in gst/rtp/gstasteriskh263.c
220 AC_CHECK_HEADERS([netinet/in.h])
221 AC_CHECK_HEADERS([winsock2.h])
222 AM_CONDITIONAL(HAVE_WINSOCK2_H, test "x$HAVE_WINSOCK2_H" = "xyes")
223
224 dnl *** checks for types/defines ***
225
226 dnl Check for FIONREAD ioctl declaration.  This check is needed
227 dnl for the UDP plugin to build on Solaris 
228 GST_CHECK_FIONREAD
229
230 dnl *** checks for structures ***
231
232 dnl *** checks for compiler characteristics ***
233
234 dnl FIXME: check if this is used; was used for floatcast.h in base
235 dnl Check for fast float to int casting as defined in C99
236 AC_C99_FUNC_LRINT
237 AC_C99_FUNC_LRINTF
238
239 dnl *** checks for library functions ***
240
241 dnl Check for mmap (needed by electricfence plugin)
242 AC_FUNC_MMAP
243 AM_CONDITIONAL(GST_HAVE_MMAP, test "x$ac_cv_func_mmap_fixed_mapped" == "xyes")
244
245 dnl *** checks for dependency libraries ***
246
247 dnl GLib is required
248 AG_GST_GLIB_CHECK([2.6])
249
250 dnl liboil is required
251 PKG_CHECK_MODULES(LIBOIL, liboil-0.3 >= 0.3.2, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
252 if test "x${HAVE_LIBOIL}" != xyes ; then
253   AC_ERROR([liboil-0.3 is required])
254 fi
255
256 dnl checks for gstreamer
257 dnl uninstalled is selected preferentially -- see pkg-config(1)
258 AG_GST_CHECK_GST($GST_MAJORMINOR, [$GST_REQ])
259 AG_GST_CHECK_GST_BASE($GST_MAJORMINOR, [$GST_REQ])
260 AG_GST_CHECK_GST_GDP($GST_MAJORMINOR, [$GST_REQ])
261 AG_GST_CHECK_GST_CONTROLLER($GST_MAJORMINOR, [$GST_REQ])
262 AG_GST_CHECK_GST_CHECK($GST_MAJORMINOR, [$GST_REQ], no)
263 AG_GST_CHECK_GST_PLUGINS_BASE($GST_MAJORMINOR, [$GSTPB_REQ])
264
265 GST_TOOLS_DIR=`pkg-config --variable=toolsdir gstreamer-$GST_MAJORMINOR`
266 if test -z $GST_TOOLS_DIR; then
267   AC_MSG_ERROR([no tools dir defined in GStreamer pkg-config file; core upgrade needed.])
268 fi
269 AC_SUBST(GST_TOOLS_DIR)
270
271 AC_MSG_NOTICE(Using GStreamer Core Plugins in $GST_PLUGINS_DIR)
272 AC_MSG_NOTICE(Using GStreamer Base Plugins in $GSTPB_PLUGINS_DIR)
273
274 dnl FIXME: get rid of this by making sure gstreamer-check brings it in
275 dnl check for "check", unit testing library/header
276 AM_PATH_CHECK(0.9.2, HAVE_CHECK=yes, HAVE_CHECK=no)
277 AM_CONDITIONAL(HAVE_CHECK, test "x$HAVE_CHECK" = "xyes")
278
279 dnl Check for documentation xrefs
280 GLIB_PREFIX="`$PKG_CONFIG --variable=prefix glib-2.0`"
281 GST_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-$GST_MAJORMINOR`"
282 GSTPB_PREFIX="`$PKG_CONFIG --variable=prefix gstreamer-plugins-base-$GST_MAJORMINOR`"
283 AC_SUBST(GLIB_PREFIX)
284 AC_SUBST(GST_PREFIX)
285 AC_SUBST(GSTPB_PREFIX)
286
287 dnl GTK is optional and used in examples
288 HAVE_GTK=NO
289 PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.2.0, HAVE_GTK_22=yes, HAVE_GTK_22=no)
290 if test "x$HAVE_GTK_22" = "xyes"; then
291   HAVE_GTK=yes
292   GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
293   AC_SUBST(GTK_VERSION)
294   GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
295   AC_SUBST(GTK_BASE_DIR)
296   GDK_PIXBUF_LIBDIR=`$PKG_CONFIG --variable=libdir gdk-pixbuf-2.0`
297   GDK_PIXBUF_PREFIXDIR=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
298   AC_SUBST(GTK_BASE_DIR)
299 else
300   PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK_20=yes, HAVE_GTK_20=no)
301 fi
302 if test "x$HAVE_GTK_20" = "xyes"; then
303   HAVE_GTK=yes
304 fi
305 GTK_CFLAGS=$GTK2_CFLAGS
306 GTK_LIBS=$GTK2_LIBS
307 AC_SUBST(GTK_LIBS)
308 AC_SUBST(GTK_CFLAGS)
309 AC_SUBST(HAVE_GTK)
310 AM_CONDITIONAL(HAVE_GTK, test "x$HAVE_GTK" = "xyes")
311
312 dnl should we install schemas ?
313 translit(dnm, m, l) AM_CONDITIONAL(USE_GCONFTOOL, true)
314 AG_GST_CHECK_FEATURE(GCONFTOOL, [GConf schemas], , [
315   AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
316   if test x$GCONFTOOL = xno; then
317     AC_MSG_WARN(Not installing GConf schemas)
318     HAVE_GCONFTOOL="no"
319   else
320     HAVE_GCONFTOOL="yes"
321   fi
322   AC_SUBST(HAVE_GCONFTOOL)
323 ])
324
325 dnl *** set variables based on configure arguments ***
326
327 dnl set license and copyright notice
328 GST_LICENSE="LGPL"
329 AC_DEFINE_UNQUOTED(GST_LICENSE, "$GST_LICENSE", [GStreamer license])
330 AC_SUBST(GST_LICENSE)
331
332 dnl set location of plugin directory
333 AG_GST_SET_PLUGINDIR
334
335 dnl define an ERROR_CFLAGS Makefile variable
336 AG_GST_SET_ERROR_CFLAGS($GST_CVS)
337
338 dnl define correct level for debugging messages
339 AG_GST_SET_LEVEL_DEFAULT($GST_CVS)
340
341 dnl used in examples
342 AG_GST_DEFAULT_ELEMENTS
343
344 dnl *** sys plug-ins ***
345
346 echo
347 AC_MSG_NOTICE([Checking libraries for plugins in sys/])
348 echo
349
350 dnl *** OSS audio *** (Linux, *BSD)
351 translit(dnm, m, l) AM_CONDITIONAL(USE_OSS, true)
352 AG_GST_CHECK_FEATURE(OSS, [OSS audio], ossaudio, [
353  HAVE_OSS="yes"
354 dnl Linux and newer BSD versions :
355  AC_CHECK_HEADER(sys/soundcard.h, [
356    AC_DEFINE(HAVE_OSS_INCLUDE_IN_SYS,, [Define if OSS includes are in /sys/])
357    ] , [
358 dnl Some old BSD versions and also newer OpenBSD versions :
359    AC_CHECK_HEADER(soundcard.h, [
360      AC_DEFINE(HAVE_OSS_INCLUDE_IN_ROOT,, [Define if OSS includes are in /])
361      ], [
362   dnl Some old BSD versions :
363      AC_CHECK_HEADER(machine/soundcard.h, [
364        AC_DEFINE(HAVE_OSS_INCLUDE_IN_MACHINE,,
365          [Define if OSS includes are in /machine/])
366        ], [
367        HAVE_OSS="no"
368      ])
369    ])
370  ])
371 ])
372
373 dnl *** Sun Audio ***
374 translit(dnm, m, l) AM_CONDITIONAL(USE_SUNAUDIO, true)
375 AG_GST_CHECK_FEATURE(SUNAUDIO, [Sun Audio], sunaudio, [
376   AC_CHECK_HEADER(sys/audioio.h, HAVE_SUNAUDIO="yes", HAVE_SUNAUDIO="no")
377 ])
378
379 dnl *** OSX Audio ***
380 translit(dnm, m, l) AM_CONDITIONAL(USE_OSX_AUDIO, true)
381 AG_GST_CHECK_FEATURE(OSX_AUDIO, [OSX audio], osxaudio, [
382   AC_CHECK_HEADER(CoreAudio/CoreAudio.h, HAVE_OSX_AUDIO="yes", HAVE_OSX_AUDIO="no")
383 ])
384
385
386 dnl *** Video 4 Linux 2 ***
387 dnl for information about the header/define, see sys/v4l2/gstv4l2element.h
388 dnl renamed to GST_V4L2 because of some conflict with kernel headers
389 translit(dnm, m, l) AM_CONDITIONAL(USE_GST_V4L2, true)
390 AG_GST_CHECK_FEATURE(GST_V4L2, [Video 4 Linux 2], v4l2src, [
391   AC_MSG_CHECKING([Checking for uptodate v4l2 installation])
392   AC_TRY_COMPILE([
393 #include <sys/types.h>
394 #include <linux/types.h>
395 #define _LINUX_TIME_H
396 #define __user
397 #include <linux/videodev2.h>
398 #if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION)
399 #error too early v4l2 version or no v4l2 at all
400 #endif
401     ], [
402 return 0;
403     ], [
404       HAVE_GST_V4L2="yes"
405       AC_MSG_RESULT(yes)
406     ], [
407       HAVE_GST_V4L2="no"
408       AC_MSG_RESULT(no)
409       AC_CHECK_HEADER(linux/videodev2.h,
410       [
411         AC_MSG_WARN([video4linux2 headers were found, but they're old.])
412         AC_MSG_WARN([Please update v4l2 to compile the v4l2 plugins])
413       ], [
414         AC_MSG_WARN([video4linux2 was not found])
415       ])
416     ])
417
418   if [ test x$HAVE_GST_V4L2 = xyes ]; then
419     dnl check for missing v4l2_buffer declaration (see #135919)
420     MISSING_DECL=0
421     AC_MSG_CHECKING(struct v4l2_buffer declaration)
422     AC_TRY_COMPILE([
423 #include <sys/types.h>
424 #include <linux/types.h>
425 #define _LINUX_TIME_H
426 #define __user
427 #include <linux/videodev2.h>
428     ],[
429 struct v4l2_buffer buf;
430 buf.index = 0;
431 return 0;
432     ], [ AC_MSG_RESULT(yes) ], [ MISSING_DECL=1 && AC_MSG_RESULT(no) ])
433     if [ test x$MISSING_DECL = x1 ]; then
434       AC_DEFINE(GST_V4L2_MISSING_BUFDECL, 1, [struct v4l2_buffer missing])
435     fi
436
437     dnl check for XOverlay libraries
438     AG_GST_CHECK_XV
439   fi
440 ])
441
442 dnl Check for X11
443 translit(dnm, m, l) AM_CONDITIONAL(USE_X, true)
444 AG_GST_CHECK_FEATURE(X, [X libraries and plugins],
445                   [ximagesrc], [
446   AC_PATH_XTRA
447
448   dnl now try to find the HEADER
449   ac_cflags_save="$CFLAGS"
450   ac_cppflags_save="$CPPFLAGS"
451   CFLAGS="$CFLAGS $X_CFLAGS"
452   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
453   AC_CHECK_HEADER(X11/Xlib.h, HAVE_X="yes", HAVE_X="no")
454
455   if test "x$HAVE_X" = "xno"
456   then
457     AC_MSG_NOTICE([cannot find X11 development files])
458   else
459     dnl this is much more than we want
460     X_LIBS="$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS"
461     dnl AC_PATH_XTRA only defines the path needed to find the X libs,
462     dnl it does not add the libs; therefore we add them here
463     X_LIBS="$X_LIBS -lX11"
464     AC_SUBST(X_CFLAGS)
465     AC_SUBST(X_LIBS)
466
467     dnl check for Xfixes
468     PKG_CHECK_MODULES(XFIXES, xfixes, HAVE_XFIXES="yes", HAVE_XFIXES="no")
469     if test "x$HAVE_XFIXES" = "xyes"
470     then
471         XFIXES_CFLAGS="-DHAVE_XFIXES $XFIXES_CFLAGS"
472     fi
473     AC_SUBST(XFIXES_LIBS)
474     AC_SUBST(XFIXES_CFLAGS)
475
476     dnl check for Xdamage
477     PKG_CHECK_MODULES(XDAMAGE, xdamage, HAVE_XDAMAGE="yes", HAVE_XDAMAGE="no")
478     if test "x$HAVE_XDAMAGE" = "xyes"
479     then
480         XDAMAGE_CFLAGS="-DHAVE_XDAMAGE $XDAMAGE_CFLAGS"
481     fi
482     AC_SUBST(XDAMAGE_LIBS)
483     AC_SUBST(XDAMAGE_CFLAGS)
484   fi
485   AC_SUBST(HAVE_X)
486   CFLAGS="$ac_cflags_save"
487   CPPFLAGS="$ac_cppflags_save"
488 ])
489
490 dnl FIXME: this should be rolled into the test above, it's just an additional
491 dnl feature of the ximagesrc plug-in
492 dnl This is the same as in gst-plugins-base
493 dnl check for X Shm
494 translit(dnm, m, l) AM_CONDITIONAL(USE_XSHM, true)
495 AG_GST_CHECK_FEATURE(XSHM, [X Shared Memory extension], , [
496   if test x$HAVE_X = xyes; then
497     AC_CHECK_LIB(Xext, XShmAttach,
498                  HAVE_XSHM="yes", HAVE_XSHM="no",
499                  $X_LIBS)
500     if test "x$HAVE_XSHM" = "xyes"; then
501       XSHM_LIBS="-lXext"
502     else
503       dnl On AIX, it is in XextSam instead, but we still need -lXext
504       AC_CHECK_LIB(XextSam, XShmAttach,
505                    HAVE_XSHM="yes", HAVE_XSHM="no",
506                    $X_LIBS)
507       if test "x$HAVE_XSHM" = "xyes"; then
508         XSHM_LIBS="-lXext -lXextSam"
509       fi
510     fi
511   fi
512 ], ,[
513   AC_SUBST(HAVE_XSHM)
514   AC_SUBST(XSHM_LIBS)
515 ])
516
517 dnl for V4L2, we also need to know if we have XVIDEO
518 translit(dnm, m, l) AM_CONDITIONAL(USE_XVIDEO, true)
519 AG_GST_CHECK_FEATURE(XVIDEO, [X11 XVideo extensions],
520                   [], [
521   AG_GST_CHECK_XV
522 ])
523
524 dnl *** ext plug-ins ***
525 dnl keep this list sorted alphabetically !
526
527 if test "x$BUILD_EXTERNAL" = "xyes"; then
528
529 echo
530 AC_MSG_NOTICE([Checking libraries for plugins in ext/])
531 echo
532
533 dnl *** aalib ***
534 translit(dnm, m, l) AM_CONDITIONAL(USE_AALIB, true)
535 AG_GST_CHECK_FEATURE(AALIB, [aalib ASCII Art library], aasink, [
536   AM_PATH_AALIB(, HAVE_AALIB=yes, HAVE_AALIB=no)
537   AS_SCRUB_INCLUDE(AALIB_CFLAGS)
538 ])
539
540 dnl *** annodex ***
541 translit(dnm, m, l) AM_CONDITIONAL(USE_ANNODEX, true)
542 AG_GST_CHECK_FEATURE(ANNODEX, [XML library], annodex, [
543   AG_GST_PKG_CHECK_MODULES(ANNODEX, libxml-2.0 >= 2.4.9)
544 ])
545
546 dnl *** cairo ***
547 translit(dnm, m, l) AM_CONDITIONAL(USE_CAIRO, true)
548 AG_GST_CHECK_FEATURE(CAIRO, [Cairo graphics rendering], cairo, [
549   AG_GST_PKG_CHECK_MODULES(CAIRO, cairo >= 1.0.0)
550 ])
551
552 dnl *** cdio ***
553 translit(dnm, m, l) AM_CONDITIONAL(USE_CDIO, true)
554 AG_GST_CHECK_FEATURE(CDIO, [cdio library], cdio, [
555   AG_GST_PKG_CHECK_MODULES(CDIO, libcdio >= 0.71)
556 ])
557
558 dnl **** ESound ****
559 translit(dnm, m, l) AM_CONDITIONAL(USE_ESD, true)
560 AG_GST_CHECK_FEATURE(ESD, [ESounD sound daemon], esdsink, [
561   AG_GST_PKG_CHECK_MODULES(ESD, esound >= 0.2.12)
562   if test $HAVE_ESD = no
563   then
564     AM_PATH_ESD(0.2.12, HAVE_ESD="yes")
565     AS_SCRUB_INCLUDE(ESD_CFLAGS)
566   fi
567 ])
568
569 dnl *** FLAC ***
570 translit(dnm, m, l) AM_CONDITIONAL(USE_FLAC, true)
571 AG_GST_CHECK_FEATURE(FLAC, [FLAC lossless audio], flac, [
572   AG_GST_CHECK_LIBHEADER(FLAC, FLAC, FLAC__seekable_stream_encoder_new, -lm, FLAC/all.h, FLAC_LIBS="-lFLAC -lm")
573   dnl API change in FLAC 1.1.1, so require that...
574   dnl (this check will also fail with FLAC 1.1.3 which changed API again
575   dnl and with which our plugin does not compile or work yet)
576   if test x$HAVE_FLAC = xyes; then
577     AC_CHECK_DECL(FLAC__SEEKABLE_STREAM_ENCODER_TELL_ERROR,
578                   HAVE_FLAC="yes", HAVE_FLAC="no", [
579 #include <FLAC/seekable_stream_encoder.h>
580                   ])
581   fi
582   AC_SUBST(FLAC_LIBS)
583 ])
584
585 dnl *** GConf ***
586 translit(dnm, m, l) AM_CONDITIONAL(USE_GCONF, true)
587 AG_GST_CHECK_FEATURE(GCONF, [GConf libraries], gconfelements, [
588   AG_GST_PKG_CHECK_MODULES(GCONF, gconf-2.0)
589 ])
590
591 dnl *** GDK pixbuf ***
592 translit(dnm, m, l) AM_CONDITIONAL(USE_GDK_PIXBUF, true)
593 AG_GST_CHECK_FEATURE(GDK_PIXBUF, [GDK pixbuf], gdkpixbuf, [
594   if test $HAVE_GTK_22 = "yes"; then HAVE_GDK_PIXBUF=yes; fi;
595 ])
596
597 dnl *** HAL ***
598 translit(dnm, m, l) AM_CONDITIONAL(USE_HAL, true)
599 AG_GST_CHECK_FEATURE(HAL, [HAL libraries], halelements, [
600   AG_GST_PKG_CHECK_MODULES(HAL, [hal >= 0.5.6, dbus-1 >= 0.32])
601 ])
602
603 dnl *** jpeg ***
604 dnl FIXME: we could use header checks here as well IMO
605 translit(dnm, m, l) AM_CONDITIONAL(USE_JPEG, true)
606 AG_GST_CHECK_FEATURE(JPEG, [jpeg library], jpeg, [
607   AC_ARG_WITH(jpeg-mmx,
608     [  --with-jpeg-mmx, path to MMX'ified JPEG library])
609   OLD_LIBS="$LIBS"
610   if test x$with_jpeg_mmx != x; then
611     LIBS="$LIBS -L$with_jpeg_mmx"
612   fi
613   AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
614   JPEG_LIBS="$LIBS -ljpeg-mmx"
615   LIBS="$OLD_LIBS"
616   if test x$HAVE_JPEG != xyes; then
617     AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
618     JPEG_LIBS="-ljpeg"
619   fi
620   AC_SUBST(JPEG_LIBS)
621 ])
622
623 dnl *** ladspa ***
624 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
625 AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
626   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
627 ], disabled)
628
629 dnl *** libcaca ***
630 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBCACA, true)
631 AG_GST_CHECK_FEATURE(LIBCACA, [libcaca coloured ASCII art], cacasink, [
632   AG_GST_PKG_CHECK_MODULES(LIBCACA, caca)
633   dnl only newer versions of libcaca ship caca.pc, so try caca-config as well
634   if test "x$HAVE_LIBCACA" != "xyes"; then
635     AG_GST_CHECK_CONFIGPROG(LIBCACA, caca-config)
636     dnl see if it compilation works too, might not if we are cross-compiling
637     if test "x$HAVE_LIBCACA" = "xyes"; then
638       AC_CHECK_LIB([caca], [caca_init], [HAVE_LIBCACA=yes],
639                    [HAVE_LIBCACA=no], [$LIBCACA_LIBS])
640     fi
641   fi
642 ])
643
644 dnl *** libdv ***
645 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDV, true)
646 AG_GST_CHECK_FEATURE(LIBDV, [libdv DV demuxer/decoder], dv, [
647   AG_GST_PKG_CHECK_MODULES(LIBDV, libdv >= 0.100)
648 ])
649
650 dnl *** libpng ***
651 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBPNG, true)
652 AG_GST_CHECK_FEATURE(LIBPNG, [Portable Network Graphics library], png, [
653   AG_GST_PKG_CHECK_MODULES(LIBPNG, libpng12)
654 ])
655
656 dnl *** dv1394 ***
657 translit(dnm, m, l) AM_CONDITIONAL(USE_DV1394, true)
658 AG_GST_CHECK_FEATURE(DV1394, [raw1394 and avc1394 library], 1394, [
659   dnl first test for libraw1394 >= 1.2.1
660   AG_GST_PKG_CHECK_MODULES(RAW1394, libraw1394 >= 1.2.1)
661   AG_GST_PKG_CHECK_MODULES(LIBIEC61883, libiec61883 >= 1.0.0)
662   dnl now see how far we got
663   if test x$HAVE_RAW1394 = xyes && \
664      test x$HAVE_LIBIEC61883 = xyes; then
665        AG_GST_CHECK_LIBHEADER(AVC1394,
666         avc1394, avc1394_send_command, $RAW1394_LIBS,
667         libavc1394/avc1394.h, AVC1394_LIBS="-lavc1394")
668        AG_GST_CHECK_LIBHEADER(ROM1394,
669         rom1394, rom1394_free_directory, $RAW1394_LIBS,
670         libavc1394/rom1394.h, ROM1394_LIBS="-lrom1394")
671        if test x$HAVE_AVC1394 = xyes && \
672           test x$HAVE_AVC1394 = xyes && \
673           test x$HAVE_ROM1394 = xyes; then
674           HAVE_DV1394=yes
675           DV1394_LIBS="$RAW1394_LIBS $AVC1394_LIBS $ROM1394_LIBS $LIBIEC61883_LIBS"
676           DV1394_CFLAGS="$RAW1394_CFLAGS $LIBIEC61883_CFLAGS -DHAVE_LIBIEC61883"
677           AC_SUBST(DV1394_CFLAGS)
678           AC_SUBST(DV1394_LIBS)
679         fi
680   else
681        if test x$HAVE_RAW1394 = xno; then
682           AG_GST_PKG_CHECK_MODULES(RAW1394, libraw1394 >= 1.1.0)
683           AG_GST_CHECK_LIBHEADER(AVC1394,
684            avc1394, avc1394_send_command, $RAW1394_LIBS,
685            libavc1394/avc1394.h, AVC1394_LIBS="-lavc1394")
686           AG_GST_CHECK_LIBHEADER(ROM1394,
687            rom1394, rom1394_free_directory, $RAW1394_LIBS,
688            libavc1394/rom1394.h, ROM1394_LIBS="-lrom1394")
689           if test x$HAVE_RAW1394 = xyes && \
690              test x$HAVE_AVC1394 = xyes && \
691              test x$HAVE_ROM1394 = xyes; then
692              HAVE_DV1394=yes
693              DV1394_LIBS="$RAW1394_LIBS $AVC1394_LIBS $ROM1394_LIBS"
694              DV1394_CFLAGS="$RAW1394_CFLAGS"
695              if test x$HAVE_LIBIEC61883 = xyes; then
696                DV1394_CFLAGS="$RAW1394_CFLAGS $LIBIEC61883_CFLAGS -DHAVE_LIBIEC61883"
697                DV1394_LIBS="$DV1394_LIBS $LIBIEC61883_LIBS"
698              fi
699              AC_SUBST(DV1394_CFLAGS)
700              AC_SUBST(DV1394_LIBS)
701            fi
702          fi
703   fi
704 ])
705
706 dnl *** shout2 ***
707 translit(dnm, m, l) AM_CONDITIONAL(USE_SHOUT2, true)
708 AG_GST_CHECK_FEATURE(SHOUT2, [Shoutcast/Icecast client library], shout2, [
709   AG_GST_PKG_CHECK_MODULES(SHOUT2, shout >= 2.0)
710   if test $HAVE_SHOUT2 = no
711   then
712     AM_PATH_SHOUT2(HAVE_SHOUT2="yes")
713     AC_SUBST(SHOUT2_CFLAGS)
714     AC_SUBST(SHOUT2_LIBS)
715   fi
716 ])
717
718 dnl *** speex >= 1.0.4 or >= 1.1.5 ***
719 dnl   1.1.4 and earlier were not API/ABI compatible with 1.0
720 dnl   1.1.6 is the first to use a .pc/pkg-config file ***
721 dnl   speex_jitter.h is 1.1.x only
722 translit(dnm, m, l) AM_CONDITIONAL(USE_SPEEX, true)
723 AG_GST_CHECK_FEATURE(SPEEX, [speex speech codec], speex, [
724   AG_GST_PKG_CHECK_MODULES(SPEEX, speex >= 1.1.6)
725   if test $HAVE_SPEEX = no
726   then
727     AG_GST_CHECK_LIBHEADER(SPEEX, speex, speex_bits_init, , speex/speex.h, [
728       AC_CHECK_HEADER(speex/speex_jitter.h, [
729         dnl speex 1.1.x :
730         AG_GST_CHECK_LIBHEADER(SPEEX, speex, speex_encode_int, , speex/speex.h, [
731           dnl speex 1.1.5 or + :
732           HAVE_SPEEX="yes"
733           SPEEX_LIBS="-lspeex"
734           AC_SUBST(SPEEX_CFLAGS)
735           AC_SUBST(SPEEX_LIBS)
736         ],[
737           HAVE_SPEEX="no"
738         ])
739       ],[
740         dnl speex 1.0.x :
741           AC_CHECK_DECL(SPEEX_GET_LOOKAHEAD, [
742             dnl speex 1.0.4
743             HAVE_SPEEX="yes"
744             SPEEX_LIBS="-lspeex"
745             AC_SUBST(SPEEX_CFLAGS)
746             AC_SUBST(SPEEX_LIBS)
747
748             AC_DEFINE_UNQUOTED(SPEEX_1_0, 1,
749               [defined if speex 1.0.x API detected])
750         ],[
751             HAVE_SPEEX="no"
752             AC_MSG_NOTICE(You need at least 1.0.4 to compile the speex plugin)
753         ], [
754 #include <speex/speex.h>
755         ])
756       ])
757     ])
758   fi
759 ])
760
761 dnl *** taglib ***
762 translit(dnm, m, l) AM_CONDITIONAL(USE_TAGLIB, true)
763 AG_GST_CHECK_FEATURE(TAGLIB, [taglib tagging library], taglib, [
764   AG_GST_PKG_CHECK_MODULES(TAGLIB, taglib >= 1.4)
765   if test "x$HAVE_CXX" != "xyes"; then
766     USE_TAGLIB=false
767     AC_MSG_NOTICE([Not building taglib plugin: no C++ compiler found])
768   fi
769 ])
770
771 dnl *** id3demux prefers to have zlib ***
772 translit(dnm, m, l) AM_CONDITIONAL(USE_ZLIB, true)
773 AG_GST_CHECK_FEATURE(ZLIB, [zlib support for id3demux],, [
774   AG_GST_CHECK_LIBHEADER(ZLIB,
775     z, uncompress,, zlib.h, [
776     HAVE_ZLIB="yes"
777     ZLIB_LIBS="-lz"
778     AC_SUBST(ZLIB_LIBS)
779   ])
780 ])
781
782 else
783
784 dnl not building plugins with external dependencies,
785 dnl but we still need to set the conditionals
786 AM_CONDITIONAL(USE_GCONFTOOL, false)
787 AM_CONDITIONAL(USE_OSS, false)
788 AM_CONDITIONAL(USE_SUNAUDIO, false)
789 AM_CONDITIONAL(USE_OSX_AUDIO, false)
790 AM_CONDITIONAL(USE_X, false)
791 AM_CONDITIONAL(USE_XSHM, false)
792 AM_CONDITIONAL(USE_AALIB, false)
793 AM_CONDITIONAL(USE_ANNODEX, false)
794 AM_CONDITIONAL(USE_CAIRO, false)
795 AM_CONDITIONAL(USE_CDIO, false)
796 AM_CONDITIONAL(USE_ESD, false)
797 AM_CONDITIONAL(USE_FLAC, false)
798 AM_CONDITIONAL(USE_GCONF, false)
799 AM_CONDITIONAL(USE_GDK_PIXBUF, false)
800 AM_CONDITIONAL(USE_HAL, false)
801 AM_CONDITIONAL(USE_JPEG, false)
802 AM_CONDITIONAL(USE_LADSPA, false)
803 AM_CONDITIONAL(USE_LIBCACA, false)
804 AM_CONDITIONAL(USE_LIBDV, false)
805 AM_CONDITIONAL(USE_LIBPNG, false)
806 AM_CONDITIONAL(USE_DV1394, false)
807 AM_CONDITIONAL(USE_SHOUT2, false)
808 AM_CONDITIONAL(USE_SPEEX, false)
809 AM_CONDITIONAL(USE_TAGLIB, false)
810 AM_CONDITIONAL(USE_ZLIB, false)
811
812 fi dnl of EXT plugins
813
814 dnl *** finalize CFLAGS, LDFLAGS, LIBS
815
816 dnl Overview:
817 dnl GST_OPTION_CFLAGS:  common flags for profiling, debugging, errors, ...
818 dnl GST_*:              flags shared by all built objects
819 dnl GST_ALL_LDFLAGS:    linker flags shared by all
820 dnl GST_LIB_LDFLAGS:    not needed, we don't install libraries
821 dnl GST_LT_LDFLAGS:     library versioning of our libraries
822 dnl GST_PLUGIN_LDFLAGS: flags to be used for all plugins
823
824 dnl GST_OPTION_CFLAGS
825 if test "x$USE_DEBUG" = xyes; then
826    PROFILE_CFLAGS="-g"
827 fi
828 AC_SUBST(PROFILE_CFLAGS)
829
830 DEPRECATED_CFLAGS="-DGST_DISABLE_DEPRECATED"
831 AC_SUBST(DEPRECATED_CFLAGS)
832
833 dnl every flag in GST_OPTION_CFLAGS can be overridden at make time
834 GST_OPTION_CFLAGS="\$(ERROR_CFLAGS) \$(DEBUG_CFLAGS) \$(PROFILE_CFLAGS) \$(GCOV_CFLAGS) \$(OPT_CFLAGS) \$(DEPRECATED_CFLAGS)"
835 AC_SUBST(GST_OPTION_CFLAGS)
836
837 dnl our libraries need to be versioned correctly
838 AC_SUBST(GST_LT_LDFLAGS)
839
840 dnl FIXME: do we want to rename to GST_ALL_* ?
841 dnl prefer internal headers to already installed ones
842 dnl also add builddir include for enumtypes and marshal
843 dnl add ERROR_CFLAGS, but overridable
844 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS \$(GST_OPTION_CFLAGS)"
845 AC_SUBST(GST_CFLAGS)
846 AC_SUBST(GST_LIBS)
847
848 dnl LDFLAGS really should only contain flags, not libs - they get added before
849 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
850 GST_ALL_LDFLAGS="-no-undefined"
851 AC_SUBST(GST_ALL_LDFLAGS)
852
853 dnl this really should only contain flags, not libs - they get added before
854 dnl whatevertarget_LIBS and -L flags here affect the rest of the linking
855 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '^[_]*gst_plugin_desc\$\$' $GST_ALL_LDFLAGS"
856 AC_SUBST(GST_PLUGIN_LDFLAGS)
857
858 dnl *** output files ***
859
860 dnl keep this alphabetic per directory, please
861 AC_CONFIG_FILES(
862 Makefile
863 gst/Makefile
864 gst/alpha/Makefile
865 gst/apetag/Makefile
866 gst/audiofx/Makefile
867 gst/auparse/Makefile
868 gst/autodetect/Makefile
869 gst/avi/Makefile
870 gst/cutter/Makefile
871 gst/debug/Makefile
872 gst/effectv/Makefile
873 gst/id3demux/Makefile
874 gst/icydemux/Makefile
875 gst/goom/Makefile
876 gst/law/Makefile
877 gst/level/Makefile
878 gst/matroska/Makefile
879 gst/monoscope/Makefile
880 gst/multipart/Makefile
881 gst/rtp/Makefile
882 gst/rtsp/Makefile
883 gst/smpte/Makefile
884 gst/udp/Makefile
885 gst/videobox/Makefile
886 gst/videofilter/Makefile
887 gst/videomixer/Makefile
888 gst/wavenc/Makefile
889 gst/wavparse/Makefile
890 gst/flx/Makefile
891 ext/jpeg/Makefile
892 ext/Makefile
893 ext/aalib/Makefile
894 ext/annodex/Makefile
895 ext/cairo/Makefile
896 ext/cdio/Makefile
897 ext/dv/Makefile
898 ext/esd/Makefile
899 ext/flac/Makefile
900 ext/gconf/Makefile
901 ext/gdk_pixbuf/Makefile
902 ext/hal/Makefile
903 ext/ladspa/Makefile
904 ext/libcaca/Makefile
905 ext/libpng/Makefile
906 ext/raw1394/Makefile
907 ext/shout2/Makefile
908 ext/speex/Makefile
909 ext/taglib/Makefile
910 sys/Makefile
911 sys/oss/Makefile
912 sys/sunaudio/Makefile
913 sys/osxaudio/Makefile
914 sys/v4l2/Makefile
915 sys/ximage/Makefile
916 po/Makefile.in
917 tests/Makefile
918 tests/check/Makefile
919 tests/examples/Makefile
920 tests/examples/level/Makefile
921 tests/files/Makefile
922 tests/icles/Makefile
923 gconf/Makefile
924 gconf/gstreamer.schemas
925 common/Makefile
926 common/m4/Makefile
927 m4/Makefile
928 docs/Makefile
929 docs/plugins/Makefile
930 docs/version.entities
931 win32/common/config.h
932 pkgconfig/Makefile
933 pkgconfig/gstreamer-plugins-good-uninstalled.pc
934 gst-plugins-good.spec
935 )
936 AC_OUTPUT
937
938 AG_GST_OUTPUT_PLUGINS