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