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