some cleanups in regards to requirements
[platform/upstream/gstreamer.git] / configure.ac
1 dnl autoconf configuration file for gst-plugins 
2 AC_INIT
3 AC_CANONICAL_TARGET
4
5 dnl We disable static building for development, for time savings
6 dnl this goes before AS_LIBTOOL to appease autoconf
7 dnl *NOTE*: dnl this line before release, so release does static too
8 AM_DISABLE_STATIC
9
10 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
11 AM_MAINTAINER_MODE
12
13 dnl when going to/from release please set the nano (fourth number) right !
14 dnl releases only do Wall, cvs and prerelease does Werror too
15 AS_VERSION(gst-plugins, GST_PLUGINS_VERSION, 0, 8, 4, 1, GST_CVS="no", GST_CVS="yes")
16
17 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
18
19 dnl our libraries and install dirs use major.minor as a version
20 GST_MAJORMINOR=$GST_PLUGINS_VERSION_MAJOR.$GST_PLUGINS_VERSION_MINOR
21 dnl we override it here if we need to for the release candidate
22 #GST_MAJORMINOR=0.8
23 AC_SUBST(GST_MAJORMINOR)
24
25 dnl CURRENT, REVISION, AGE
26 dnl - library source changed -> increment REVISION
27 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
28 dnl - interfaces added -> increment AGE
29 dnl - interfaces removed -> AGE = 0
30 dnl for 0.8.3 release, gst_play_get_all_by_interface was added, so update
31 AS_LIBTOOL(GST_PLUGINS, 1, 0, 1)
32 AM_PROG_LIBTOOL
33
34 dnl FIXME take something else ?
35 AC_CONFIG_SRCDIR([gst/law/alaw.c])
36 AM_CONFIG_HEADER(config.h)
37
38 dnl Add parameters for aclocal
39 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
40 ACLOCAL_FLAGS="-I m4 -I common/m4"
41 AC_SUBST(ACLOCAL_AMFLAGS, $ACLOCAL_FLAGS)
42
43 AC_PROG_CC
44 AM_PROG_CC_STDC
45 AM_PROG_AS
46 AS="${CC}"
47 AS_PROG_OBJC
48
49 dnl the gettext stuff needed
50 AM_GNU_GETTEXT_VERSION(0.11.5)
51 AM_GNU_GETTEXT([external])
52                                                                                 
53 GETTEXT_PACKAGE=gst-plugins-$GST_MAJORMINOR
54 AC_SUBST(GETTEXT_PACKAGE)
55 AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], "$GETTEXT_PACKAGE",
56                    [gettext package name])
57                                                                                 
58 dnl define LOCALEDIR in config.h
59 AS_AC_EXPAND(LOCALEDIR, $datadir/locale)
60 AC_DEFINE_UNQUOTED([LOCALEDIR], "$LOCALEDIR",
61                    [gettext locale dir])
62
63 dnl decide on error flags
64 AS_COMPILER_FLAG(-Wall, GST_WALL="yes", GST_WALL="no")
65
66 if test "x$GST_WALL" = "xyes"; then
67    GST_ERROR="$GST_ERROR -Wall"
68
69    if test "x$GST_CVS" = "xyes"; then
70      AS_COMPILER_FLAG(-Werror,GST_ERROR="$GST_ERROR -Werror",GST_ERROR="$GST_ERROR")
71    fi
72 fi
73
74 dnl determine c++ compiler
75 AC_PROG_CXX
76 dnl determine if c++ is available on this system
77 AC_CHECK_PROG(HAVE_CXX, $CXX, yes, no)
78 dnl determine c++ preprocessor
79 AC_PROG_CXXCPP
80 AC_ISC_POSIX
81
82 AC_HEADER_STDC([])
83 AC_C_INLINE
84 AX_CREATE_STDINT_H
85
86 dnl Check for malloc.h
87 AC_CHECK_HEADER(malloc.h,[
88   AC_DEFINE(HAVE_MALLOC_H, 1, [whether malloc.h available])
89 ])
90
91 dnl Check for a way to display the function name in debug output
92 GST_CHECK_FUNCTION()
93
94 dnl define correct errorlevel for debugging messages. We want to have GST_ERROR
95 dnl messages printed when running cvs builds
96 if test "x$GST_CVS" = "xyes"; then
97   AC_DEFINE(GST_LEVEL_DEFAULT, GST_LEVEL_ERROR, [Default errorlevel to use])
98 fi
99
100 dnl Check for FIONREAD ioctl declaration :
101 GST_CHECK_FIONREAD()
102
103 dnl ############################################
104 dnl # Super Duper options for plug-in building #
105 dnl ############################################
106
107 dnl ext plug-ins; plug-ins that have external dependencies
108 GST_CHECK_FEATURE(EXTERNAL, [enable building of plug-ins with external deps],,
109 [HAVE_EXTERNAL=yes],enabled,
110 [
111   AC_MSG_WARN(building external plug-ins)
112   BUILD_EXTERNAL="yes"
113 ],[
114   AC_MSG_WARN(all plug-ins with external dependencies will not be built)
115   BUILD_EXTERNAL="no"
116 ])
117 # make BUILD_EXTERNAL available to Makefile.am
118 AM_CONDITIONAL(BUILD_EXTERNAL, test "x$BUILD_EXTERNAL" = "xyes")
119
120 dnl experimental plug-ins; stuff that hasn't had the dust settle yet
121 dnl read 'builds, but might not work'UTO
122 GST_CHECK_FEATURE(EXPERIMENTAL, [enable building of experimental plug-ins],,
123 [HAVE_EXPERIMENTAL=yes],disabled,
124 [
125   AC_MSG_WARN(building experimental plug-ins)
126   USE_TARKIN="yes"
127 ],[
128   AC_MSG_NOTICE(not building experimental plug-ins)
129   USE_TARKIN="no"
130 ])
131
132 dnl broken plug-ins; stuff that doesn't seem to build at the moment
133 GST_CHECK_FEATURE(BROKEN, [enable building of broken plug-ins],,
134 HAVE_BROKEN=yes,disabled,
135 [  
136   AC_MSG_WARN([building broken plug-ins -- no bug reports on these, only patches :)])
137 ],[
138   AC_MSG_NOTICE([not building broken plug-ins])
139 ])
140
141 dnl ##############################
142 dnl # Do automated configuration #
143 dnl ##############################
144
145 dnl Check for tools:
146 dnl ================
147
148 dnl allow for different autotools
149 AS_AUTOTOOLS_ALTERNATE()
150
151 dnl modify pkg-config path
152 AC_ARG_WITH(pkg-config-path, 
153    AC_HELP_STRING([--with-pkg-config-path],[colon-separated list of pkg-config(1) dirs]),
154    [export PKG_CONFIG_PATH=${withval}])
155
156 dnl check architecture
157 GST_ARCH()
158
159 dnl check for gconftool-2
160 translit(dnm, m, l) AM_CONDITIONAL(USE_GCONFTOOL, true)
161 GST_CHECK_FEATURE(GCONFTOOL, [GConf schemas], , [
162   AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
163   if test x$GCONFTOOL = xno; then
164     AC_MSG_WARN(Not installing GConf schemas)
165     HAVE_GCONFTOOL="no"
166   else
167     AM_GCONF_SOURCE_2
168     HAVE_GCONFTOOL="yes"
169   fi
170   AC_SUBST(HAVE_GCONFTOOL)
171 ])
172
173 dnl check for GConf libraries
174 translit(dnm, m, l) AM_CONDITIONAL(USE_GCONF, true)
175 GST_CHECK_FEATURE(GCONF, [GConf libraries], , [
176   PKG_CHECK_MODULES(GCONF, gconf-2.0, HAVE_GCONF="yes", HAVE_GCONF="no")
177   AC_SUBST(GCONF_CFLAGS)
178   AC_SUBST(GCONF_LIBS)
179 ])
180
181 dnl check for gstreamer
182 dnl uninstalled is selected preferentially -- see pkg-config(1)
183 GST_REQ=0.8.4
184 PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= $GST_REQ,
185   HAVE_GST="yes", HAVE_GST="no")
186
187 if test "x$HAVE_GST" = "xno"; then
188   AC_MSG_ERROR(no GStreamer found)
189 fi
190
191 GST_TOOLS_DIR=`pkg-config --variable=toolsdir gstreamer-$GST_MAJORMINOR`
192 if test -z $GST_TOOLS_DIR; then
193   AC_MSG_ERROR([no tools dir defined in GStreamer pkg-config file; core upgrade needed.])
194 fi
195 AC_SUBST(GST_TOOLS_DIR)
196
197 dnl check for gstreamer-control; uninstalled is selected preferentially
198 PKG_CHECK_MODULES(GST_CONTROL, gstreamer-control-$GST_MAJORMINOR >= $GST_REQ,
199   HAVE_GST_CONTROL="yes", HAVE_GST_CONTROL="no")
200
201 if test "x$HAVE_GST_CONTROL" = "xno"; then
202   AC_MSG_ERROR(no GStreamer Control Libs found)
203 fi
204
205 AC_SUBST(GST_CONTROL_LIBS)
206
207 dnl Determine endianness
208 AC_C_BIGENDIAN
209
210 dnl Check for fast float to int casting as defined in C99
211 AC_C99_FUNC_LRINT()
212 AC_C99_FUNC_LRINTF()
213
214 dnl Check for essential libraries first:
215 dnl ====================================
216
217 GST_GLIB2_CHECK()
218
219 dnl Check for additional libraries that we might use:
220 dnl =================================================
221 dnl GTK
222 HAVE_GTK=NO
223 PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.2.0, HAVE_GTK_22=yes, HAVE_GTK_22=no)
224 if test "x$HAVE_GTK_22" = "xyes"; then
225   HAVE_GTK=yes
226   GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
227   AC_SUBST(GTK_VERSION)
228   GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
229   GDK_PIXBUF_LIBDIR=`$PKG_CONFIG --variable=libdir gdk-pixbuf-2.0`
230   GDK_PIXBUF_PREFIXDIR=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
231   AC_SUBST(GTK_BASE_DIR)
232 else
233   PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK_20=yes, HAVE_GTK_20=no)
234 fi
235 if test "x$HAVE_GTK_20" = "xyes"; then
236   HAVE_GTK=yes
237 fi
238 GTK_CFLAGS=$GTK2_CFLAGS
239 GTK_LIBS=$GTK2_LIBS
240 AC_SUBST(GTK_LIBS)
241 AC_SUBST(GTK_CFLAGS)
242 AC_SUBST(HAVE_GTK)
243
244 # gdk_pixbuf gstreamer loader is considered experimental, so disable
245 # by default
246 if test "x$HAVE_GTK_22" = "xyes"; then
247   HAVE_GDK_LOADERS=yes
248 else
249   HAVE_GDK_LOADERS=no
250 fi
251
252 # we set the defaults always to make sure we have non-empty variables
253 # for the Makefile
254
255 # by default, stick to prefix
256 GDK_PIXBUF_LOADER_DIR=${libdir}/gtk-2.0/\${GTK_VERSION}/loaders
257 GDK_PIXBUF_CONF_DIR=${sysconfdir}/gtk-2.0
258
259
260 AC_ARG_ENABLE(gdk-pixbuf-loader,
261   AC_HELP_STRING([--enable-gdk-pixbuf-loader],
262               [whether to enable building of gdk_pixbuf loader]),
263               :, HAVE_GDK_LOADERS="no")
264
265 if test "x$HAVE_GDK_LOADERS" = "xyes"; then
266   AC_PATH_PROG(QUERYLOADERS, gdk-pixbuf-query-loaders, no)
267   # allow customization of pixbuf loader install location
268   # when nothing specified, adhere to prefix settings
269   # when called without any option with this argument, autodetect
270   # when called with a path, set to the given path
271
272   AC_ARG_WITH(gdk-pixbuf-loader-dir, 
273      AC_HELP_STRING([--with-gdk-pixbuf-loader-dir],
274         [directory to install the gdk_pixbuf loader (none for pkg-config default)]),
275      [
276       if test "x${withval}" != xyes ; then
277         GDK_PIXBUF_LOADER_DIR="${withval}"
278       else
279         GDK_PIXBUF_LOADER_DIR="$GDK_PIXBUF_LIBDIR/gtk-2.0/\$GTK_VERSION/loaders"
280       fi
281      ]
282   )
283   AS_AC_EXPAND(GDK_PIXBUF_LOADER_DIR, $GDK_PIXBUF_LOADER_DIR)
284   AC_SUBST(GDK_PIXBUF_LOADER_DIR)
285   AC_MSG_NOTICE([Putting GTK+-2 pixbuf loaders in $GDK_PIXBUF_LOADER_DIR])
286   
287   # allow customization of pixbuf loader configuration file
288   # when nothing specified, adhere to prefix settings
289   # when called without any option with this argument, autodetect
290   # when called with a path, set to the given path
291
292   AC_ARG_WITH(gdk-pixbuf-conf-dir, 
293      AC_HELP_STRING([--with-gdk-pixbuf-conf-dir],
294         [directory to install the gdk_pixbuf config (none for pkg-config default)]),
295      [
296       if test "x${withval}" != xyes ; then
297         GDK_PIXBUF_CONF_DIR="${withval}"
298       else
299         GDK_PIXBUF_CONF_DIR="$GDK_PIXBUF_PREFIXDIR/etc/gtk-2.0/"
300       fi
301      ]
302   )
303   AS_AC_EXPAND(GDK_PIXBUF_CONF_DIR, $GDK_PIXBUF_CONF_DIR)
304   AC_SUBST(GDK_PIXBUF_CONF_DIR)
305   AC_MSG_NOTICE([Putting GTK+-2 pixbuf loader config in $GDK_PIXBUF_CONF_DIR])
306 fi
307 AM_CONDITIONAL(HAVE_GDK_LOADERS, test "x$HAVE_GDK_LOADERS" = "xyes")
308
309 PKG_CHECK_MODULES(LIBOIL, liboil-0.1, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
310 AC_SUBST(LIBOIL_CFLAGS)
311 AC_SUBST(LIBOIL_LIBS)
312 if test "x${HAVE_LIBOIL}" = xyes ; then
313   #AC_DEFINE_UNQUOTED(HAVE_LIBOIL, 1, [Define if liboil is being used])
314   true
315 fi
316
317 dnl ===========================================================================
318 dnl ============================= gst plug-ins ================================
319 dnl ===========================================================================
320
321 plugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
322 AC_SUBST(plugindir)
323
324 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '[_]*(gst_|Gst|GST_).*' $GST_LIBS"
325 AC_SUBST(GST_PLUGIN_LDFLAGS)
326
327 dnl these are all the gst plug-ins, compilable without additional libs
328 GST_PLUGINS_ALL="\
329         ac3parse \
330         adder \
331         alpha \
332         asfdemux \
333         audioconvert \
334         audioscale \
335         audiorate \
336         auparse \
337         avi \
338         cdxaparse \
339         chart \
340         colorspace \
341         cutter \
342         debug \
343         deinterlace \
344         effectv \
345         festival \
346         ffmpegcolorspace \
347         filter \
348         flx \
349         goom \
350         interleave \
351         law \
352         level \
353         matroska \
354         median \
355         mixmatrix \
356         mpeg1sys \
357         mpeg1videoparse \
358         mpeg2sub \
359         mpegaudio \
360         mpegaudioparse \
361         mpegstream \
362         monoscope \
363         multifilesink \
364         multipart \
365         overlay \
366         passthrough \
367         playback \
368         playondemand \
369         qtdemux \
370         realmedia \
371         rtjpeg \
372         rtp \
373         silence \
374         sine \
375         smooth \
376         smpte \
377         spectrum \
378         speed \
379         stereo \
380         switch \
381         synaesthesia \
382         tags \
383         tcp \
384         typefind \
385         udp \
386         vbidec \
387         videobox \
388         videocrop \
389         videodrop \
390         videoflip \
391         videofilter \
392         videomixer \
393         videorate \
394         videoscale \
395         videotestsrc \
396         volenv \
397         volume \
398         wavenc \
399         wavparse \
400         y4m"
401
402 dnl see if we can build C++ plug-ins
403 if test "x$HAVE_CXX" = "xyes"; then
404   GST_PLUGINS_ALL="$GST_PLUGINS_ALL \
405                   modplug"
406 else
407   AC_MSG_WARN([Not compiling plug-ins requiring C++ compiler])
408 fi
409
410 AC_SUBST(GST_PLUGINS_ALL)
411
412 GST_PLUGINS_SELECTED=""
413
414 AC_ARG_WITH(plugins,
415     AC_HELP_STRING([--with-plugins],[comma-separated list of plug-ins to compile]),
416     [for i in `echo $withval | tr , ' '`; do
417         if echo $GST_PLUGINS_ALL | grep $i > /dev/null
418         then
419             GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED $i"
420         else
421             echo "plug-in $i not recognized, ignoring..."
422         fi
423     done],
424     [GST_PLUGINS_SELECTED=$GST_PLUGINS_ALL])
425
426 AC_SUBST(GST_PLUGINS_SELECTED)
427
428 dnl ==========================================================================
429 dnl ============================= sys plug-ins ================================
430 dnl ==========================================================================
431
432 dnl *** DXR3 card ***
433 translit(dnm, m, l) AM_CONDITIONAL(USE_DXR3, true)
434 GST_CHECK_FEATURE(DXR3, [DXR3 hardware MPEG DVD decoder],
435   dxr3videosink dxr3audiosink dxr3spusink, [
436   HAVE_DXR3=yes
437   AC_CHECK_HEADER(linux/em8300.h, ,
438                   [ AC_MSG_WARN([DXR3/em8300 header file not found]) &&
439                     HAVE_DXR3=no ] )
440   AC_CHECK_HEADER(linux/soundcard.h, ,
441                   [ AC_MSG_WARN([Generic sound header file not found]) &&
442                     HAVE_DXR3=no ] )
443 ])
444
445 dnl *** OSS audio *** (Linux, *BSD)
446 translit(dnm, m, l) AM_CONDITIONAL(USE_OSS, true)
447 GST_CHECK_FEATURE(OSS, [OSS audio], osssrc osssink, [
448   HAVE_OSS="yes"
449   dnl Linux and newer BSD versions :
450   AC_CHECK_HEADER(sys/soundcard.h, [
451     AC_DEFINE(HAVE_OSS_INCLUDE_IN_SYS,, [Define if OSS includes are in /sys/])
452     ] , [
453     dnl Some old BSD versions :
454     AC_CHECK_HEADER(soundcard.h, [
455       AC_DEFINE(HAVE_OSS_INCLUDE_IN_ROOT,, [Define if OSS includes are in /])
456       ], [
457       dnl Some old BSD versions :
458       AC_CHECK_HEADER(machine/soundcard.h, [
459         AC_DEFINE(HAVE_OSS_INCLUDE_IN_MACHINE,, [Define if OSS includes are in /machine/])
460         ], [
461         HAVE_OSS="no"
462       ])
463     ])
464   ])
465 ])
466
467 dnl *** OS X audio ***
468 translit(dnm, m, l) AM_CONDITIONAL(USE_OSX_AUDIO, true)
469 GST_CHECK_FEATURE(OSX_AUDIO, [OSX audio], osxaudiosrc osxaudiosink, [
470   AC_CHECK_HEADER(CoreAudio/CoreAudio.h, HAVE_OSX_AUDIO="yes", HAVE_OSX_AUDIO="no")
471 ])
472
473 dnl *** OS X video ***
474 translit(dnm, m, l) AM_CONDITIONAL(USE_OSX_VIDEO, true)
475 HAVE_OSX_VIDEO="no"
476 GST_CHECK_FEATURE(OSX_VIDEO, [OSX video], osxvideosink, [
477   AC_CHECK_HEADER(OpenGL/gl.h, HAVE_OSX_VIDEO="yes", HAVE_OSX_VIDEO="no")
478 ])
479 dnl in case header OpenGL/gl.h is found on other platforms
480 case "$host" in
481   *-*darwin*)
482     dnl do nothing
483     ;;
484   *)
485     HAVE_OSX_VIDEO="no"
486     ;;
487 esac
488
489 dnl *** QuickCam ***
490 translit(dnm, m, l) AM_CONDITIONAL(USE_QCAM, true)
491 GST_CHECK_FEATURE(QCAM, [QuickCam], qcamsrc, [
492   if test "x$HAVE_CPU_I386" != "xyes";
493   then
494     HAVE_QCAM="no"
495   else
496     AC_CHECK_HEADER(sys/io.h, HAVE_QCAM="yes", HAVE_QCAM="no")
497   fi
498   if test "x$HAVE_QCAM" != "xyes";
499   then
500     AC_MSG_WARN([QuickCam only works on i386-linux])
501   fi
502 ])
503
504 dnl *** Sun Audio ***
505 translit(dnm, m, l) AM_CONDITIONAL(USE_SUNAUDIO, true)
506 GST_CHECK_FEATURE(SUNAUDIO, [Sun Audio], sunaudiosink, [
507   AC_CHECK_HEADER(sys/audioio.h, HAVE_SUNAUDIO="yes", HAVE_SUNAUDIO="no")
508 ])
509
510 dnl *** Video CD ***
511 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
512 GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
513   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
514 ])
515
516 dnl *** OpenGL ***
517 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENGL, true)
518 GST_CHECK_FEATURE(OPENGL, [Open GL], glsink, [
519   AC_CHECK_HEADER(GL/gl.h, HAVE_OPENGL="yes", HAVE_OPENGL="no")
520 ])
521
522 dnl *** CDROM Audio ***
523 translit(dnm, m, l) AM_CONDITIONAL(USE_CDROM, true)
524 GST_CHECK_FEATURE(CDROM, [CDROM Audio], cdrom, [
525   AC_CHECK_HEADERS(linux/cdrom.h) dnl linux
526   AC_CHECK_HEADERS(sys/cdio.h) dnl almost everything else
527 dnl  AC_CHECK_HEADERS(dmedia/cdaudio.h) dnl irix
528
529   if test "${ac_cv_header_linux_cdrom_h}" = "yes" || test "${ac_cv_header_sys_cdio_h}" = "yes" || test "${ac_cv_header_dmedia_cdaudio_h}" = "yes"; then
530         case "$host" in 
531                 *-sun-* | *-*-linux*)
532                         AC_DEFINE(HAVE_CDROM_SOLARIS,, [Define if cdrom access is in Solaris style])
533                 ;;
534                 *-*-freebsd*)
535                         AC_DEFINE(HAVE_CDROM_BSD,, [Define if cdrom access is in BSD style])
536                 ;;
537                 *-*-netbsd* | *-*-openbsd*)
538                         AC_DEFINE(HAVE_CDROM_BSD,, [Define if cdrom access is in BSD style])
539                         AC_DEFINE(HAVE_CDROM_BSD_NETBSD,, [Define if cdrom access uses NetBSD variant])
540                 ;;
541                 *-*darwin*)
542                         AC_DEFINE(HAVE_CDROM_BSD,, [Define if cdrom access is in BSD style])
543                         AC_DEFINE(HAVE_CDROM_BSD_DARWIN,, [Define if cdrom access uses Darwin variant])
544                 ;;
545 dnl             *-irix-*)
546 dnl                     AC_DEFINE(HAVE_CDROM_IRIX,, [Define if cdrom access is in Irix DMedia style])
547 dnl             ;;
548     esac
549
550         HAVE_CDROM="yes"
551   else
552         HAVE_CDROM="no"
553   fi
554 ])
555
556 dnl Check for X11
557 translit(dnm, m, l) AM_CONDITIONAL(USE_X, true)
558 GST_CHECK_FEATURE(X, [X libraries and plugins],
559                   [ximagesink], [
560   AC_PATH_XTRA
561   dnl now try to find the HEADER
562   AC_CHECK_HEADER(X11/Xlib.h, HAVE_X="yes", HAVE_X="no")
563
564   if test "x$HAVE_X" = "xno"
565   then
566     AC_MSG_NOTICE([cannot find X11 development files])
567   else
568     dnl this is much more than we want
569     X_LIBS="$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS"
570     dnl AC_PATH_XTRA only defines the path needed to find the X libs,
571     dnl it does not add the libs; therefore we add them here
572     X_LIBS="$X_LIBS -lX11"
573     AC_SUBST(X_CFLAGS)
574     AC_SUBST(X_LIBS)
575   fi
576   AC_SUBST(HAVE_X)
577 ])
578   
579 dnl *** XVideo ***
580 dnl Look for the PIC library first, Debian requires it.
581 dnl Check debian-devel archives for gory details.
582 dnl 20020110:
583 dnl At the moment XFree86 doesn't distribute shared libXv due
584 dnl to unstable API.  On many platforms you CAN NOT link a shared
585 dnl lib to a static non-PIC lib.  This is what the xvideo GStreamer
586 dnl plug-in wants to do.  So Debian distributes a PIC compiled
587 dnl version of the static lib for plug-ins to link to when it is
588 dnl inappropriate to link the main application to libXv directly.
589 dnl FIXME: add check if this platform can support linking to a
590 dnl        non-PIC libXv, if not then don not use Xv.
591 dnl FIXME: perhaps warn user if they have a shared libXv since
592 dnl        this is an error until XFree86 starts shipping one
593    
594 dnl Check for Xv extension
595 translit(dnm, m, l) AM_CONDITIONAL(USE_XVIDEO, true)
596 GST_CHECK_FEATURE(XVIDEO, [X11 XVideo extensions],
597                   [xvimagesink], [
598   if test x$HAVE_X = xyes; then
599     AC_CHECK_LIB(Xv_pic, XvQueryExtension,
600                  HAVE_XVIDEO="yes", HAVE_XVIDEO="no",
601                  $X_LIBS -lXext)
602
603     if test x$HAVE_XVIDEO = xyes; then
604       XVIDEO_LIBS="-lXv_pic -lXext"
605       AC_SUBST(XVIDEO_LIBS)
606     else
607       dnl try again using something else if we didn't find it first
608       if test x$HAVE_XVIDEO = xno; then
609         AC_CHECK_LIB(Xv, XvQueryExtension,
610                    HAVE_XVIDEO="yes", HAVE_XVIDEO="no",
611                    $X_LIBS -lXext)
612
613         if test x$HAVE_XVIDEO = xyes; then
614           XVIDEO_LIBS="-lXv -lXext"
615           AC_SUBST(XVIDEO_LIBS)
616         fi
617       fi
618     fi
619   fi
620 ])
621
622 dnl check for X Shm
623 translit(dnm, m, l) AM_CONDITIONAL(USE_XSHM, true)
624 GST_CHECK_FEATURE(XSHM, [X Shared Memory extension], xshm, [
625   if test x$HAVE_X = xyes; then
626     AC_CHECK_LIB(Xext, XShmAttach, 
627                  HAVE_XSHM="yes", HAVE_XSHM="no",
628                  $X_LIBS) 
629     if test "x$HAVE_XSHM" = "xyes"; then
630       XSHM_LIBS="-lXext"
631     else
632       dnl On AIX, it is in XextSam instead, but we still need -lXext
633       AC_CHECK_LIB(XextSam, XShmAttach, 
634                    HAVE_XSHM="yes", HAVE_XSHM="no",
635                    $X_LIBS) 
636       if test "x$HAVE_XSHM" = "xyes"; then
637         XSHM_LIBS="-lXext -lXextSam"
638       fi
639     fi
640   fi
641 ], , [ 
642   AC_SUBST(HAVE_XSHM) 
643   AC_SUBST(XSHM_LIBS) 
644 ] )
645
646 dnl v4l/v4l2 checks have been moved down because they require X
647
648 dnl *** Video 4 Linux ***
649 dnl for information about the header/define, see sys/v4l/gstv4lelement.h
650 translit(dnm, m, l) AM_CONDITIONAL(USE_V4L, true)
651 GST_CHECK_FEATURE(V4L, [Video 4 Linux], v4lsrc v4lmjpegsrc v4lmjpegsink, [
652   # first check X
653   HAVE_V4L="no"
654   if test "$HAVE_X" = "yes"
655   then
656     AC_CHECK_DECL(VID_TYPE_MPEG_ENCODER, HAVE_V4L="yes", HAVE_V4L="no", [
657 #include <sys/types.h>
658 #define _LINUX_TIME_H
659 #include <linux/videodev.h>
660     ])
661   fi
662 ])
663
664 dnl *** Video 4 Linux 2 ***
665 dnl for information about the header/define, see sys/v4l2/gstv4l2element.h
666 translit(dnm, m, l) AM_CONDITIONAL(USE_V4L2, true)
667 GST_CHECK_FEATURE(GST_V4L2, [Video 4 Linux 2], v4l2src, [
668   HAVE_GST_V4L2="no"
669   if test "$HAVE_X" = "yes"
670   then
671     AC_MSG_CHECKING([Checking for uptodate v4l2 installation])
672     AC_TRY_COMPILE([
673 #include <sys/types.h>
674 #include <linux/types.h>
675 #define _LINUX_TIME_H
676 #include <linux/videodev2.h>
677 #if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION)
678 #error too early v4l2 version or no v4l2 at all
679 #endif
680     ], [
681 return 0;
682     ], [ HAVE_GST_V4L2="yes" && AC_MSG_RESULT(yes)],
683        [ HAVE_GST_V4L2="no"  && AC_MSG_RESULT(no) &&
684          AC_CHECK_HEADER(linux/videodev2.h,
685                          [ AC_MSG_WARN([video4linux2 headers were found, but they're old. Please update v4l2 to compile the v4l2 plugins])],
686                          [ AC_MSG_WARN([video4linux2 was not found])])
687        ])
688   fi
689   dnl check for missing v4l2_buffer declaration (see #135919)
690   if [ test x$HAVE_GST_V4L2 = xyes ]; then
691     MISSING_DECL=0
692     AC_MSG_CHECKING(struct v4l2_buffer declaration)
693     AC_TRY_COMPILE([
694 #include <sys/types.h>
695 #include <linux/types.h>
696 #define _LINUX_TIME_H
697 #include <linux/videodev2.h>
698     ],[
699 struct v4l2_buffer buf;
700 buf.index = 0;
701 return 0;
702     ], [ AC_MSG_RESULT(yes) ], [ MISSING_DECL=1 && AC_MSG_RESULT(no) ])
703     if [ test x$MISSING_DECL = x1 ]; then
704       AC_DEFINE(GST_V4L2_MISSING_BUFDECL, 1, [struct v4l2_buffer missing])
705     fi
706   fi
707 ])
708
709 dnl Next, check for the optional libraries:
710 dnl These are all libraries used in building plug-ins
711 dnl ================================================
712 dnl let's try and sort them alphabetically, shall we ?
713
714 if test "x$BUILD_EXTERNAL" = "xyes"; then
715
716 AC_MSG_NOTICE(Checking for plug-in dependency libraries)
717
718 dnl *** a52dec ***
719 translit(dnm, m, l) AM_CONDITIONAL(USE_A52DEC, true)
720 GST_CHECK_FEATURE(A52DEC, [a52dec], a52dec, [
721   AC_CHECK_A52DEC(HAVE_A52DEC=yes, HAVE_A52DEC=no)
722 ])
723
724 dnl *** aalib ***
725 translit(dnm, m, l) AM_CONDITIONAL(USE_AALIB, true)
726 GST_CHECK_FEATURE(AALIB, [aasink plug-in], aasink, [
727   AM_PATH_AALIB(, HAVE_AALIB=yes, HAVE_AALIB=no)
728   AS_SCRUB_INCLUDE(AALIB_CFLAGS)
729 ])
730
731 dnl *** alsa ***
732 translit(dnm, m, l) AM_CONDITIONAL(USE_ALSA, true)
733 GST_CHECK_FEATURE(ALSA, [alsa plug-ins], gstalsa, [
734   PKG_CHECK_MODULES(ALSA, alsa >= 0.9.1, [
735     HAVE_ALSA="yes"
736     AC_SUBST(ALSA_CFLAGS)
737     AC_SUBST(ALSA_LIBS)
738   ], [
739     AM_PATH_ALSA(0.9.1, HAVE_ALSA="yes", HAVE_ALSA="no")
740   ])
741 ])
742
743 dnl *** arts ***
744 dnl if mcopidl can't be found there's no use in compiling it
745 AC_CHECK_PROG(MCOPIDL, mcopidl, yes, no)
746 if test "x$HAVE_MCOPIDL" = "xno";
747 then
748   USE_ARTS=no
749 fi
750
751 translit(dnm, m, l) AM_CONDITIONAL(USE_ARTS, true)
752 GST_CHECK_FEATURE(ARTS, [arts plug-ins], arts, [
753   AM_PATH_ARTS(, HAVE_ARTS=yes, HAVE_ARTS=no)
754 ])
755
756 dnl *** artsc ***
757 translit(dnm, m, l) AM_CONDITIONAL(USE_ARTSC, true)
758 GST_CHECK_FEATURE(ARTSC, [artsd plug-ins], artsdsink, [
759   GST_CHECK_ARTSC()
760 ])
761
762 dnl *** audiofile ***
763 dnl this check uses the GST_CHECK_CONFIGPROG macro
764 translit(dnm, m, l) AM_CONDITIONAL(USE_AUDIOFILE, true)
765 GST_CHECK_FEATURE(AUDIOFILE, [audiofile], afsink afsrc, [
766   translit(dnm, m, l) AC_SUBST(AUDIOFILE_LIBS)
767   translit(dnm, m, l) AC_SUBST(AUDIOFILE_CFLAGS)
768   dnl check with pkg-config first
769   PKG_CHECK_MODULES(AUDIOFILE, audiofile, HAVE_AUDIOFILE="yes", HAVE_AUDIOFILE="no")
770   if test "x$HAVE_AUDIOFILE" = "xno"; then
771     GST_CHECK_CONFIGPROG(AUDIOFILE, audiofile-config)
772     dnl we need this function
773     AC_CHECK_LIB(audiofile, afOpenVirtualFile, , HAVE_AUDIOFILE="no")
774     AC_CHECK_LIB(audiofile, af_virtual_file_new, , HAVE_AUDIOFILE="no")
775   fi])
776
777 dnl *** CDParanoia ***
778 translit(dnm, m, l) AM_CONDITIONAL(USE_CDPARANOIA, true)
779 GST_CHECK_FEATURE(CDPARANOIA, [CDParanoia], cdparanoia, [
780   GST_CHECK_LIBHEADER(CDPARANOIA, cdda_interface, 
781                       cdda_open, -lm, 
782                       cdda_interface.h, 
783                       CDPARANOIA_LIBS="-lcdda_interface -lcdda_paranoia"
784                       HEADER_DIR="no"
785                       FOUND_CDPARANOIA="yes")
786   if test "x$FOUND_CDPARANOIA" != "xyes";
787   then
788     GST_CHECK_LIBHEADER(CDPARANOIA, cdda_interface, 
789                         cdda_open, -lm, 
790                         cdda/cdda_interface.h, 
791                         CDPARANOIA_LIBS="-lcdda_interface -lcdda_paranoia"
792                         HEADER_DIR="yes"
793                         FOUND_CDPARANOIA="yes")
794   fi
795   if test "x$HEADER_DIR" = "xyes";
796   then
797     AC_DEFINE_UNQUOTED(CDPARANOIA_HEADERS_IN_DIR, ,
798                        defined if cdda headers are in a cdda/ directory)
799   fi
800   AC_SUBST(CDPARANOIA_LIBS)
801 ])
802 dnl FIXME : add second check somehow if that is necessary
803 dnl AC_CHECK_LIB(cdda_paranoia, paranoia_init, : , HAVE_CDPARANOIA=no, -lcdda_interface )
804 dnl AC_CHECK_HEADER(cdda_paranoia.h, :, HAVE_CDPARANOIA=no)
805
806 dnl *** dirac ***
807 translit(dnm, m, l) AM_CONDITIONAL(USE_DIRAC, true)
808 GST_CHECK_FEATURE(DIRAC, [dirac plug-ins], dirac, [
809   PKG_CHECK_MODULES(DIRAC, dirac-pic >= 0.4, HAVE_DIRAC="yes", HAVE_DIRAC="no")
810   if test x$HAVE_DIRAC = xno ; then
811     PKG_CHECK_MODULES(DIRAC, dirac >= 0.4, HAVE_DIRAC="yes", HAVE_DIRAC="no")
812   fi
813   AC_SUBST(DIRAC_CFLAGS)
814   AC_SUBST(DIRAC_LIBS)
815 ])
816
817 dnl *** DIVX ***
818 translit(dnm, m, l) AM_CONDITIONAL(USE_DIVX, true)
819 GST_CHECK_FEATURE(DIVX, [divx plugins], divx, [
820   HAVE_DIVX=yes
821   AC_CHECK_HEADER(encore2.h, ,
822                   [ AC_MSG_WARN([Divx4linux encore headers not found]) &&
823                     HAVE_DIVX=no ] )
824   if [ test x$HAVE_DIVX = xyes ]; then
825     AC_MSG_CHECKING([Checking for valid divx4linux encore version])
826     AC_TRY_COMPILE([
827 #include <encore2.h>
828 #if ENCORE_VERSION != 20021024
829 #error Wrong version of divx encore libraries
830 #endif
831     ], [
832 return 0;
833     ], [ HAVE_DIVX=yes && AC_MSG_RESULT(yes)],
834        [ HAVE_DIVX=no  && AC_MSG_RESULT(no) &&
835          AC_MSG_WARN([Wrong version of divx4linux installed]) ])
836   fi
837   if [ test x$HAVE_DIVX = xyes ]; then
838     AC_CHECK_HEADER(decore.h, ,
839                     [ AC_MSG_WARN([Divx4linux decoder headers not found]) &&
840                       HAVE_DIVX=no ] )
841   fi
842   if [ test x$HAVE_DIVX = xyes ]; then
843     AC_MSG_CHECKING([Checking for valid divx4linux decore version])
844     AC_TRY_COMPILE([
845 #include <decore.h>
846 #if DECORE_VERSION != 20021112
847 #error Wrong version of divx decore libraries
848 #endif
849     ], [
850 return 0;
851     ], [ HAVE_DIVX=yes && AC_MSG_RESULT(yes)],
852        [ HAVE_DIVX=no  && AC_MSG_RESULT(no) &&
853          AC_MSG_WARN([Wrong version of divx4linux installed]) ])
854   fi
855   LIBS="-lm"
856   if test x$HAVE_DIVX = xyes; then
857     AC_CHECK_LIB(divxencore, encore, ,
858                  [ AC_MSG_WARN([Divx4linux encore libs not found]) &&
859                    HAVE_DIVX=no ] )
860   fi
861   if test x$HAVE_DIVX = xyes; then
862     AC_CHECK_LIB(divxdecore, decore, ,
863                  [ AC_MSG_WARN([Divx4linux decore libs not found]) &&
864                    HAVE_DIVX=no ] )
865   fi
866   if test x$HAVE_DIVX = xyes; then
867     DIVXENC_LIBS="-ldivxencore -lm"
868     DIVXDEC_LIBS="-ldivxdecore -lm"
869     AC_SUBST(DIVXENC_LIBS)
870     AC_SUBST(DIVXDEC_LIBS)
871   fi
872 ])
873
874 dnl *** DTS ***
875 translit(dnm, m, l) AM_CONDITIONAL(USE_DTS, true)
876 GST_CHECK_FEATURE(DTS, [dts library], dtsdec, [
877   GST_CHECK_LIBHEADER(DTS, dts_pic, dts_init, -lm, dts.h, DTS_LIBS="-ldts_pic -lm")
878   AC_SUBST(DTS_LIBS)
879 ])
880
881 dnl *** dvdread ***
882 translit(dnm, m, l) AM_CONDITIONAL(USE_DVDREAD, true)
883 GST_CHECK_FEATURE(DVDREAD, [dvdread library], dvdreadsrc, [
884   GST_CHECK_LIBHEADER(DVDREAD, dvdread, DVDOpen, , dvdread/dvd_reader.h, DVDREAD_LIBS="-ldvdread")
885   AC_SUBST(DVDREAD_LIBS)
886 ])
887
888 dnl *** dvdnav ***
889 translit(dnm, m, l) AM_CONDITIONAL(USE_DVDNAV, true)
890 GST_CHECK_FEATURE(DVDNAV, [dvdnav library], dvdnavsrc, [
891   translit(dnm, m, l) AC_SUBST(DVDNAV_LIBS)
892   translit(dnm, m, l) AC_SUBST(DVDNAV_CFLAGS)
893   GST_CHECK_CONFIGPROG(DVDNAV, dvdnav-config)
894   if test x"$HAVE_DVDNAV" = x"yes"; then
895     dnl check version
896     DVDNAV_VERSION=`dvdnav-config --version|head -n 1|sed 's/^.*) //'|sed 's/ (.*)//'`
897     DVDNAV_MAJOR=`echo $DVDNAV_VERSION | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
898     DVDNAV_MINOR=`echo $DVDNAV_VERSION | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
899     DVDNAV_MICRO=`echo $DVDNAV_VERSION | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
900     if [[ "$DVDNAV_MAJOR" -eq "0" ]] && \
901        [[ "$DVDNAV_MINOR" -lt "1" ]]; then
902       AC_MSG_WARN([libdvdnav >= 0.1.7 is required, you have $DVDNAV_VERSION])
903       HAVE_DVDNAV="no"
904     elif [[ "$DVDNAV_MAJOR" -eq "0" ]] && \
905          [[ "$DVDNAV_MINOR" -eq "1" ]] && \
906          [[ "$DVDNAV_MICRO" -lt "7" ]]; then
907       AC_MSG_WARN([libdvdnav >= 0.1.7 is required, you have $DVDNAV_VERSION])
908       HAVE_DVDNAV="no"
909     fi
910   fi
911   dnl now check for dvdread/nav_print.h - see #133002
912   AC_CHECK_HEADER(dvdread/nav_print.h, , [
913       AC_MSG_WARN([header dvdread/nav_print.h from dvdread missing])
914       HAVE_DVDNAV="no"
915   ])
916   AS_SCRUB_INCLUDE(DVDNAV_CFLAGS)
917 ])
918
919 dnl **** ESound ****
920 translit(dnm, m, l) AM_CONDITIONAL(USE_ESD, true)
921 GST_CHECK_FEATURE(ESD, [esound plug-ins], esdsink esdmon, [
922   PKG_CHECK_MODULES(ESD, esound >= 0.2.12, [
923     HAVE_ESD="yes"
924     AC_SUBST(ESD_CFLAGS)
925     AC_SUBST(ESD_LIBS)
926   ], [
927     AM_PATH_ESD(0.2.12, HAVE_ESD="yes", HAVE_ESD="no")
928     AS_SCRUB_INCLUDE(ESD_CFLAGS)
929   ])
930 ])
931
932 dnl **** Free AAC Encoder (FAAC) ****
933 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAC, true)
934 GST_CHECK_FEATURE(FAAC, [AAC encoder plug-in], faac, [
935   GST_CHECK_LIBHEADER(FAAC, faac, faacEncOpen, -lm, faac.h, FAAC_LIBS="-lfaac -lm")
936   AS_SCRUB_INCLUDE(FAAC_CFLAGS)
937   AC_SUBST(FAAC_LIBS)
938 ])
939
940 dnl **** Free AAC Decoder (FAAD) ****
941 translit(dnm, m, l) AM_CONDITIONAL(USE_FAAD, true)
942 GST_CHECK_FEATURE(FAAD, [AAC decoder plug-in], faad, [
943   HAVE_FAAD="yes"
944   GST_CHECK_LIBHEADER(FAAD, faad, faacDecOpen, -lm, faad.h, FAAD_LIBS="-lfaad -lm", HAVE_FAAD="no")
945   if test $HAVE_FAAD = "yes"; then
946     AC_MSG_CHECKING([Checking for FAAD >= 2])
947     AC_TRY_COMPILE([
948 #include <faad.h>
949 #if !defined(FAAD2_VERSION) || !defined(FAAD_FMT_DOUBLE)
950 #error Not faad2
951 #endif
952     ], [ return 0; ],
953        [ HAVE_FAAD="yes" && AC_MSG_RESULT(yes)],
954        [ HAVE_FAAD="no"  && AC_MSG_RESULT(no)])
955   fi;
956   AS_SCRUB_INCLUDE(FAAD_CFLAGS)
957   AC_SUBST(FAAD_LIBS)
958 ])
959
960 dnl **** festival ****
961 dnl translit(dnm, m, l) AM_CONDITIONAL(USE_FESTIVAL, true)
962 dnl GST_CHECK_FEATURE(FESTIVAL, [festival plug-ins], festivalsrc, [
963   dnl NOTE: just using local net connection now, add this lib check
964   dnl       in the future if needed
965   dnl AC_LANG_PUSH(C++)
966   dnl dnl FIXME: took out func to check for
967   dnl dnl This check puts festival_tidy_up in extern "C".
968   dnl dnl But, at least on Debian as of 20020110, it is compiled with name
969   dnl dnl mangling C++ nonsense and symbols can't resolve
970   dnl dnl GST_CHECK_LIBHEADER(FESTIVAL, Festival, festival_tidy_up, , festival/festival.h, FESTIVAL_LIBS="-lFestival")
971   dnl GST_CHECK_LIBHEADER(FESTIVAL, Festival, , , festival/festival.h, FESTIVAL_LIBS="-lFestival")
972   dnl AC_LANG_POP(C++)
973   dnl AC_SUBST(FESTIVAL_LIBS)
974 dnl  HAVE_FESTIVAL=yes
975 dnl])
976
977 dnl *** FLAC ***
978 translit(dnm, m, l) AM_CONDITIONAL(USE_FLAC, true)
979 GST_CHECK_FEATURE(FLAC, [FLAC lossless audio], flacenc flacdec, [
980   GST_CHECK_LIBHEADER(FLAC, FLAC, FLAC__seekable_stream_encoder_new, -lm, FLAC/all.h, FLAC_LIBS="-lFLAC")
981   AC_SUBST(FLAC_LIBS)
982 ])
983
984 dnl *** GDK pixbuf ***
985 translit(dnm, m, l) AM_CONDITIONAL(USE_GDK_PIXBUF, true)
986 GST_CHECK_FEATURE(GDK_PIXBUF, [GDK pixbuf], gdkpixbufsrc, [
987   if test $HAVE_GTK_22 = "yes"; then HAVE_GDK_PIXBUF=yes; fi;
988 ])
989
990 dnl *** Gnome VFS ***
991 translit(dnm, m, l) AM_CONDITIONAL(USE_GNOME_VFS, true)
992 GST_CHECK_FEATURE(GNOME_VFS, [Gnome VFS], gnomevfssrc, [
993   PKG_CHECK_MODULES(GNOME_VFS, gnome-vfs-2.0, HAVE_GNOME_VFS="yes", HAVE_GNOME_VFS="no")
994   AC_SUBST(GNOME_VFS_CFLAGS)
995   AC_SUBST(GNOME_VFS_LIBS)
996 ])
997
998 dnl *** gsm ***
999 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
1000 GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
1001   GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
1002   if test $HAVE_GSM != "yes"; then
1003     GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
1004     if test $HAVE_GSM = "yes"; then 
1005       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
1006     fi
1007   fi
1008   AC_SUBST(GSM_LIBS)
1009 ])
1010
1011 dnl *** Hermes ***
1012 translit(dnm, m, l) AM_CONDITIONAL(USE_HERMES, true)
1013 GST_CHECK_FEATURE(HERMES, [Hermes library], hermescolorspace, [
1014   GST_CHECK_LIBHEADER(HERMES, Hermes, Hermes_ConverterInstance, , Hermes/Hermes.h, HERMES_LIBS="-lHermes")
1015 ], AC_SUBST(HERMES_LIBS))
1016
1017 dnl *** http ***
1018 dnl translit(dnm, m, l) AM_CONDITIONAL(USE_HTTP, true)
1019 dnl GST_CHECK_FEATURE(HTTP, [http plug-ins], gsthttpsrc, [
1020 dnl  dnl FIXME: need to check for header
1021 dnl  GHTTP_LIBS=
1022 dnl  GST_HTTPSRC_GET_TYPE=
1023 dnl  if test x$USE_GLIB2 = xyes; then
1024 dnl    AC_MSG_WARN(ghttp disabled for glib2.0)
1025 dnl  else
1026 dnl    AC_CHECK_LIB(ghttp, ghttp_request_new,
1027 dnl      [HTTP_LIBS="-lghttp"
1028 dnl       GST_HTTPSRC_GET_TYPE="gst_httpsrc_get_type"
1029 dnl       HAVE_HTTP=yes
1030 dnl      ], :, $LIBS)
1031 dnl  fi
1032 dnl  AC_SUBST(HTTP_LIBS)
1033 dnl  AC_SUBST(GST_HTTPSRC_GET_TYPE)
1034 dnl ])
1035
1036 dnl *** ivorbis ***
1037 dnl AM_PATH_IVORBIS only takes two options
1038 translit(dnm, m, l) AM_CONDITIONAL(USE_IVORBIS, true)
1039 GST_CHECK_FEATURE(IVORBIS, [integer vorbis plug-in], ivorbisdec, [
1040   IVORBIS_LIBS=
1041   IVORBIS_CFLAGS=
1042   AC_CHECK_LIB(vorbisidec, vorbis_block_init,
1043     [IVORBIS_LIBS=-lvorbisidec
1044      HAVE_IVORBIS=yes],
1045     HAVE_IVORBIS=no)
1046   AC_SUBST(IVORBIS_LIBS)
1047   AC_SUBST(IVORBIS_CFLAGS)
1048 ])
1049
1050 dnl *** Jack ***
1051 translit(dnm, m, l) AM_CONDITIONAL(USE_JACK, true)
1052 GST_CHECK_FEATURE(JACK, Jack, jack, [
1053   PKG_CHECK_MODULES(JACK, jack >= 0.29.0, HAVE_JACK="yes", HAVE_JACK="no")
1054   AC_SUBST(JACK_CFLAGS)
1055   AC_SUBST(JACK_LIBS)
1056 ])
1057
1058 dnl *** jpeg ***
1059 dnl FIXME: we could use header checks here as well IMO
1060 translit(dnm, m, l) AM_CONDITIONAL(USE_JPEG, true)
1061 GST_CHECK_FEATURE(JPEG, [jpeg], jpegenc jpegdec, [
1062   AC_ARG_WITH(jpeg-mmx,
1063     [  --with-jpeg-mmx, path to MMX'ified JPEG library])
1064   OLD_LIBS="$LIBS"
1065   if test x$with_jpeg_mmx != x; then
1066     LIBS="$LIBS -L$with_jpeg_mmx"
1067   fi
1068   AC_CHECK_LIB(jpeg-mmx, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1069   JPEG_LIBS="$LIBS -ljpeg-mmx"
1070   LIBS="$OLD_LIBS"
1071   if test x$HAVE_JPEG != xyes; then
1072     AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
1073     JPEG_LIBS="-ljpeg"
1074   fi
1075   AC_SUBST(JPEG_LIBS)
1076 ])
1077
1078 dnl *** KDE / Qt ***
1079
1080 dnl * Qt *
1081
1082 qt_dirs="$QTDIR /usr/lib/qt3 /usr/lib/qt /usr/share/qt3 /usr/local/qt"
1083
1084 dnl Build include path search path from the list of Qt dirs
1085
1086 qt_include_dirs=""
1087 for dir in $qt_dirs; do
1088   qt_include_dirs="$qt_include_dirs $dir/include $dir"
1089 done
1090
1091 qt_include_dirs="$qt_include_dirs /usr/include/qt /usr/include /usr/X11R6/include/X11/qt /usr/X11R6/include/qt /usr/include/qt3"
1092
1093 for dir in $qt_include_dirs; do
1094   if test -r "$dir/qglobal.h"; then
1095     qt_include_dir=$dir
1096     break
1097   fi
1098 done
1099
1100 for dir in $qt_dirs; do
1101   qt_lib_dirs="$qt_lib_dirs $dir/lib $dir"
1102 done
1103
1104 qt_lib_dirs="$qt_lib_dirs /usr/X11R6/lib /usr/lib"
1105
1106 for dir in $qt_lib_dirs; do
1107   try="ls -1 $dir/libqt-mt.*"
1108   if test -n "`$try 2> /dev/null`"; then
1109     qt_lib_dir=$dir
1110     break
1111   fi
1112 done
1113
1114 dnl *** ladspa ***
1115 translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
1116 GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
1117   AC_CHECK_HEADER(ladspa.h, HAVE_LADSPA="yes", HAVE_LADSPA="no")
1118 ])
1119
1120 dnl *** lame ***
1121 translit(dnm, m, l) AM_CONDITIONAL(USE_LAME, true)
1122 GST_CHECK_FEATURE(LAME, [lame mp3 encoder library], lame, [
1123   GST_CHECK_LIBHEADER(LAME, mp3lame, lame_init, -lm, lame/lame.h, HAVE_LAME="yes" LAME_LIBS="-lmp3lame -lm")
1124 ])
1125 dnl is lame presets available
1126 LAME_CFLAGS=""
1127 AC_TRY_RUN([
1128 #include <lame/lame.h>
1129 int main (int argc, char *argv[])
1130 {
1131   printf("%d\n", MEDIUM);
1132   return 0;
1133 }
1134 ],[LAME_CFLAGS="-DGSTLAME_PRESET"],[LAME_CFLAGS=""])
1135 AC_SUBST(LAME_CFLAGS)
1136 AC_SUBST(LAME_LIBS)
1137
1138 dnl *** MAS (TODO) ***
1139 dnl translit(dnm, m, l) AM_CONDITIONAL(USE_MAS, true)
1140 dnl GST_CHECK_FEATURE(MAS, [mas], mas, [
1141 dnl   GST_CHECK_CONFIGPROG(MAS, mas-config)
1142 dnl   AC_SUBST(MAS_CFLAGS)
1143 dnl   AC_SUBST(MAS_LIBS)
1144 dnl ])
1145
1146 dnl *** libcaca ***
1147 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBCACA, true)
1148 GST_CHECK_FEATURE(LIBCACA, [libcaca], libcaca, [
1149   GST_CHECK_CONFIGPROG(LIBCACA, caca-config)
1150   AC_SUBST(LIBCACA_CFLAGS)
1151   AC_SUBST(LIBCACA_LIBS)
1152 ])
1153
1154 dnl *** libcolorspace ***
1155 translit(dnm, m, l) AM_CONDITIONAL(USE_LCS, true)
1156 GST_CHECK_FEATURE(LCS, Lcs, lcs, [
1157   PKG_CHECK_MODULES(LCS, lcs, HAVE_LCS="yes", HAVE_LCS="no")
1158   AC_SUBST(LCS_CFLAGS)
1159   AC_SUBST(LCS_LIBS)
1160 ])
1161
1162 dnl *** libdv ***
1163 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDV, true)
1164 GST_CHECK_FEATURE(LIBDV, [libdv DV/video decoder], dvdec, [
1165   PKG_CHECK_MODULES(LIBDV, libdv >= 0.100, HAVE_LIBDV="yes", HAVE_LIBDV="no")
1166   AC_SUBST(LIBDV_CFLAGS)
1167   AC_SUBST(LIBDV_LIBS)
1168 ])
1169
1170 dnl *** libfame ***
1171 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBFAME, true)
1172 GST_CHECK_FEATURE(LIBFAME, [libfame MPEG1/4 encoder], libfame, [
1173   AM_PATH_LIBFAME(0.9.0, HAVE_LIBFAME="yes", HAVE_LIBFAME="no")
1174   AC_SUBST(LIBFAME_CFLAGS)
1175   AC_SUBST(LIBFAME_LIBS)
1176 ])
1177
1178 dnl *** libpng ***
1179 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBPNG, true)
1180 GST_CHECK_FEATURE(LIBPNG, [libpng PNG encoder], pngenc, [
1181   PKG_CHECK_MODULES(LIBPNG, libpng12, HAVE_LIBPNG="yes", HAVE_LIBPNG="no")
1182   AC_SUBST(LIBPNG_CFLAGS)
1183   AC_SUBST(LIBPNG_LIBS)
1184 ])
1185
1186 dnl *** librfb ***
1187 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBRFB, true)
1188 GST_CHECK_FEATURE(LIBRFB, [librfb Remote Framebuffer], rfbsrc, [
1189   PKG_CHECK_MODULES(LIBRFB, librfb-0.1, HAVE_LIBRFB="yes", HAVE_LIBRFB="no")
1190   AC_SUBST(LIBRFB_CFLAGS)
1191   AC_SUBST(LIBRFB_LIBS)
1192 ])
1193
1194 dnl *** libvisual ***
1195 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBVISUAL, true)
1196 GST_CHECK_FEATURE(LIBVISUAL, [libvisual visualization plugins], libvisual, [
1197   PKG_CHECK_MODULES(LIBVISUAL, libvisual = 0.1.1, HAVE_LIBVISUAL="yes", HAVE_LIBVISUAL="no")
1198   AC_SUBST(LIBVISUAL_CFLAGS)
1199   AC_SUBST(LIBVISUAL_LIBS)
1200 ])
1201
1202 dnl *** mad ***
1203 dnl FIXME: we could use header checks here as well IMO
1204 translit(dnm, m, l) AM_CONDITIONAL(USE_MAD, true)
1205 GST_CHECK_FEATURE(MAD, [mad mp3 decoder], mad, [
1206   dnl check with pkg-config first
1207   PKG_CHECK_MODULES(MAD, mad >= 0.15 id3tag >= 0.15, HAVE_MAD="yes", HAVE_MAD="no")
1208   if test "x$HAVE_MAD" = "xno"; then
1209     dnl fall back to oldskool detection
1210     AC_CHECK_LIB(mad, mad_decoder_finish, HAVE_MAD="yes" MAD_LIBS="-lmad")
1211     if test "x$HAVE_MAD" = "xyes"; then
1212       HAVE_MAD="no"
1213       save_LIBS=$LIBS
1214       LIBS="-lz"
1215       AC_CHECK_LIB(id3tag, id3_tag_options, HAVE_MAD="yes" MAD_LIBS="-lmad -lid3tag -lz")
1216       LIBS=$save_LIBS
1217     fi
1218   fi    
1219 ])
1220 AC_SUBST(MAD_LIBS)
1221
1222 dnl *** mikmod ***
1223 translit(dnm, m, l) AM_CONDITIONAL(USE_MIKMOD, true)
1224 GST_CHECK_FEATURE(MIKMOD, [mikmod plug-in], mikmod, [
1225   AM_PATH_LIBMIKMOD(, HAVE_MIKMOD=yes, HAVE_MIKMOD=no)
1226   AC_SUBST(MIKMOD_LIBS, "$LIBMIKMOD_LIBS")
1227   AC_SUBST(MIKMOD_CFLAGS, "$LIBMIKMOD_CFLAGS")
1228 ])
1229
1230 dnl *** mpeg2dec ***
1231 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2DEC, true)
1232 GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [
1233   PKG_CHECK_MODULES(MPEG2DEC, libmpeg2 >= 0.4.0,
1234       HAVE_MPEG2DEC="yes", HAVE_MPEG2DEC="no")
1235   AC_SUBST(MPEG2DEC_CFLAGS)
1236   AC_SUBST(MPEG2DEC_LIBS)
1237 ])
1238
1239 dnl *** mpeg2enc ***
1240 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2ENC, true)
1241 GST_CHECK_FEATURE(MPEG2ENC, [mpeg2enc], mpeg2enc, [
1242   HAVE_MPEG2ENC="no"
1243   dnl we require a c++ compiler for this one
1244   if [ test x$HAVE_CXX = xyes ]; then
1245     dnl libmpeg2enc was first included in mjpegtools-1.6.2-rc3 (1.6.1.92)
1246     dnl since many distros include mjpegtools specifically without mplex
1247     dnl and mpeg2enc, we check for mpeg2enc on its own, too.
1248     PKG_CHECK_MODULES(MPEG2ENC, mjpegtools >= 1.6.1.93, [
1249       dnl switch over to c++ to test things
1250       AC_LANG_CPLUSPLUS
1251       OLD_CPPFLAGS="$CPPFLAGS"
1252       CPPFLAGS="$CPPFLAGS $MPEG2ENC_CFLAGS"
1253       AC_CHECK_HEADER(mpeg2encoder.hh, [
1254         MPEG2ENC_LIBS="$MPEG2ENC_LIBS -lmpeg2encpp -lm -lpthread"
1255         OLD_LIBS="$LIBS"
1256         LIBS="$LIBS $MPEG2ENC_LIBS"
1257         AC_MSG_CHECKING([for valid mpeg2enc objects])
1258         AC_TRY_RUN([
1259 #include <mpeg2encoder.hh>
1260 #include <mpeg2encoptions.hh>
1261
1262 int
1263 main (int   argc,
1264       char *argv[])
1265 {
1266   MPEG2EncOptions *options = new MPEG2EncOptions ();
1267   MPEG2Encoder encoder (*options);
1268   return 0;
1269 }
1270         ],[
1271           HAVE_MPEG2ENC="yes"
1272           AC_SUBST(MPEG2ENC_CFLAGS)
1273           AC_SUBST(MPEG2ENC_LIBS)
1274           AC_MSG_RESULT(yes)
1275         ], AC_MSG_RESULT(no))
1276         LIBS="$OLD_LIBS"
1277       ])
1278       CPPFLAGS="$OLD_CPPFLAGS"
1279       AC_LANG_C
1280     ],
1281     HAVE_MPEG2ENC="no")
1282   fi
1283 ])
1284
1285 dnl *** mplex ***
1286 translit(dnm, m, l) AM_CONDITIONAL(USE_MPLEX, true)
1287 GST_CHECK_FEATURE(MPLEX, [mplex], mplex, [
1288   HAVE_MPLEX="no"
1289   dnl we require a c++ compiler for this one
1290   if [ test x$HAVE_CXX = xyes ]; then
1291     dnl libmplex was first included in mjpegtools-1.6.2-rc4 (1.6.1.93)
1292     dnl since many distros include mjpegtools specifically without mplex
1293     dnl and mpeg2enc, we check for mplex on its own, too.
1294     PKG_CHECK_MODULES(MPLEX, mjpegtools >= 1.6.1.93, [
1295       dnl switch over to c++ to test things
1296       AC_LANG_CPLUSPLUS
1297       OLD_CPPFLAGS="$CPPFLAGS"
1298       CPPFLAGS="$CPPFLAGS $MPLEX_CFLAGS"
1299       AC_CHECK_HEADER(interact.hpp, [
1300         MPLEX_LIBS="$MPLEX_LIBS -lmplex2 -lm"
1301         OLD_LIBS="$LIBS"
1302         LIBS="$LIBS $MPLEX_LIBS"
1303         AC_MSG_CHECKING([for valid mplex objects])
1304         AC_TRY_RUN([
1305 #include <interact.hpp>
1306 #include <outputstrm.hpp>
1307 #include <multiplexor.hpp>
1308
1309 int
1310 main (int   argc,
1311       char *argv[])
1312 {
1313   class TestOutputStream : public OutputStream {
1314   public:
1315     TestOutputStream () : OutputStream () { }
1316     void Write (uint8_t *a, unsigned int b) { }
1317     void NextSegment () { }
1318     off_t SegmentSize () { }
1319     void Close () { }
1320     int Open () { }
1321   };
1322   MultiplexJob *job = new MultiplexJob ();
1323   vector<IBitStream *> inputs;
1324   job->SetupInputStreams (inputs);
1325   TestOutputStream *out = new TestOutputStream ();
1326   Multiplexor mux (*job, *out);
1327   return 0;
1328 }
1329         ],[
1330           HAVE_MPLEX="yes"
1331           AC_SUBST(MPLEX_CFLAGS)
1332           AC_SUBST(MPLEX_LIBS)
1333           AC_MSG_RESULT(yes)
1334         ], AC_MSG_RESULT(no))
1335         LIBS="$OLD_LIBS"
1336       ])
1337       CPPFLAGS="$OLD_CPPFLAGS"
1338       AC_LANG_C
1339     ], HAVE_MPLEX="no")
1340   fi
1341 ])
1342
1343 dnl *** musicbrainz ***
1344 dnl libmusicbrainz <= 2.0.2 has symbol clashes with ffmpeg
1345 dnl however, our ffmpeg patch was accepted upstream
1346 translit(dnm, m, l) AM_CONDITIONAL(USE_MUSICBRAINZ, true)
1347 GST_CHECK_FEATURE(MUSICBRAINZ, [musicbrainz], musicbrainz, [
1348   PKG_CHECK_MODULES(MUSICBRAINZ, libmusicbrainz >= 2.0.2,
1349       HAVE_MUSICBRAINZ="yes", HAVE_MUSICBRAINZ="no")
1350   AC_SUBST(MUSICBRAINZ_CFLAGS)
1351   AC_SUBST(MUSICBRAINZ_LIBS)
1352 ])
1353
1354 dnl *** nas ***
1355 translit(dnm, m, l) AM_CONDITIONAL(USE_NAS, true)
1356 GST_CHECK_FEATURE(NAS, [nas plug-in], nassink, [
1357   HAVE_NAS="no"
1358   if test "x$HAVE_X" = "xyes"; then
1359     save_cppflags=$CFLAGS
1360     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
1361     GST_CHECK_LIBHEADER(NAS, audio, AuOpenServer, $X_LIBS, audio/audiolib.h,
1362       NAS_LIBS="$X_LIBS -laudio" NAS_CFLAGS="$X_CFLAGS")
1363     CPPFLAGS="$save_cppflags"
1364   fi
1365   AC_SUBST(NAS_CFLAGS)
1366   AC_SUBST(NAS_LIBS)
1367 ])
1368
1369 dnl *** pango ***
1370 translit(dnm, m, l) AM_CONDITIONAL(USE_PANGO, true)
1371 GST_CHECK_FEATURE(PANGO, [pango], pango, [
1372   PKG_CHECK_MODULES(PANGO, pango pangoft2,
1373       HAVE_PANGO="yes", HAVE_PANGO="no")
1374   AC_SUBST(PANGO_CFLAGS)
1375   AC_SUBST(PANGO_LIBS)
1376 ])
1377
1378 dnl *** raw1394 ***
1379 translit(dnm, m, l) AM_CONDITIONAL(USE_RAW1394, true)
1380 GST_CHECK_FEATURE(RAW1394, [raw1394 library], dv1394src, [
1381   GST_CHECK_LIBHEADER(RAW1394, raw1394, raw1394_new_handle,, libraw1394/raw1394.h, RAW1394_LIBS="-lraw1394")
1382   AC_SUBST(RAW1394_LIBS)
1383 ])
1384
1385 dnl *** SDL ***
1386 translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true)
1387 GST_CHECK_FEATURE(SDL, [SDL plug-in], sdlvideosink, [
1388   dnl sdlvideosink depends on the xoverlay interface, which depends on X
1389   if test x$HAVE_X = xyes; then
1390     AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no)
1391   fi
1392 ])
1393
1394 dnl *** shout ***
1395 translit(dnm, m, l) AM_CONDITIONAL(USE_SHOUT, true)
1396 GST_CHECK_FEATURE(SHOUT, [shout plug-in], icecastsend, [
1397   GST_CHECK_LIBHEADER(SHOUT, shout, shout_init_connection,, shout/shout.h, SHOUT_LIBS="-lshout")
1398   AC_SUBST(SHOUT_LIBS)
1399 ])
1400
1401 dnl *** shout2 *** 
1402 translit(dnm, m, l) AM_CONDITIONAL(USE_SHOUT2, true)
1403 GST_CHECK_FEATURE(SHOUT2, [shout2 plug-in], shout2send, [
1404   PKG_CHECK_MODULES(SHOUT2, shout >= 2.0, [
1405     HAVE_SHOUT2="yes"
1406     AC_SUBST(SHOUT2_CFLAGS)
1407     AC_SUBST(SHOUT2_LIBS)
1408   ], [
1409     AM_PATH_SHOUT2(HAVE_SHOUT2="yes", HAVE_SHOUT2="no")
1410     AC_SUBST(SHOUT2_CFLAGS)
1411     AC_SUBST(SHOUT2_LIBS)
1412   ])
1413 ])
1414
1415 dnl *** sidplay : works with libsidplay 1.36.x (not 2.x.x) ***
1416 translit(dnm, m, l) AM_CONDITIONAL(USE_SIDPLAY, true)
1417 GST_CHECK_FEATURE(SIDPLAY, [sidplay plug-in], sidplay, [
1418   GST_PATH_SIDPLAY()
1419 ])
1420
1421 dnl *** smoothwave ***
1422 translit(dnm, m, l) AM_CONDITIONAL(USE_SMOOTHWAVE, true)
1423 GST_CHECK_FEATURE(SMOOTHWAVE, [smoothwave plug-in], smoothwave, [
1424   if test $HAVE_GTK = "yes"; then HAVE_SMOOTHWAVE=yes; fi;
1425 ])
1426
1427
1428 dnl *** snapshot ***
1429 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBPNG, true)
1430 GST_CHECK_FEATURE(LIBPNG, [snapshot plug-in], snapshot, [
1431   GST_CHECK_LIBHEADER(LIBPNG, png, png_read_info, -lz -lm, png.h, LIBPNG_LIBS="-lpng -lz -lm")
1432   AC_SUBST(LIBPNG_LIBS)
1433 ])
1434
1435 dnl *** speex 1.0.x or >= 1.1.5 ***
1436 dnl   1.1.4 and earlier were not API/ABI compatible with 1.0
1437 dnl   1.1.6 is the first to use a .pc/pkg-config file ***
1438 dnl   speex_jitter.h is 1.1.x only
1439 translit(dnm, m, l) AM_CONDITIONAL(USE_SPEEX, true)
1440 GST_CHECK_FEATURE(SPEEX, [speex plug-in], speex, [
1441   PKG_CHECK_MODULES(SPEEX, speex >= 1.1.6, [
1442     HAVE_SPEEX="yes"
1443     AC_SUBST(SPEEX_CFLAGS)
1444     AC_SUBST(SPEEX_LIBS)
1445   ], [
1446     GST_CHECK_LIBHEADER(SPEEX, speex, speex_bits_init, , speex.h, [
1447       AC_CHECK_HEADER(speex_jitter.h, [
1448         dnl speex 1.1.x :
1449         GST_CHECK_LIBHEADER(SPEEX, speex, speex_encode_int, , speex.h, [
1450           dnl speex 1.1.5 or + :
1451           HAVE_SPEEX="yes"
1452           SPEEX_LIBS="-lspeex"
1453           AC_SUBST(SPEEX_CFLAGS)
1454           AC_SUBST(SPEEX_LIBS)
1455         ],[
1456           HAVE_SPEEX="no"
1457         ])
1458       ], [
1459         dnl speex 1.0.x :
1460         HAVE_SPEEX="yes"
1461         SPEEX_LIBS="-lspeex"
1462         AC_SUBST(SPEEX_CFLAGS)
1463         AC_SUBST(SPEEX_LIBS)
1464       ])
1465     ])
1466   ])
1467 ])
1468
1469 dnl *** sndfile ***
1470 translit(dnm, m, l) AM_CONDITIONAL(USE_SNDFILE, true)
1471 GST_CHECK_FEATURE(SNDFILE, [sndfile plug-in], sfsrc sfsink, [
1472   PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0.0, HAVE_SNDFILE="yes", HAVE_SNDFILE="no")
1473   AC_SUBST(SNDFILE_CFLAGS)
1474   AC_SUBST(SNDFILE_LIBS)
1475 ])
1476
1477 dnl *** swfdec ***
1478 translit(dnm, m, l) AM_CONDITIONAL(USE_SWFDEC, true)
1479 GST_CHECK_FEATURE(SWFDEC, [swfdec plug-in], swfdec, [
1480   PKG_CHECK_MODULES(SWFDEC, swfdec >= 0.1.3.1, HAVE_SWFDEC=yes, HAVE_SWFDEC=no)
1481   AC_SUBST(SWFDEC_CFLAGS)
1482   AC_SUBST(SWFDEC_LIBS)
1483 ])
1484
1485 dnl *** tarkin ***
1486 dnl for now the sources are included in the plug-in
1487 dnl and should be moved to ext-libs/ perhaps
1488 translit(dnm, m, l) AM_CONDITIONAL(USE_TARKIN, true)
1489 GST_CHECK_FEATURE(TARKIN, [tarkinenc tarkindec], tarkin, [
1490   HAVE_TARKIN="yes"
1491 ])
1492
1493 dnl *** ogg ***
1494 translit(dnm, m, l) AM_CONDITIONAL(USE_OGG, true)
1495 GST_CHECK_FEATURE(OGG, [ogg de/encoder], oggdemux oggmux, [
1496   PKG_CHECK_MODULES(OGG, ogg >= 1.0, [
1497     HAVE_OGG="yes"
1498     AC_SUBST(OGG_CFLAGS)
1499     AC_SUBST(OGG_LIBS)
1500   ], [
1501     XIPH_PATH_OGG(HAVE_OGG="yes", HAVE_OGG="no")
1502     AS_SCRUB_INCLUDE(OGG_CFLAGS)
1503   ])
1504 ])
1505
1506 dnl *** theora ***
1507 translit(dnm, m, l) AM_CONDITIONAL(USE_THEORA, true)
1508 GST_CHECK_FEATURE(THEORA, [ogg theora codec], theoradec theoraenc, [
1509   PKG_CHECK_MODULES(THEORA, theora, [
1510     HAVE_THEORA="yes"
1511     AC_SUBST(THEORA_LIBS)
1512     AC_SUBST(THEORA_CFLAGS)
1513   ], [
1514     GST_CHECK_LIBHEADER(THEORA, theora, theora_version_string, "-logg", theora/theora.h, THEORA_LIBS="-ltheora -logg")
1515     AC_SUBST(THEORA_LIBS)
1516   ])
1517 ])
1518
1519 dnl *** vorbis ***
1520 dnl AM_PATH_VORBIS only takes two options
1521 translit(dnm, m, l) AM_CONDITIONAL(USE_VORBIS, true)
1522 GST_CHECK_FEATURE(VORBIS, [vorbis plug-in], vorbisenc vorbisdec, [
1523   PKG_CHECK_MODULES(VORBIS, vorbis >= 1.0 vorbisenc >= 1.0, [
1524     HAVE_VORBIS="yes"
1525   ], [
1526     XIPH_PATH_VORBIS(HAVE_VORBIS="yes", HAVE_VORBIS="no")
1527     AS_SCRUB_INCLUDE(VORBIS_CFLAGS)
1528   ])
1529 ])
1530 if test "x$HAVE_VORBIS" = "xyes"; then
1531   ac_cflags_save="$CFLAGS"
1532   dnl FIXME: does this work on non-gcc? -- Company
1533   CFLAGS="-Wall -Werror"
1534   AC_COMPILE_IFELSE(
1535     AC_LANG_PROGRAM([
1536 #include <vorbis/codec.h>
1537                      ],[
1538 vorbis_dsp_state *v;
1539
1540 vorbis_synthesis_restart (v);
1541                      ]), HAVE_VSR=yes, HAVE_VSR=no)
1542   if test "x$HAVE_VSR" = "xyes"; then
1543     AC_DEFINE_UNQUOTED(HAVE_VORBIS_SYNTHESIS_RESTART, 1,
1544                        [defined if vorbis_synthesis_restart is present])
1545   fi
1546   CFLAGS="$ac_cflags_save"
1547 fi
1548
1549 dnl *** xine ***
1550 translit(dnm, m, l) AM_CONDITIONAL(USE_XINE, true)
1551 GST_CHECK_FEATURE(XINE, [xine wrapper], xine, [
1552   PKG_CHECK_MODULES(XINE, libxine >= 1.0.0, HAVE_XINE=yes, HAVE_XINE=no)
1553   AC_SUBST(XINE_CFLAGS)
1554   AC_SUBST(XINE_LIBS)
1555 ],disabled)
1556
1557 dnl *** XVID ***
1558 translit(dnm, m, l) AM_CONDITIONAL(USE_XVID, true)
1559 GST_CHECK_FEATURE(XVID, [xvid plugins], xvid, [
1560   HAVE_XVID=no
1561   AC_CHECK_HEADER(xvid.h, [
1562     OLD_LIBS="$LIBS"
1563     LIBS="-lm"
1564     AC_CHECK_LIB(xvidcore, xvid_encore, [
1565       AC_CHECK_LIB(xvidcore, xvid_decore, [
1566         AC_CHECK_LIB(xvidcore, xvid_global, [
1567           AC_MSG_CHECKING([for uptodate XviD API version])
1568           AC_TRY_RUN([
1569 #include <xvid.h>
1570 #if XVID_API != XVID_MAKE_API(4,0)
1571 #error "Incompatible XviD API version"
1572 #endif
1573 int main () { return 0; }
1574           ],[ AC_MSG_RESULT(yes)
1575             XVID_LIBS="-lxvidcore -lm"
1576             AC_SUBST(XVID_LIBS)
1577             HAVE_XVID=yes
1578           ], AC_MSG_RESULT(no) )
1579         ], )
1580       ], )
1581     ], )
1582     LIBS="$OLD_LIBS"
1583   ], )
1584 ])
1585
1586
1587 fi dnl of EXT plugins
1588
1589 dnl Check for atomic.h
1590 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
1591 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
1592 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
1593 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
1594 if test x$HAVE_ATOMIC_H = xyes; then
1595   AC_TRY_RUN([
1596 #include "asm/atomic.h"
1597 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
1598   ],, [
1599     # Not successful
1600     if test x$HAVE_ATOMIC_H = xyes; then
1601       AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
1602     fi
1603     HAVE_ATOMIC_H=no
1604   ], [
1605     # Cross compiling
1606     AC_MSG_RESULT(yes)
1607     AC_MSG_WARN(Can't check properly for atomic reference counting.  Assuming OK.)
1608   ])
1609 fi
1610
1611
1612 dnl ######################################################################
1613 dnl # Check command line parameters, and set shell variables accordingly #
1614 dnl ######################################################################
1615
1616 AC_ARG_ENABLE(libmmx,
1617   AC_HELP_STRING([--enable-libmmx],[use libmmx, if available]),
1618 [case "${enableval}" in
1619   yes) USE_LIBMMX=$HAVE_LIBMMX ;;
1620   no)  USE_LIBMMX=no ;;
1621   *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
1622 esac], 
1623 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
1624
1625 AC_ARG_ENABLE(atomic,
1626   AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
1627 [case "${enableval}" in
1628   yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
1629   noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
1630   no)  USE_ATOMIC_H=no;;
1631   *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
1632 esac], 
1633 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
1634
1635 AC_ARG_ENABLE(profiling,
1636   AC_HELP_STRING([--enable-profiling],
1637                  [-pg to compiler commandline, for profiling]),
1638 [case "${enableval}" in
1639   yes) USE_PROFILING=yes ;;
1640   no)  UES_PROFILING=no ;;
1641   *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
1642 esac], 
1643 [USE_PROFILING=no]) dnl Default value
1644
1645 AC_ARG_ENABLE(tests,
1646   AC_HELP_STRING([--disable-tests],[disable building test apps]),
1647 [case "${enableval}" in
1648   yes) BUILD_TESTS=yes ;;
1649   no)  BUILD_TESTS=no ;;
1650   *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
1651 esac], 
1652 [BUILD_TESTS=yes]) dnl Default value
1653
1654 AC_ARG_ENABLE(examples,
1655   AC_HELP_STRING([--disable-examples],[disable building examples]),
1656 [case "${enableval}" in
1657   yes) BUILD_EXAMPLES=yes ;;
1658   no)  BUILD_EXAMPLES=no ;;
1659   *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
1660 esac], 
1661 [BUILD_EXAMPLES=yes]) dnl Default value
1662
1663 dnl seeking needs freetype, so check for it here
1664 PKG_CHECK_MODULES(FT2, freetype2 >= 2.0.9, HAVE_FT2="yes", [
1665   AC_CHECK_FT2(2.0.9, HAVE_FT2="yes", HAVE_FT2="no")
1666 ])
1667 dnl make the HAVE_FT2 variable available to automake and Makefile.am
1668 AM_CONDITIONAL(HAVE_FT2, test "x$HAVE_FT2" = "xyes")
1669 AC_SUBST(FT2_CFLAGS)
1670 AC_SUBST(FT2_LIBS)
1671
1672 dnl ################################################
1673 dnl # Set defines according to variables set above #
1674 dnl ################################################
1675
1676
1677 if test "x$USE_LIBMMX" = xyes; then
1678   AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
1679 fi
1680
1681 if test "x$USE_ATOMIC_H" = xyes; then
1682   AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
1683 fi
1684
1685 # do not use deprecated stuff
1686 GST_CFLAGS="$GST_CFLAGS -DGST_DISABLE_DEPRECATED"
1687
1688 if test "x$USE_DEBUG" = xyes; then
1689   GST_CFLAGS="$GST_CFLAGS -g"
1690 fi
1691
1692 dnl #############################
1693 dnl # Set automake conditionals #
1694 dnl #############################
1695
1696 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
1697 dnl HAVE_ and it is likely to be easier to stick with the old name
1698 AM_CONDITIONAL(HAVE_LIBMMX,         test "x$USE_LIBMMX" = "xyes")
1699
1700 AM_CONDITIONAL(HAVE_ATOMIC_H,       test "x$USE_ATOMIC_H" = "xyes")
1701
1702 AM_CONDITIONAL(EXPERIMENTAL,        test "$EXPERIMENTAL" = "$xyes")
1703 AM_CONDITIONAL(BROKEN,              test "$BROKEN" = "$xyes")
1704
1705 AM_CONDITIONAL(HAVE_NASM,           test "x$HAVE_NASM" = "xyes")
1706 AM_CONDITIONAL(HAVE_GTK,            test "x$HAVE_GTK" = "xyes")
1707 AM_CONDITIONAL(HAVE_GTK_DOC,        $HAVE_GTK_DOC)
1708 AM_CONDITIONAL(BUILD_DOCS,          test "x$BUILD_DOCS" = "xyes")
1709 AM_CONDITIONAL(BUILD_TESTS,         test "x$BUILD_TESTS" = "xyes")
1710 AM_CONDITIONAL(BUILD_EXAMPLES,      test "x$BUILD_EXAMPLES" = "xyes")
1711 AM_CONDITIONAL(BUILD_PLUGIN_DOCS,   test "x$BUILD_PLUGIN_DOCS" = "xyes")
1712 AM_CONDITIONAL(HAVE_FIG2DEV_PNG,    $HAVE_FIG2DEV_PNG)
1713 AM_CONDITIONAL(HAVE_FIG2DEV_PDF,    $HAVE_FIG2DEV_PDF)
1714 AM_CONDITIONAL(HAVE_RAW1394,        test "x$HAVE_RAW1394" = "xyes")
1715
1716 dnl prefer internal headers to already installed ones
1717 dnl also add builddir include for enumtypes and marshal
1718 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GST_ERROR"
1719
1720 AC_SUBST(GST_LIBS)
1721 AC_SUBST(GST_CFLAGS)
1722
1723 dnl ###########################
1724 dnl # Configure external libs #
1725 dnl ###########################
1726
1727 dnl ############################
1728 dnl # Set up some more defines #
1729 dnl ############################
1730
1731 dnl set license and copyright notice
1732 AC_DEFINE(GST_LICENSE, "LGPL", [GStreamer license])
1733
1734 dnl package name in plugins
1735 AC_ARG_WITH(package-name,
1736 AC_HELP_STRING([--with-package-name],[specify package name to use in plugins]),
1737 [case "${withval}" in
1738   yes) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
1739   no) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
1740   *) GST_PACKAGE="${withval}" ;;
1741 esac], 
1742 [
1743 dnl default value
1744 if test "x$GST_CVS" = "xyes"
1745 then
1746   dnl nano >= 1
1747   GST_PACKAGE="GStreamer CVS/prerelease"
1748 else
1749   GST_PACKAGE="GStreamer source release"
1750 fi
1751 ]
1752 )
1753 AC_MSG_NOTICE(Using $GST_PACKAGE as package name)
1754 AC_DEFINE_UNQUOTED(GST_PACKAGE, "$GST_PACKAGE", [package name in plugins])
1755
1756 dnl package origin URL
1757 AC_ARG_WITH(package-origin,
1758 AC_HELP_STRING([--with-package-origin],[specify package origin URL to use in plugins]),
1759 [case "${withval}" in
1760   yes) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
1761   no) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
1762   *) GST_ORIGIN="${withval}" ;;
1763 esac], 
1764 [GST_ORIGIN="http://gstreamer.freedesktop.org/"]) dnl Default value
1765 AC_MSG_NOTICE(Using $GST_ORIGIN as package origin)
1766 AC_DEFINE_UNQUOTED(GST_ORIGIN, "$GST_ORIGIN", [package origin])
1767
1768 dnl #########################
1769 dnl # Make the output files #
1770 dnl #########################
1771
1772 AC_CONFIG_FILES(
1773 Makefile
1774 gst-plugins.spec
1775 gst/Makefile
1776 gst/ac3parse/Makefile
1777 gst/adder/Makefile
1778 gst/alpha/Makefile
1779 gst/audioconvert/Makefile
1780 gst/audioscale/Makefile
1781 gst/audiorate/Makefile
1782 gst/auparse/Makefile
1783 gst/avi/Makefile
1784 gst/asfdemux/Makefile
1785 gst/cdxaparse/Makefile
1786 gst/chart/Makefile
1787 gst/colorspace/Makefile
1788 gst/cutter/Makefile
1789 gst/debug/Makefile
1790 gst/deinterlace/Makefile
1791 gst/effectv/Makefile
1792 gst/festival/Makefile
1793 gst/ffmpegcolorspace/Makefile
1794 gst/filter/Makefile
1795 gst/flx/Makefile
1796 gst/goom/Makefile
1797 gst/interleave/Makefile
1798 gst/law/Makefile
1799 gst/level/Makefile
1800 gst/matroska/Makefile
1801 gst/median/Makefile
1802 gst/mixmatrix/Makefile
1803 gst/mpeg1sys/Makefile
1804 gst/mpeg1videoparse/Makefile
1805 gst/mpeg2sub/Makefile
1806 gst/mpegaudio/Makefile
1807 gst/mpegaudioparse/Makefile
1808 gst/mpegstream/Makefile
1809 gst/modplug/Makefile
1810 gst/modplug/libmodplug/Makefile
1811 gst/monoscope/Makefile
1812 gst/multifilesink/Makefile
1813 gst/multipart/Makefile
1814 gst/overlay/Makefile
1815 gst/passthrough/Makefile
1816 gst/playback/Makefile
1817 gst/playondemand/Makefile
1818 gst/qtdemux/Makefile
1819 gst/realmedia/Makefile
1820 gst/rtjpeg/Makefile
1821 gst/rtp/Makefile
1822 gst/silence/Makefile
1823 gst/sine/Makefile
1824 gst/smooth/Makefile
1825 gst/smpte/Makefile
1826 gst/spectrum/Makefile
1827 gst/speed/Makefile
1828 gst/stereo/Makefile
1829 gst/switch/Makefile
1830 gst/synaesthesia/Makefile
1831 gst/tags/Makefile
1832 gst/tcp/Makefile
1833 gst/typefind/Makefile
1834 gst/udp/Makefile
1835 gst/vbidec/Makefile
1836 gst/videobox/Makefile
1837 gst/videocrop/Makefile
1838 gst/videodrop/Makefile
1839 gst/videofilter/Makefile
1840 gst/videoflip/Makefile
1841 gst/videomixer/Makefile
1842 gst/videorate/Makefile
1843 gst/videoscale/Makefile
1844 gst/videotestsrc/Makefile
1845 gst/volenv/Makefile
1846 gst/volume/Makefile
1847 gst/wavenc/Makefile
1848 gst/wavparse/Makefile
1849 gst/y4m/Makefile
1850 sys/Makefile
1851 sys/cdrom/Makefile
1852 sys/dxr3/Makefile
1853 sys/glsink/Makefile
1854 sys/oss/Makefile
1855 sys/osxaudio/Makefile
1856 sys/osxvideo/Makefile
1857 sys/qcam/Makefile
1858 sys/sunaudio/Makefile
1859 sys/v4l/Makefile
1860 sys/v4l2/Makefile
1861 sys/vcd/Makefile
1862 sys/ximage/Makefile
1863 sys/xvimage/Makefile
1864 ext/Makefile
1865 ext/a52dec/Makefile
1866 ext/aalib/Makefile
1867 ext/alsa/Makefile
1868 ext/arts/Makefile
1869 ext/artsd/Makefile
1870 ext/audiofile/Makefile
1871 ext/cdparanoia/Makefile
1872 ext/dirac/Makefile
1873 ext/divx/Makefile
1874 ext/dts/Makefile
1875 ext/dv/Makefile
1876 ext/dvdread/Makefile
1877 ext/dvdnav/Makefile
1878 ext/esd/Makefile
1879 ext/faac/Makefile
1880 ext/faad/Makefile
1881 ext/flac/Makefile
1882 ext/gdk_pixbuf/Makefile
1883 ext/gnomevfs/Makefile
1884 ext/gsm/Makefile
1885 ext/hermes/Makefile
1886 dnl ext/http/Makefile
1887 ext/jack/Makefile
1888 ext/jpeg/Makefile
1889 ext/ladspa/Makefile
1890 ext/lame/Makefile
1891 ext/ivorbis/Makefile
1892 ext/lcs/Makefile
1893 ext/libcaca/Makefile
1894 ext/libfame/Makefile
1895 ext/libpng/Makefile
1896 ext/librfb/Makefile
1897 ext/libvisual/Makefile
1898 ext/mad/Makefile
1899 dnl ext/mas/Makefile
1900 ext/mikmod/Makefile
1901 ext/mpeg2dec/Makefile
1902 ext/mpeg2enc/Makefile
1903 ext/mplex/Makefile
1904 ext/musicbrainz/Makefile
1905 ext/nas/Makefile
1906 ext/ogg/Makefile
1907 ext/pango/Makefile
1908 ext/raw1394/Makefile
1909 ext/sdl/Makefile
1910 ext/shout/Makefile
1911 ext/shout2/Makefile
1912 ext/sidplay/Makefile
1913 ext/smoothwave/Makefile
1914 ext/snapshot/Makefile
1915 ext/speex/Makefile
1916 ext/sndfile/Makefile
1917 ext/swfdec/Makefile
1918 ext/tarkin/Makefile
1919 ext/theora/Makefile
1920 ext/vorbis/Makefile
1921 ext/xine/Makefile
1922 ext/xvid/Makefile
1923 gst-libs/Makefile
1924 gst-libs/gst/Makefile
1925 gst-libs/gst/audio/Makefile
1926 gst-libs/gst/colorbalance/Makefile
1927 gst-libs/gst/floatcast/Makefile
1928 gst-libs/gst/gconf/Makefile
1929 gst-libs/gst/idct/Makefile
1930 gst-libs/gst/media-info/Makefile
1931 gst-libs/gst/mixer/Makefile
1932 gst-libs/gst/navigation/Makefile
1933 gst-libs/gst/play/Makefile
1934 gst-libs/gst/propertyprobe/Makefile
1935 gst-libs/gst/resample/Makefile
1936 gst-libs/gst/riff/Makefile
1937 gst-libs/gst/tag/Makefile
1938 gst-libs/gst/tuner/Makefile
1939 gst-libs/gst/video/Makefile
1940 gst-libs/gst/xoverlay/Makefile
1941 gst-libs/gst/xwindowlistener/Makefile
1942 gst-libs/ext/Makefile
1943 examples/dynparams/Makefile
1944 examples/capsfilter/Makefile
1945 examples/seeking/Makefile
1946 examples/indexing/Makefile
1947 examples/gstplay/Makefile
1948 examples/switch/Makefile
1949 examples/Makefile
1950 testsuite/spider/Makefile
1951 testsuite/alsa/Makefile
1952 testsuite/multifilesink/Makefile
1953 testsuite/Makefile
1954 tools/Makefile
1955 gconf/Makefile
1956 gconf/gstreamer.schemas
1957 pkgconfig/Makefile
1958 pkgconfig/gstreamer-gconf.pc
1959 pkgconfig/gstreamer-gconf-uninstalled.pc
1960 pkgconfig/gstreamer-interfaces.pc
1961 pkgconfig/gstreamer-interfaces-uninstalled.pc
1962 pkgconfig/gstreamer-libs.pc
1963 pkgconfig/gstreamer-libs-uninstalled.pc
1964 pkgconfig/gstreamer-media-info.pc
1965 pkgconfig/gstreamer-media-info-uninstalled.pc
1966 pkgconfig/gstreamer-play.pc
1967 pkgconfig/gstreamer-play-uninstalled.pc
1968 pkgconfig/gstreamer-plugins.pc
1969 pkgconfig/gstreamer-plugins-uninstalled.pc
1970 po/Makefile.in
1971 common/Makefile
1972 common/m4/Makefile
1973 m4/Makefile
1974 )
1975 AC_OUTPUT
1976
1977 echo -n "configure: *** Plug-ins that will be built :"
1978 echo -e "$GST_PLUGINS_YES" | sort
1979 echo
1980 echo -n "configure: *** Plug-ins that will not be built :"
1981 echo -e "$GST_PLUGINS_NO" | sort
1982 echo
1983 if test "x$BUILD_EXTERNAL" = "xno"; then
1984   echo "configure: *** No external plug-ins will be built"
1985 fi