no check yet
[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-base, GST_PLUGINS_VERSION, 0, 9, 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 of new series
22 GST_MAJORMINOR=0.9
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/sine/gstsinesrc.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-base-$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 DEFAULT_AUDIOSINK="osssink"
104 DEFAULT_VIDEOSINK="xvimagesink"
105 DEFAULT_AUDIOSRC="osssrc"
106 DEFAULT_VIDEOSRC="v4lsrc"
107 DEFAULT_VISUALIZER="goom"
108 case "$host" in 
109   *-sun-* | *pc-solaris* )
110     DEFAULT_AUDIOSINK="sunaudiosink"
111     DEFAULT_VIDEOSINK="ximagesink"
112     DEFAULT_AUDIOSRC="sunaudiosrc"
113     ;;
114   *-darwin* )
115     DEFAULT_AUDIOSINK="osxaudiosink"
116     DEFAULT_AUDIOSRC="osxaudiosrc"
117     DEFAULT_VIDEOSINK="osxvideosink"
118     ;;
119 esac
120
121 AC_SUBST(DEFAULT_AUDIOSINK)
122 AC_DEFINE_UNQUOTED(DEFAULT_AUDIOSINK,"$DEFAULT_AUDIOSINK",[Default audio sink])
123 AC_SUBST(DEFAULT_AUDIOSRC)
124 AC_DEFINE_UNQUOTED(DEFAULT_AUDIOSRC,"$DEFAULT_AUDIOSRC",[Default audio source])
125 AC_SUBST(DEFAULT_VIDEOSINK)
126 AC_DEFINE_UNQUOTED(DEFAULT_VIDEOSINK,"$DEFAULT_VIDEOSINK",[Default video sink])
127 AC_SUBST(DEFAULT_VIDEOSRC)
128 AC_DEFINE_UNQUOTED(DEFAULT_VIDEOSRC,"$DEFAULT_VIDEOSRC",[Default video source])
129 AC_SUBST(DEFAULT_VISUALIZER)
130 AC_DEFINE_UNQUOTED(DEFAULT_VISUALIZER,"$DEFAULT_VISUALIZER",[Default visualizer])
131
132 dnl ############################################
133 dnl # Super Duper options for plug-in building #
134 dnl ############################################
135
136 dnl ext plug-ins; plug-ins that have external dependencies
137 GST_CHECK_FEATURE(EXTERNAL, [enable building of plug-ins with external deps],,
138 [HAVE_EXTERNAL=yes],enabled,
139 [
140   AC_MSG_WARN(building external plug-ins)
141   BUILD_EXTERNAL="yes"
142 ],[
143   AC_MSG_WARN(all plug-ins with external dependencies will not be built)
144   BUILD_EXTERNAL="no"
145 ])
146 # make BUILD_EXTERNAL available to Makefile.am
147 AM_CONDITIONAL(BUILD_EXTERNAL, test "x$BUILD_EXTERNAL" = "xyes")
148
149 dnl experimental plug-ins; stuff that hasn't had the dust settle yet
150 dnl read 'builds, but might not work'UTO
151 GST_CHECK_FEATURE(EXPERIMENTAL, [enable building of experimental plug-ins],,
152 [HAVE_EXPERIMENTAL=yes],disabled,
153 [
154   AC_MSG_WARN(building experimental plug-ins)
155   USE_TARKIN="yes"
156 ],[
157   AC_MSG_NOTICE(not building experimental plug-ins)
158   USE_TARKIN="no"
159 ])
160
161 dnl broken plug-ins; stuff that doesn't seem to build at the moment
162 GST_CHECK_FEATURE(BROKEN, [enable building of broken plug-ins],,
163 HAVE_BROKEN=yes,disabled,
164 [  
165   AC_MSG_WARN([building broken plug-ins -- no bug reports on these, only patches :)])
166 ],[
167   AC_MSG_NOTICE([not building broken plug-ins])
168 ])
169
170 dnl ##############################
171 dnl # Do automated configuration #
172 dnl ##############################
173
174 dnl Check for tools:
175 dnl ================
176
177 dnl allow for different autotools
178 AS_AUTOTOOLS_ALTERNATE()
179
180 dnl modify pkg-config path
181 AC_ARG_WITH(pkg-config-path, 
182    AC_HELP_STRING([--with-pkg-config-path],[colon-separated list of pkg-config(1) dirs]),
183    [export PKG_CONFIG_PATH=${withval}])
184
185 GST_DOC()
186 dnl check architecture
187 GST_ARCH()
188
189 dnl check for gconftool-2
190
191 dnl this macro defines an am conditional, so it needs to be run always
192 AM_GCONF_SOURCE_2
193
194 translit(dnm, m, l) AM_CONDITIONAL(USE_GCONFTOOL, true)
195 GST_CHECK_FEATURE(GCONFTOOL, [GConf schemas], , [
196   AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
197   if test x$GCONFTOOL = xno; then
198     AC_MSG_WARN(Not installing GConf schemas)
199     HAVE_GCONFTOOL="no"
200   else
201     HAVE_GCONFTOOL="yes"
202   fi
203   AC_SUBST(HAVE_GCONFTOOL)
204 ])
205
206 dnl check for GConf libraries
207 translit(dnm, m, l) AM_CONDITIONAL(USE_GCONF, true)
208 GST_CHECK_FEATURE(GCONF, [GConf libraries], , [
209   PKG_CHECK_MODULES(GCONF, gconf-2.0, HAVE_GCONF="yes", HAVE_GCONF="no")
210   AC_SUBST(GCONF_CFLAGS)
211   AC_SUBST(GCONF_LIBS)
212 ])
213
214 dnl check for gstreamer
215 dnl uninstalled is selected preferentially -- see pkg-config(1)
216 GST_REQ=0.9.0
217 PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= $GST_REQ,
218   HAVE_GST="yes", HAVE_GST="no")
219
220 if test "x$HAVE_GST" = "xno"; then
221   AC_MSG_ERROR(no GStreamer found)
222 fi
223
224 GST_TOOLS_DIR=`pkg-config --variable=toolsdir gstreamer-$GST_MAJORMINOR`
225 if test -z $GST_TOOLS_DIR; then
226   AC_MSG_ERROR([no tools dir defined in GStreamer pkg-config file; core upgrade needed.])
227 fi
228 AC_SUBST(GST_TOOLS_DIR)
229
230 dnl check for gstreamer-control; uninstalled is selected preferentially
231 PKG_CHECK_MODULES(GST_CONTROL, gstreamer-control-$GST_MAJORMINOR >= $GST_REQ,
232   HAVE_GST_CONTROL="yes", HAVE_GST_CONTROL="no")
233
234 if test "x$HAVE_GST_CONTROL" = "xno"; then
235   AC_MSG_ERROR(no GStreamer Control Libs found)
236 fi
237
238 AC_SUBST(GST_CONTROL_LIBS)
239
240 dnl check for gstreamer-dataprotocol; uninstalled is selected preferentially
241 PKG_CHECK_MODULES(GST_GDP, gstreamer-dataprotocol-$GST_MAJORMINOR >= $GST_REQ,
242   HAVE_GST_GDP="yes", HAVE_GST_GDP="no")
243
244 if test "x$HAVE_GST_GDP" = "xno"; then
245   AC_MSG_ERROR(no GStreamer Dataprotocol Libs found)
246 fi
247
248 AC_SUBST(GST_GDP_LIBS)
249
250 PKG_CHECK_MODULES(GST_BASE, gstreamer-base-$GST_MAJORMINOR >= $GST_REQ,
251   HAVE_GST_BASE="yes", HAVE_GST_BASE="no")
252
253 if test "x$HAVE_GST_BASE" = "xno"; then
254   AC_MSG_ERROR(no libgstbase found)
255 fi
256
257 AC_SUBST(GST_BASE_LIBS)
258
259 dnl Determine endianness
260 AC_C_BIGENDIAN
261
262 dnl Check for fast float to int casting as defined in C99
263 AC_C99_FUNC_LRINT()
264 AC_C99_FUNC_LRINTF()
265
266 dnl Check for essential libraries first:
267 dnl ====================================
268
269 GST_GLIB2_CHECK()
270
271 dnl Check for additional libraries that we might use:
272 dnl =================================================
273 dnl GTK
274 HAVE_GTK=NO
275 PKG_CHECK_MODULES(GTK2, gtk+-2.0 >= 2.2.0, HAVE_GTK_22=yes, HAVE_GTK_22=no)
276 if test "x$HAVE_GTK_22" = "xyes"; then
277   HAVE_GTK=yes
278   GTK_VERSION=`$PKG_CONFIG --variable=gtk_binary_version gtk+-2.0`
279   AC_SUBST(GTK_VERSION)
280   GTK_PREFIX=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
281   GDK_PIXBUF_LIBDIR=`$PKG_CONFIG --variable=libdir gdk-pixbuf-2.0`
282   GDK_PIXBUF_PREFIXDIR=`$PKG_CONFIG --variable=prefix gdk-pixbuf-2.0`
283   AC_SUBST(GTK_BASE_DIR)
284 else
285   PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK_20=yes, HAVE_GTK_20=no)
286 fi
287 if test "x$HAVE_GTK_20" = "xyes"; then
288   HAVE_GTK=yes
289 fi
290 GTK_CFLAGS=$GTK2_CFLAGS
291 GTK_LIBS=$GTK2_LIBS
292 AC_SUBST(GTK_LIBS)
293 AC_SUBST(GTK_CFLAGS)
294 AC_SUBST(HAVE_GTK)
295
296 # gdk_pixbuf gstreamer loader is considered experimental, so disable
297 # by default
298 if test "x$HAVE_GTK_22" = "xyes"; then
299   HAVE_GDK_LOADERS=yes
300 else
301   HAVE_GDK_LOADERS=no
302 fi
303
304 # we set the defaults always to make sure we have non-empty variables
305 # for the Makefile
306
307 # by default, stick to prefix
308 GDK_PIXBUF_LOADER_DIR=${libdir}/gtk-2.0/\${GTK_VERSION}/loaders
309 GDK_PIXBUF_CONF_DIR=${sysconfdir}/gtk-2.0
310
311
312 AC_ARG_ENABLE(gdk-pixbuf-loader,
313   AC_HELP_STRING([--enable-gdk-pixbuf-loader],
314               [whether to enable building of gdk_pixbuf loader]),
315               :, HAVE_GDK_LOADERS="no")
316
317 if test "x$HAVE_GDK_LOADERS" = "xyes"; then
318   AC_PATH_PROG(QUERYLOADERS, gdk-pixbuf-query-loaders, no)
319   # allow customization of pixbuf loader install location
320   # when nothing specified, adhere to prefix settings
321   # when called without any option with this argument, autodetect
322   # when called with a path, set to the given path
323
324   AC_ARG_WITH(gdk-pixbuf-loader-dir, 
325      AC_HELP_STRING([--with-gdk-pixbuf-loader-dir],
326         [directory to install the gdk_pixbuf loader (none for pkg-config default)]),
327      [
328       if test "x${withval}" != xyes ; then
329         GDK_PIXBUF_LOADER_DIR="${withval}"
330       else
331         GDK_PIXBUF_LOADER_DIR="$GDK_PIXBUF_LIBDIR/gtk-2.0/\$GTK_VERSION/loaders"
332       fi
333      ]
334   )
335   AS_AC_EXPAND(GDK_PIXBUF_LOADER_DIR, $GDK_PIXBUF_LOADER_DIR)
336   AC_SUBST(GDK_PIXBUF_LOADER_DIR)
337   AC_MSG_NOTICE([Putting GTK+-2 pixbuf loaders in $GDK_PIXBUF_LOADER_DIR])
338   
339   # allow customization of pixbuf loader configuration file
340   # when nothing specified, adhere to prefix settings
341   # when called without any option with this argument, autodetect
342   # when called with a path, set to the given path
343
344   AC_ARG_WITH(gdk-pixbuf-conf-dir, 
345      AC_HELP_STRING([--with-gdk-pixbuf-conf-dir],
346         [directory to install the gdk_pixbuf config (none for pkg-config default)]),
347      [
348       if test "x${withval}" != xyes ; then
349         GDK_PIXBUF_CONF_DIR="${withval}"
350       else
351         GDK_PIXBUF_CONF_DIR="$GDK_PIXBUF_PREFIXDIR/etc/gtk-2.0/"
352       fi
353      ]
354   )
355   AS_AC_EXPAND(GDK_PIXBUF_CONF_DIR, $GDK_PIXBUF_CONF_DIR)
356   AC_SUBST(GDK_PIXBUF_CONF_DIR)
357   AC_MSG_NOTICE([Putting GTK+-2 pixbuf loader config in $GDK_PIXBUF_CONF_DIR])
358 fi
359 AM_CONDITIONAL(HAVE_GDK_LOADERS, test "x$HAVE_GDK_LOADERS" = "xyes")
360
361 PKG_CHECK_MODULES(LIBOIL, liboil-0.3 >= 0.3.2, HAVE_LIBOIL=yes, HAVE_LIBOIL=no)
362 AC_SUBST(LIBOIL_CFLAGS)
363 AC_SUBST(LIBOIL_LIBS)
364 if test "x${HAVE_LIBOIL}" != xyes ; then
365   AC_ERROR([liboil-0.3 is required])
366 fi
367
368 dnl ===========================================================================
369 dnl ============================= gst plug-ins ================================
370 dnl ===========================================================================
371
372 plugindir="\$(libdir)/gstreamer-$GST_MAJORMINOR"
373 AC_SUBST(plugindir)
374
375 GST_PLUGIN_LDFLAGS="-module -avoid-version -export-symbols-regex '[_]*(gst_|Gst|GST_).*' $GST_LIBS"
376 AC_SUBST(GST_PLUGIN_LDFLAGS)
377
378 dnl these are all the gst plug-ins, compilable without additional libs
379 GST_PLUGINS_ALL="\
380         adder \
381         audioconvert \
382         audioscale \
383         audiorate \
384         ffmpegcolorspace \
385         playback \
386         sine \
387         subparse \
388         tcp \
389         typefind \
390         videotestsrc \
391         videorate \
392         videoscale \
393         volume \
394         "
395
396 dnl see if we can build C++ plug-ins
397 if test "x$HAVE_CXX" = "xyes"; then
398   GST_PLUGINS_ALL="$GST_PLUGINS_ALL"
399 else
400   AC_MSG_WARN([Not compiling plug-ins requiring C++ compiler])
401 fi
402
403 AC_SUBST(GST_PLUGINS_ALL)
404
405 GST_PLUGINS_SELECTED=""
406
407 AC_ARG_WITH(plugins,
408     AC_HELP_STRING([--with-plugins],[comma-separated list of plug-ins to compile]),
409     [for i in `echo $withval | tr , ' '`; do
410         if echo $GST_PLUGINS_ALL | grep $i > /dev/null
411         then
412             GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED $i"
413         else
414             echo "plug-in $i not recognized, ignoring..."
415         fi
416     done],
417     [GST_PLUGINS_SELECTED=$GST_PLUGINS_ALL])
418
419 AC_SUBST(GST_PLUGINS_SELECTED)
420
421 dnl ==========================================================================
422 dnl ============================= sys plug-ins ================================
423 dnl ==========================================================================
424
425 echo
426 AC_MSG_NOTICE([Checking libraries for plugins in sys/])
427 echo
428
429 dnl Check for X11
430 translit(dnm, m, l) AM_CONDITIONAL(USE_X, true)
431 GST_CHECK_FEATURE(X, [X libraries and plugins],
432                   [ximagesink], [
433   AC_PATH_XTRA
434   dnl now try to find the HEADER
435   AC_CHECK_HEADER(X11/Xlib.h, HAVE_X="yes", HAVE_X="no")
436
437   if test "x$HAVE_X" = "xno"
438   then
439     AC_MSG_NOTICE([cannot find X11 development files])
440   else
441     dnl this is much more than we want
442     X_LIBS="$X_LIBS $X_PRE_LIBS $X_EXTRA_LIBS"
443     dnl AC_PATH_XTRA only defines the path needed to find the X libs,
444     dnl it does not add the libs; therefore we add them here
445     X_LIBS="$X_LIBS -lX11"
446     AC_SUBST(X_CFLAGS)
447     AC_SUBST(X_LIBS)
448   fi
449   AC_SUBST(HAVE_X)
450 ])
451   
452 dnl *** XVideo ***
453 dnl Look for the PIC library first, Debian requires it.
454 dnl Check debian-devel archives for gory details.
455 dnl 20020110:
456 dnl At the moment XFree86 doesn't distribute shared libXv due
457 dnl to unstable API.  On many platforms you CAN NOT link a shared
458 dnl lib to a static non-PIC lib.  This is what the xvideo GStreamer
459 dnl plug-in wants to do.  So Debian distributes a PIC compiled
460 dnl version of the static lib for plug-ins to link to when it is
461 dnl inappropriate to link the main application to libXv directly.
462 dnl FIXME: add check if this platform can support linking to a
463 dnl        non-PIC libXv, if not then don not use Xv.
464 dnl FIXME: perhaps warn user if they have a shared libXv since
465 dnl        this is an error until XFree86 starts shipping one
466    
467 dnl Check for Xv extension
468 translit(dnm, m, l) AM_CONDITIONAL(USE_XVIDEO, true)
469 GST_CHECK_FEATURE(XVIDEO, [X11 XVideo extensions],
470                   [xvimagesink], [
471   if test x$HAVE_X = xyes; then
472     AC_CHECK_LIB(Xv_pic, XvQueryExtension,
473                  HAVE_XVIDEO="yes", HAVE_XVIDEO="no",
474                  $X_LIBS -lXext)
475
476     if test x$HAVE_XVIDEO = xyes; then
477       XVIDEO_LIBS="-lXv_pic -lXext"
478       AC_SUBST(XVIDEO_LIBS)
479     else
480       dnl try again using something else if we didn't find it first
481       if test x$HAVE_XVIDEO = xno; then
482         AC_CHECK_LIB(Xv, XvQueryExtension,
483                    HAVE_XVIDEO="yes", HAVE_XVIDEO="no",
484                    $X_LIBS -lXext)
485
486         if test x$HAVE_XVIDEO = xyes; then
487           XVIDEO_LIBS="-lXv -lXext"
488           AC_SUBST(XVIDEO_LIBS)
489         fi
490       fi
491     fi
492   fi
493 ])
494
495 dnl check for X Shm
496 translit(dnm, m, l) AM_CONDITIONAL(USE_XSHM, true)
497 GST_CHECK_FEATURE(XSHM, [X Shared Memory extension], xshm, [
498   if test x$HAVE_X = xyes; then
499     AC_CHECK_LIB(Xext, XShmAttach, 
500                  HAVE_XSHM="yes", HAVE_XSHM="no",
501                  $X_LIBS) 
502     if test "x$HAVE_XSHM" = "xyes"; then
503       XSHM_LIBS="-lXext"
504     else
505       dnl On AIX, it is in XextSam instead, but we still need -lXext
506       AC_CHECK_LIB(XextSam, XShmAttach, 
507                    HAVE_XSHM="yes", HAVE_XSHM="no",
508                    $X_LIBS) 
509       if test "x$HAVE_XSHM" = "xyes"; then
510         XSHM_LIBS="-lXext -lXextSam"
511       fi
512     fi
513   fi
514 ], , [ 
515   AC_SUBST(HAVE_XSHM) 
516   AC_SUBST(XSHM_LIBS) 
517 ] )
518
519 dnl v4l/v4l2 checks have been moved down because they require X
520
521 dnl *** Video 4 Linux ***
522 dnl for information about the header/define, see sys/v4l/gstv4lelement.h
523 dnl renamed to GST_V4L in accordance with V4L2 below
524 translit(dnm, m, l) AM_CONDITIONAL(USE_GST_V4L, true)
525 GST_CHECK_FEATURE(GST_V4L, [Video 4 Linux], v4lsrc v4lmjpegsrc v4lmjpegsink, [
526   # first check X
527   HAVE_GST_V4L="no"
528   if test "$HAVE_X" = "yes"
529   then
530     AC_CHECK_DECL(VID_TYPE_MPEG_ENCODER, HAVE_GST_V4L="yes", HAVE_GST_V4L="no", [
531 #include <sys/types.h>
532 #define _LINUX_TIME_H
533 #define __user
534 #include <linux/videodev.h>
535     ])
536   fi
537 ])
538
539 dnl *** Video 4 Linux 2 ***
540 dnl for information about the header/define, see sys/v4l2/gstv4l2element.h
541 dnl renamed to GST_V4L2 because of some conflict with kernel headers
542 translit(dnm, m, l) AM_CONDITIONAL(USE_GST_V4L2, true)
543 GST_CHECK_FEATURE(GST_V4L2, [Video 4 Linux 2], v4l2src, [
544   HAVE_GST_V4L2="no"
545   if test "$HAVE_X" = "yes"
546   then
547     AC_MSG_CHECKING([Checking for uptodate v4l2 installation])
548     AC_TRY_COMPILE([
549 #include <sys/types.h>
550 #include <linux/types.h>
551 #define _LINUX_TIME_H
552 #define __user
553 #include <linux/videodev2.h>
554 #if defined(V4L2_MAJOR_VERSION) || defined(V4L2_MINOR_VERSION)
555 #error too early v4l2 version or no v4l2 at all
556 #endif
557     ], [
558 return 0;
559     ], [ HAVE_GST_V4L2="yes" && AC_MSG_RESULT(yes)],
560        [ HAVE_GST_V4L2="no"  && AC_MSG_RESULT(no) &&
561          AC_CHECK_HEADER(linux/videodev2.h,
562                          [ AC_MSG_WARN([video4linux2 headers were found, but they're old. Please update v4l2 to compile the v4l2 plugins])],
563                          [ AC_MSG_WARN([video4linux2 was not found])])
564        ])
565   fi
566   dnl check for missing v4l2_buffer declaration (see #135919)
567   if [ test x$HAVE_GST_V4L2 = xyes ]; then
568     MISSING_DECL=0
569     AC_MSG_CHECKING(struct v4l2_buffer declaration)
570     AC_TRY_COMPILE([
571 #include <sys/types.h>
572 #include <linux/types.h>
573 #define _LINUX_TIME_H
574 #define __user
575 #include <linux/videodev2.h>
576     ],[
577 struct v4l2_buffer buf;
578 buf.index = 0;
579 return 0;
580     ], [ AC_MSG_RESULT(yes) ], [ MISSING_DECL=1 && AC_MSG_RESULT(no) ])
581     if [ test x$MISSING_DECL = x1 ]; then
582       AC_DEFINE(GST_V4L2_MISSING_BUFDECL, 1, [struct v4l2_buffer missing])
583     fi
584   fi
585 ])
586
587 dnl Next, check for the optional libraries:
588 dnl These are all libraries used in building plug-ins
589 dnl ================================================
590 dnl let's try and sort them alphabetically, shall we ?
591
592 if test "x$BUILD_EXTERNAL" = "xyes"; then
593
594 echo
595 AC_MSG_NOTICE([Checking libraries for plugins in ext/])
596 echo
597
598 dnl *** alsa ***
599 translit(dnm, m, l) AM_CONDITIONAL(USE_ALSA, true)
600 GST_CHECK_FEATURE(ALSA, [alsa plug-ins], gstalsa, [
601   PKG_CHECK_MODULES(ALSA, alsa >= 0.9.1, [
602     HAVE_ALSA="yes"
603     AC_SUBST(ALSA_CFLAGS)
604     AC_SUBST(ALSA_LIBS)
605   ], [
606     AM_PATH_ALSA(0.9.1, HAVE_ALSA="yes", HAVE_ALSA="no")
607   ])
608 ])
609
610 dnl *** CDParanoia ***
611 translit(dnm, m, l) AM_CONDITIONAL(USE_CDPARANOIA, true)
612 GST_CHECK_FEATURE(CDPARANOIA, [CDParanoia], cdparanoia, [
613   GST_CHECK_LIBHEADER(CDPARANOIA, cdda_interface, 
614                       cdda_open, -lm, 
615                       cdda_interface.h, 
616                       CDPARANOIA_LIBS="-lcdda_interface -lcdda_paranoia"
617                       HEADER_DIR="no"
618                       FOUND_CDPARANOIA="yes")
619   if test "x$FOUND_CDPARANOIA" != "xyes";
620   then
621     GST_CHECK_LIBHEADER(CDPARANOIA, cdda_interface, 
622                         cdda_open, -lm, 
623                         cdda/cdda_interface.h, 
624                         CDPARANOIA_LIBS="-lcdda_interface -lcdda_paranoia"
625                         HEADER_DIR="yes"
626                         FOUND_CDPARANOIA="yes")
627   fi
628   if test "x$HEADER_DIR" = "xyes";
629   then
630     AC_DEFINE_UNQUOTED(CDPARANOIA_HEADERS_IN_DIR, ,
631                        defined if cdda headers are in a cdda/ directory)
632   fi
633   AC_SUBST(CDPARANOIA_LIBS)
634 ])
635 dnl FIXME : add second check somehow if that is necessary
636 dnl AC_CHECK_LIB(cdda_paranoia, paranoia_init, : , HAVE_CDPARANOIA=no, -lcdda_interface )
637 dnl AC_CHECK_HEADER(cdda_paranoia.h, :, HAVE_CDPARANOIA=no)
638
639 dnl *** Gnome VFS ***
640 translit(dnm, m, l) AM_CONDITIONAL(USE_GNOME_VFS, true)
641 GST_CHECK_FEATURE(GNOME_VFS, [Gnome VFS], gnomevfssrc, [
642   PKG_CHECK_MODULES(GNOME_VFS, gnome-vfs-2.0, HAVE_GNOME_VFS="yes", HAVE_GNOME_VFS="no")
643   AC_SUBST(GNOME_VFS_CFLAGS)
644   AC_SUBST(GNOME_VFS_LIBS)
645 ])
646
647 dnl *** libvisual ***
648 USE_LIBVISUAL=no
649 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBVISUAL, true)
650 GST_CHECK_FEATURE(LIBVISUAL, [libvisual visualization plugins], libvisual, [
651   PKG_CHECK_MODULES(LIBVISUAL, libvisual = 0.2.0, HAVE_LIBVISUAL="yes", HAVE_LIBVISUAL="no")
652   AC_SUBST(LIBVISUAL_CFLAGS)
653   AC_SUBST(LIBVISUAL_LIBS)
654 ])
655
656 dnl *** ogg ***
657 translit(dnm, m, l) AM_CONDITIONAL(USE_OGG, true)
658 GST_CHECK_FEATURE(OGG, [ogg de/encoder], oggdemux oggmux, [
659   PKG_CHECK_MODULES(OGG, ogg >= 1.0, [
660     HAVE_OGG="yes"
661     AC_SUBST(OGG_CFLAGS)
662     AC_SUBST(OGG_LIBS)
663   ], [
664     XIPH_PATH_OGG(HAVE_OGG="yes", HAVE_OGG="no")
665     AS_SCRUB_INCLUDE(OGG_CFLAGS)
666   ])
667 ])
668
669 dnl *** theora ***
670 translit(dnm, m, l) AM_CONDITIONAL(USE_THEORA, true)
671 GST_CHECK_FEATURE(THEORA, [ogg theora codec], theoradec theoraenc, [
672   PKG_CHECK_MODULES(THEORA, theora, [
673     HAVE_THEORA="yes"
674     AC_SUBST(THEORA_LIBS)
675     AC_SUBST(THEORA_CFLAGS)
676   ], [
677     GST_CHECK_LIBHEADER(THEORA, theora, theora_version_string, "-logg", theora/theora.h, THEORA_LIBS="-ltheora -logg")
678     AC_SUBST(THEORA_LIBS)
679   ])
680 ])
681
682 dnl *** vorbis ***
683 dnl AM_PATH_VORBIS only takes two options
684 translit(dnm, m, l) AM_CONDITIONAL(USE_VORBIS, true)
685 GST_CHECK_FEATURE(VORBIS, [vorbis plug-in], vorbisenc vorbisdec, [
686   PKG_CHECK_MODULES(VORBIS, vorbis >= 1.0 vorbisenc >= 1.0, [
687     HAVE_VORBIS="yes"
688   ], [
689     XIPH_PATH_VORBIS(HAVE_VORBIS="yes", HAVE_VORBIS="no")
690     AS_SCRUB_INCLUDE(VORBIS_CFLAGS)
691   ])
692 ])
693 if test "x$HAVE_VORBIS" = "xyes"; then
694   ac_cflags_save="$CFLAGS"
695   dnl FIXME: does this work on non-gcc? -- Company
696   CFLAGS="-Wall -Werror"
697   AC_COMPILE_IFELSE(
698     AC_LANG_PROGRAM([
699 #include <vorbis/codec.h>
700                      ],[
701 vorbis_dsp_state *v;
702
703 vorbis_synthesis_restart (v);
704                      ]), HAVE_VSR=yes, HAVE_VSR=no)
705   if test "x$HAVE_VSR" = "xyes"; then
706     AC_DEFINE_UNQUOTED(HAVE_VORBIS_SYNTHESIS_RESTART, 1,
707                        [defined if vorbis_synthesis_restart is present])
708   fi
709   CFLAGS="$ac_cflags_save"
710 fi
711
712 fi dnl of EXT plugins
713
714 dnl Check for atomic.h
715 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
716 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
717 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
718 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
719 if test x$HAVE_ATOMIC_H = xyes; then
720   AC_TRY_RUN([
721 #include "asm/atomic.h"
722 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
723   ],, [
724     # Not successful
725     if test x$HAVE_ATOMIC_H = xyes; then
726       AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
727     fi
728     HAVE_ATOMIC_H=no
729   ], [
730     # Cross compiling
731     AC_MSG_RESULT(yes)
732     AC_MSG_WARN(Can't check properly for atomic reference counting.  Assuming OK.)
733   ])
734 fi
735
736 dnl check for "check", unit testing library/header
737 AM_PATH_CHECK(0.9.2, HAVE_CHECK=yes, HAVE_CHECK=no)
738 AM_CONDITIONAL(HAVE_CHECK, test "x$HAVE_CHECK" = "xyes")
739
740 dnl ######################################################################
741 dnl # Check command line parameters, and set shell variables accordingly #
742 dnl ######################################################################
743
744 AC_ARG_ENABLE(atomic,
745   AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
746 [case "${enableval}" in
747   yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
748   noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
749   no)  USE_ATOMIC_H=no;;
750   *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
751 esac], 
752 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
753
754 AC_ARG_ENABLE(profiling,
755   AC_HELP_STRING([--enable-profiling],
756                  [-pg to compiler commandline, for profiling]),
757 [case "${enableval}" in
758   yes) USE_PROFILING=yes ;;
759   no)  UES_PROFILING=no ;;
760   *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
761 esac], 
762 [USE_PROFILING=no]) dnl Default value
763
764 AC_ARG_ENABLE(tests,
765   AC_HELP_STRING([--disable-tests],[disable building test apps]),
766 [case "${enableval}" in
767   yes) BUILD_TESTS=yes ;;
768   no)  BUILD_TESTS=no ;;
769   *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
770 esac], 
771 [BUILD_TESTS=yes]) dnl Default value
772
773 AC_ARG_ENABLE(examples,
774   AC_HELP_STRING([--disable-examples],[disable building examples]),
775 [case "${enableval}" in
776   yes) BUILD_EXAMPLES=yes ;;
777   no)  BUILD_EXAMPLES=no ;;
778   *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
779 esac], 
780 [BUILD_EXAMPLES=yes]) dnl Default value
781
782 dnl seeking needs freetype, so check for it here
783 PKG_CHECK_MODULES(FT2, freetype2 >= 2.0.9, HAVE_FT2="yes", [
784   AC_CHECK_FT2(2.0.9, HAVE_FT2="yes", HAVE_FT2="no")
785 ])
786 dnl make the HAVE_FT2 variable available to automake and Makefile.am
787 AM_CONDITIONAL(HAVE_FT2, test "x$HAVE_FT2" = "xyes")
788 AC_SUBST(FT2_CFLAGS)
789 AC_SUBST(FT2_LIBS)
790
791 dnl ################################################
792 dnl # Set defines according to variables set above #
793 dnl ################################################
794
795
796 if test "x$USE_ATOMIC_H" = xyes; then
797   AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
798 fi
799
800 # do not use deprecated stuff
801 GST_CFLAGS="$GST_CFLAGS -DGST_DISABLE_DEPRECATED"
802
803 if test "x$USE_DEBUG" = xyes; then
804   GST_CFLAGS="$GST_CFLAGS -g"
805 fi
806
807 dnl ######################
808 dnl # Checks for gtk-doc #
809 dnl ######################
810
811 GTK_DOC_CHECK([1.3])
812
813 dnl #############################
814 dnl # Set automake conditionals #
815 dnl #############################
816
817 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
818 dnl HAVE_ and it is likely to be easier to stick with the old name
819 AM_CONDITIONAL(HAVE_ATOMIC_H,       test "x$USE_ATOMIC_H" = "xyes")
820
821 AM_CONDITIONAL(EXPERIMENTAL,        test "$EXPERIMENTAL" = "$xyes")
822 AM_CONDITIONAL(BROKEN,              test "$BROKEN" = "$xyes")
823
824 AM_CONDITIONAL(HAVE_NASM,           test "x$HAVE_NASM" = "xyes")
825 AM_CONDITIONAL(HAVE_GTK,            test "x$HAVE_GTK" = "xyes")
826 AM_CONDITIONAL(BUILD_TESTS,         test "x$BUILD_TESTS" = "xyes")
827 AM_CONDITIONAL(BUILD_EXAMPLES,      test "x$BUILD_EXAMPLES" = "xyes")
828 AM_CONDITIONAL(HAVE_FIG2DEV_PNG,    $HAVE_FIG2DEV_PNG)
829 AM_CONDITIONAL(HAVE_FIG2DEV_PDF,    $HAVE_FIG2DEV_PDF)
830 AM_CONDITIONAL(HAVE_RAW1394,        test "x$HAVE_RAW1394" = "xyes")
831
832 dnl prefer internal headers to already installed ones
833 dnl also add builddir include for enumtypes and marshal
834 GST_CFLAGS="-I\$(top_srcdir)/gst-libs -I\$(top_builddir)/gst-libs $GST_CFLAGS $GST_ERROR"
835
836 AC_SUBST(GST_LIBS)
837 AC_SUBST(GST_CFLAGS)
838
839 dnl ###########################
840 dnl # Configure external libs #
841 dnl ###########################
842
843 dnl ############################
844 dnl # Set up some more defines #
845 dnl ############################
846
847 dnl set license and copyright notice
848 AC_DEFINE(GST_LICENSE, "LGPL", [GStreamer license])
849
850 dnl package name in plugins
851 AC_ARG_WITH(package-name,
852 AC_HELP_STRING([--with-package-name],[specify package name to use in plugins]),
853 [case "${withval}" in
854   yes) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
855   no) AC_MSG_ERROR(bad value ${withval} for --with-package-name) ;;
856   *) GST_PACKAGE="${withval}" ;;
857 esac], 
858 [
859 dnl default value
860 if test "x$GST_CVS" = "xyes"
861 then
862   dnl nano >= 1
863   GST_PACKAGE="GStreamer CVS/prerelease"
864 else
865   GST_PACKAGE="GStreamer source release"
866 fi
867 ]
868 )
869 AC_MSG_NOTICE(Using $GST_PACKAGE as package name)
870 AC_DEFINE_UNQUOTED(GST_PACKAGE, "$GST_PACKAGE", [package name in plugins])
871
872 dnl package origin URL
873 AC_ARG_WITH(package-origin,
874 AC_HELP_STRING([--with-package-origin],[specify package origin URL to use in plugins]),
875 [case "${withval}" in
876   yes) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
877   no) AC_MSG_ERROR(bad value ${withval} for --with-package-origin) ;;
878   *) GST_ORIGIN="${withval}" ;;
879 esac], 
880 [GST_ORIGIN="http://gstreamer.freedesktop.org/"]) dnl Default value
881 AC_MSG_NOTICE(Using $GST_ORIGIN as package origin)
882 AC_DEFINE_UNQUOTED(GST_ORIGIN, "$GST_ORIGIN", [package origin])
883
884 dnl #########################
885 dnl # Make the output files #
886 dnl #########################
887
888 AC_CONFIG_FILES(
889 Makefile
890 gst-plugins-base.spec
891 gst/Makefile
892 gst/adder/Makefile
893 gst/audioconvert/Makefile
894 gst/audioscale/Makefile
895 gst/audiorate/Makefile
896 gst/ffmpegcolorspace/Makefile
897 gst/playback/Makefile
898 gst/sine/Makefile
899 gst/subparse/Makefile
900 gst/tcp/Makefile
901 gst/typefind/Makefile
902 gst/videotestsrc/Makefile
903 gst/videorate/Makefile
904 gst/videoscale/Makefile
905 gst/volume/Makefile
906 sys/Makefile
907 sys/ximage/Makefile
908 sys/xvimage/Makefile
909 sys/v4l/Makefile
910 ext/Makefile
911 ext/alsa/Makefile
912 ext/cdparanoia/Makefile
913 ext/gnomevfs/Makefile
914 ext/libvisual/Makefile
915 ext/ogg/Makefile
916 ext/theora/Makefile
917 ext/vorbis/Makefile
918 gst-libs/Makefile
919 gst-libs/gst/Makefile
920 gst-libs/gst/audio/Makefile
921 gst-libs/gst/floatcast/Makefile
922 gst-libs/gst/gconf/Makefile
923 gst-libs/gst/interfaces/Makefile
924 gst-libs/gst/net/Makefile
925 gst-libs/gst/riff/Makefile
926 gst-libs/gst/tag/Makefile
927 gst-libs/gst/video/Makefile
928 gst-libs/ext/Makefile
929 examples/seeking/Makefile
930 examples/Makefile
931 tools/Makefile
932 gconf/Makefile
933 gconf/gstreamer.schemas
934 pkgconfig/Makefile
935 pkgconfig/gstreamer-gconf.pc
936 pkgconfig/gstreamer-gconf-uninstalled.pc
937 pkgconfig/gstreamer-plugins-base.pc
938 pkgconfig/gstreamer-plugins-base-uninstalled.pc
939 docs/Makefile
940 docs/libs/Makefile
941 docs/version.entities
942 po/Makefile.in
943 common/Makefile
944 common/m4/Makefile
945 m4/Makefile
946 )
947 AC_OUTPUT
948
949 echo -n "configure: *** Plug-ins that will be built:"
950 echo -e "$GST_PLUGINS_YES" | sort
951 echo
952 echo -n "configure: *** Plug-ins that will not be built:"
953 echo -e "$GST_PLUGINS_NO" | sort
954 echo
955 if test "x$BUILD_EXTERNAL" = "xno"; then
956   echo "configure: *** No external plug-ins will be built"
957 fi