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