same changes
[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 when going to/from release please set the nano (fourth number) right !
11 dnl We disable static building for development, for time savings
12 AM_DISABLE_STATIC
13 AS_VERSION(gst-plugins, GST_PLUGINS, 0, 3, 4, 1)
14 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
15 AS_LIBTOOL(GST_PLUGINS, 0, 0, 0, yes)
16
17 dnl we'll move this to a configure option later on which will be turned on
18 dnl by autogen
19 dnl GST_ERROR="-Wall -Werror"
20 GST_ERROR="-Werror"
21
22 dnl FIXME take something else ?
23 AC_CONFIG_SRCDIR([gst/law/alaw.c])
24 AM_CONFIG_HEADER(config.h)
25
26 AUTOMAKE="$AUTOMAKE"
27 dnl Add parameters for aclocal
28 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
29 ACLOCAL="$ACLOCAL -I m4 -I common/m4 $ACLOCAL_FLAGS"
30
31 AM_MAINTAINER_MODE
32
33 AC_PROG_CC
34 AM_PROG_CC_STDC
35 AM_PROG_AS
36 AS="${CC}"
37 AC_PROG_CXX
38 AC_PROG_CXXCPP
39 AC_ISC_POSIX
40
41 AC_HEADER_STDC([])
42
43 dnl ###########################################
44 dnl # Super Duper options for plugin building #
45 dnl ###########################################
46
47 dnl experimental plugins; stuff that hasn't had the dust settle yet
48 dnl read 'builds, but might not work'
49 GST_CHECK_FEATURE(EXPERIMENTAL, [enable building of experimental plugins],,
50 [HAVE_EXPERIMENTAL=yes],disabled,
51 [
52   AC_MSG_WARN(building experimental plugins)
53   USE_TARKIN="yes"
54 ],[
55   AC_MSG_NOTICE(not building experimental plugins)
56   USE_TARKIN="no"
57 ])
58
59 dnl broken plugins; stuff that doesn't seem to build at the moment
60 GST_CHECK_FEATURE(BROKEN, [enable building of broken plugins],,
61 HAVE_BROKEN=yes,disabled,
62 [  
63   AC_MSG_WARN([building broken plugins -- no bug reports on these, only patches :)])
64   USE_SMOOTHWAVE="yes"
65   USE_VGA="yes"
66   USE_XMMS="yes"
67 ],[
68   USE_SMOOTHWAVE="no"
69   USE_VGA="no"
70   USE_XMMS="no"
71   AC_MSG_NOTICE(not building broken plugins)
72 ])
73
74 dnl ##############################
75 dnl # Do automated configuration #
76 dnl ##############################
77
78 dnl Check for tools:
79 dnl ================
80
81 dnl allow for different autotools
82 AS_AUTOTOOLS_ALTERNATE()
83
84 dnl modify pkg-config path
85 AC_ARG_WITH(pkg-config-path, 
86    AC_HELP_STRING([--with-pkg-config-path],[colon-separated list of pkg-config(1) dirs]),
87    [export PKG_CONFIG_PATH=${withval}])
88
89 dnl Check for nasm
90 AC_PATH_PROG(NASM_PATH, nasm, no)
91 AC_SUBST(NASM_PATH)
92 if test x$NASM_PATH = xno; then
93   AC_MSG_WARN(Couldn't find nasm)
94   HAVE_NASM="no"
95 else
96   AC_DEFINE(HAVE_NASM, 1, [Define if NASM, the netwide assembler, is available])
97   HAVE_NASM="yes"
98 fi
99
100 dnl check for gconf
101 translit(dnm, m, l) AM_CONDITIONAL(HAVE_GCONF, true)
102 AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
103 if test x$GCONFTOOL = xno; then
104   AC_MSG_WARN(Not installing GConf schemas)
105   HAVE_GCONF="no"
106 else
107   AM_GCONF_SOURCE_2
108   HAVE_GCONF="yes"
109 fi
110 AC_SUBST(HAVE_GCONF)
111
112 dnl check for gstreamer; uninstalled is selected preferentially -- see pkg-config(1)
113 PKG_CHECK_MODULES(GST, gstreamer >= $GST_PLUGINS_MAJOR.$GST_PLUGINS_MINOR.$GST_PLUGINS_MICRO,
114   HAVE_GST="yes", HAVE_GST="no")
115
116 if test "x$HAVE_GST" = "xno"; then
117   AC_MSG_ERROR(no GStreamer found)
118 fi
119
120 GST_TOOLS_DIR=`pkg-config --variable=toolsdir gstreamer`
121 if test -z $GST_TOOLS_DIR; then
122   AC_MSG_ERROR([no tools dir defined in GStreamer pkg-config file; core upgrade needed.])
123 fi
124 AC_SUBST(GST_TOOLS_DIR)
125
126 dnl Set up conditionals for (target) architecture:
127 dnl ==============================================
128
129 dnl Determine CPU
130 case "x${target_cpu}" in
131   xi?86 | k?) HAVE_CPU_I386=yes
132               AC_DEFINE(HAVE_CPU_I386, 1, [Define if the target CPU is an x86])
133               dnl FIXME could use some better detection
134               dnl       (ie CPUID)
135               case "x${target_cpu}" in
136                 xi386 | xi486) ;;
137                 *)             AC_DEFINE(HAVE_RDTSC, 1, [Define if RDTSC is available]) ;;
138               esac ;;
139   xpowerpc)   HAVE_CPU_PPC=yes
140               AC_DEFINE(HAVE_CPU_PPC, 1, [Define if the target CPU is a PPC]) ;;
141   xalpha)     HAVE_CPU_ALPHA=yes
142               AC_DEFINE(HAVE_CPU_ALPHA, 1, [Define if the target CPU is an Alpha]) ;;
143   xarm*)      HAVE_CPU_ARM=yes
144               AC_DEFINE(HAVE_CPU_ARM, 1, [Define if the target CPU is an ARM]) ;;
145   xsparc*)    HAVE_CPU_SPARC=yes
146               AC_DEFINE(HAVE_CPU_SPARC, 1, [Define if the target CPU is a PPC]) ;;
147   xmips*)     HAVE_CPU_MIPS=yes
148               AC_DEFINE(HAVE_CPU_MIPS, 1, [Define if the target CPU is a MIPS]) ;;
149   xhppa*)     HAVE_CPU_HPPA=yes
150               AC_DEFINE(HAVE_CPU_HPPA, 1, [Define if the target CPU is a HPPA]) ;;
151 esac
152
153 dnl Determine endianness
154 AC_C_BIGENDIAN
155
156 dnl Check for fast float to int casting as defined in C99
157 AC_C99_FUNC_LRINT()
158 AC_C99_FUNC_LRINTF()
159
160 dnl Check for essential libraries first:
161 dnl ====================================
162
163 GST_GLIB2_CHECK()
164 PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK=yes, HAVE_GTK=no)
165 GTK_CFLAGS=$GTK2_CFLAGS
166 GTK_LIBS=$GTK2_LIBS
167 AC_SUBST(GTK_LIBS)
168 AC_SUBST(GTK_CFLAGS)
169
170 dnl Check for X11 extensions
171 AC_PATH_XTRA
172 if test "-DX_DISPLAY_MISSING" = "$X_CFLAGS"; then
173   AC_MSG_NOTICE([cannot find X11, the build system needs fixage])
174 fi
175 AC_SUBST(X_CFLAGS)
176 AC_SUBST(X_PRE_LIBS)
177 AC_SUBST(X_EXTRA_LIBS)
178 AC_SUBST(X_LIBS)
179
180 dnl ==========================================================================
181 dnl ============================= gst plugins ================================
182 dnl ==========================================================================
183 GST_PLUGIN_LDFLAGS='-module -avoid-version'
184 AC_SUBST(GST_PLUGIN_LDFLAGS)
185
186 dnl these are all the gst plugins, compilable without additional libs
187 GST_PLUGINS_ALL="\
188         ac3parse adder audioscale auparse avi cdxaparse chart\
189         cutter deinterlace effectv festival flx goom intfloat law level\
190         median mpeg1enc mpeg1sys mpeg1videoparse mpeg2enc mpeg2sub\
191         mpegaudio mpegaudioparse mpegstream mpegtypes modplug\
192         monoscope passthrough playondemand qtdemux rtjpeg silence sine\
193         smooth spectrum speed stereo stereomono\
194         synaesthesia udp videoscale volenv volume vumeter wavparse y4m"
195
196 AC_SUBST(GST_PLUGINS_ALL)
197
198 GST_PLUGINS_SELECTED=""
199
200 AC_ARG_WITH(plugins,
201     AC_HELP_STRING([--with-plugins],[comma-separated list of plugins to compile]),
202     [for i in `echo $withval | tr , ' '`; do
203         if test -n `echo $i | grep $GST_PLUGINS_ALL`; then
204             GST_PLUGINS_SELECTED="$GST_PLUGINS_SELECTED $i"
205         else
206             echo "plugin $i not recognized, ignoring..."
207         fi
208     done],
209     [GST_PLUGINS_SELECTED=$GST_PLUGINS_ALL])
210
211 AC_SUBST(GST_PLUGINS_SELECTED)
212
213 dnl ==========================================================================
214 dnl ============================= sys plugins ================================
215 dnl ==========================================================================
216
217
218 dnl *** DXR3 card ***
219 translit(dnm, m, l) AM_CONDITIONAL(USE_DXR3, true)
220 GST_CHECK_FEATURE(DXR3, [DXR3 hardware mpeg video decoder], dxr3videosink, [
221   AC_CHECK_HEADER(linux/em8300.h, HAVE_DXR3="yes", HAVE_DXR3="no")
222 ])
223
224 dnl *** OSS audio ***
225 translit(dnm, m, l) AM_CONDITIONAL(USE_OSS, true)
226 GST_CHECK_FEATURE(OSS, [OSS audio], osssrc osssink, [
227   AC_CHECK_HEADER(sys/soundcard.h, HAVE_OSS="yes", HAVE_OSS="no")
228 ])
229
230 dnl *** QuickCam ***
231 translit(dnm, m, l) AM_CONDITIONAL(USE_QCAM, true)
232 GST_CHECK_FEATURE(QCAM, [QuickCam], qcamsrc, [
233 dnl this one is for hadess, no qcam when no nasm found
234   if test "x$HAVE_NASM" = "xno";
235   then
236     HAVE_QCAM="no"
237     AC_MSG_WARN([QuickCam needs nasm])
238   else
239     HAVE_QCAM="yes"
240   fi
241 ])
242
243 dnl *** Video 4 Linux ***
244 translit(dnm, m, l) AM_CONDITIONAL(USE_V4L, true)
245 GST_CHECK_FEATURE(V4L, [Video 4 Linux], v4lsrc v4lmjpegsrc v4lmjpegsink, [
246   AC_CHECK_DECL(VID_TYPE_MPEG_ENCODER, HAVE_V4L="yes", HAVE_V4L="no", [#include <linux/videodev.h>])
247 ])
248
249 dnl *** Video CD ***
250 translit(dnm, m, l) AM_CONDITIONAL(USE_VCD, true)
251 GST_CHECK_FEATURE(VCD, [Video CD], vcdsrc, [
252   AC_CHECK_HEADER(linux/cdrom.h, HAVE_VCD="yes", HAVE_VCD="no")
253 ])
254
255 dnl *** VGA ***
256 translit(dnm, m, l) AM_CONDITIONAL(USE_VGA, true)
257 GST_CHECK_FEATURE(VGA, [VGA], vgavideosink, [
258   AC_CHECK_HEADER(asm/vga.h, HAVE_VGA="yes", HAVE_VGA="no")
259 ])
260
261 dnl *** XVideo ***
262 dnl Look for the PIC library first, Debian requires it.
263 dnl Check debian-devel archives for gory details.
264 dnl 20020110:
265 dnl At the moment XFree86 doesn't distribute shared libXv due
266 dnl to unstable API.  On many platforms you CAN NOT link a shared
267 dnl lib to a static non-PIC lib.  This is what the xvideo GStreamer
268 dnl plugin wants to do.  So Debian distributes a PIC compiled
269 dnl version of the static lib for plugins to link to when it is
270 dnl inappropriate to link the main application to libXv directly.
271 dnl FIXME: add check if this platform can support linking to a
272 dnl        non-PIC libXv, if not then don not use Xv.
273 dnl FIXME: perhaps warn user if they have a shared libXv since
274 dnl        this is an error until XFree86 starts shipping one
275 translit(dnm, m, l) AM_CONDITIONAL(USE_XVIDEO, true)
276 GST_CHECK_FEATURE(XVIDEO, [X11 XVideo extensions], xvideosink videosink, [
277   dnl check for PIC static lib
278   GST_CHECK_LIBHEADER(XVIDEO, Xv_pic, XvQueryExtension, $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS, X11/extensions/Xvlib.h, XVIDEO_LIBS="-lXv_pic -lXext")
279   if test x$HAVE_XVIDEO = xno; then
280     dnl PIC lib not found, check for regular lib
281     GST_CHECK_LIBHEADER(XVIDEO, Xv, XvQueryExtension, $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS, X11/extensions/Xvlib.h, XVIDEO_LIBS="-lXv -lXext")
282   fi
283   AC_SUBST(XVIDEO_LIBS)
284 ])
285
286 dnl Next, check for the optional libraries:
287 dnl These are all libraries used in building plugins
288 dnl ================================================
289 dnl let's try and sort them alphabetically, shall we ?
290
291 echo
292 echo
293 AC_MSG_NOTICE(Checking for plugin libraries)
294
295 dnl *** a52dec ***
296 translit(dnm, m, l) AM_CONDITIONAL(USE_A52DEC, true)
297 GST_CHECK_FEATURE(A52DEC, [a52dec], a52dec, [
298   AC_CHECK_A52DEC(HAVE_A52DEC=yes, HAVE_A52DEC=no)
299 ])
300
301 dnl *** aalib ***
302 translit(dnm, m, l) AM_CONDITIONAL(USE_AALIB, true)
303 GST_CHECK_FEATURE(AALIB, [aasink plugin], aasink, [
304   AM_PATH_AALIB(, HAVE_AALIB=yes, HAVE_AALIB=no)
305 ])
306
307 dnl *** alsa ***
308 translit(dnm, m, l) AM_CONDITIONAL(USE_ALSA, true)
309 GST_CHECK_FEATURE(ALSA, [alsa plugins], gstalsa, [
310   AM_PATH_ALSA(0.9.0, HAVE_ALSA=yes, HAVE_ALSA=no)
311 ])
312
313 dnl *** arts ***
314
315 dnl if mcopidl can't be found there's no use in compiling it
316 AC_CHECK_PROG(MCOPIDL, mcopidl, yes, no)
317 if test "xHAVE_MCOPIDL" = "xno";
318 then
319   USE_ARTS=no
320 fi
321
322 translit(dnm, m, l) AM_CONDITIONAL(USE_ARTS, true)
323 GST_CHECK_FEATURE(ARTS, [arts plugins], arts, [
324   AM_PATH_ARTS(, HAVE_ARTS=yes, HAVE_ARTS=no)
325 ])
326 dnl if mcopidl can't be found there's no use in compiling it
327 AC_PATH_PROG(MCOPIDL, mcopidl, yes, no)
328 if test "xHAVE_MCOPIDL" = "xno";
329 then
330   USE_ARTS=NO
331 fi
332
333 dnl *** artsc ***
334 translit(dnm, m, l) AM_CONDITIONAL(USE_ARTSC, true)
335 GST_CHECK_FEATURE(ARTSC, [artsd plugins], artsdsink, [
336   GST_CHECK_ARTSC()
337 ])
338
339 dnl *** audiofile ***
340 dnl this check uses the GST_CHECK_CONFIGPROG macro
341 translit(dnm, m, l) AM_CONDITIONAL(USE_AUDIOFILE, true)
342 GST_CHECK_FEATURE(AUDIOFILE, [audiofile], afsink afsrc, [
343   translit(dnm, m, l) AC_SUBST(AUDIOFILE_LIBS)
344   translit(dnm, m, l) AC_SUBST(AUDIOFILE_CFLAGS)
345   GST_CHECK_CONFIGPROG(AUDIOFILE, audiofile-config)
346 ])
347
348 dnl *** avifile ***
349 dnl this check uses the GST_CHECK_CONFIGPROG macro
350 dnl this check needs more fixing
351 dnl translit(dnm, m, l) AC_SUBST(AVIFILE_LIBS)
352 translit(dnm, m, l) AM_CONDITIONAL(USE_AVIFILE, true)
353 GST_CHECK_FEATURE(AVIFILE, [avifile], windec winenc, [
354   translit(dnm, m, l) AC_SUBST(AVIFILE_CFLAGS)
355   GST_CHECK_CONFIGPROG(AVIFILE, avifile-config)
356   AVIFILE_LIBS="$AVIFILE_LIBS -lstdc++"
357   AC_SUBST(AVIFILE_LIBS)
358 ])
359
360 dnl *** CDParanoia ***
361 translit(dnm, m, l) AM_CONDITIONAL(USE_CDPARANOIA, true)
362 GST_CHECK_FEATURE(CDPARANOIA, [CDParanoia], cdparanoia, [
363   GST_CHECK_LIBHEADER(CDPARANOIA, cdda_interface, cdda_open, -lm, cdda_interface.h, CDPARANOIA_LIBS="-lcdda_interface -lcdda_paranoia")
364   AC_SUBST(CDPARANOIA_LIBS)
365 ])
366 dnl FIXME : add second check somehow if that is necessary
367 dnl AC_CHECK_LIB(cdda_paranoia, paranoia_init, : , HAVE_CDPARANOIA=no, -lcdda_interface )
368 dnl AC_CHECK_HEADER(cdda_paranoia.h, :, HAVE_CDPARANOIA=no)
369
370 dnl *** dv ***
371 translit(dnm, m, l) AM_CONDITIONAL(USE_DV, true)
372 GST_CHECK_FEATURE(DV, [dv library], dv, [
373   GST_CHECK_LIBHEADER(DV, dv, dv_init, -lm $GST_CFLAGS $GST_LIBS, libdv/dv.h, DV_LIBS="-ldv")
374   AC_SUBST(DV_LIBS)
375 ])
376
377 dnl *** dvdread ***
378 translit(dnm, m, l) AM_CONDITIONAL(USE_DVDREAD, true)
379 GST_CHECK_FEATURE(DVDREAD, [dvdread library], dvdreadsrc, [
380   GST_CHECK_LIBHEADER(DVDREAD, dvdread, DVDOpen, , dvdread/dvd_reader.h, DVDREAD_LIBS="-ldvdread")
381   AC_SUBST(DVDREAD_LIBS)
382 ])
383
384 dnl *** dvdnav ***
385 translit(dnm, m, l) AM_CONDITIONAL(USE_DVDNAV, true)
386 GST_CHECK_FEATURE(DVDNAV, [dvdnav library], dvdnavsrc, [
387   translit(dnm, m, l) AC_SUBST(DVDNAV_LIBS)
388   translit(dnm, m, l) AC_SUBST(DVDNAV_CFLAGS)
389   GST_CHECK_CONFIGPROG(DVDNAV, dvdnav-config)
390 ])
391
392 dnl **** ESound ****
393 translit(dnm, m, l) AM_CONDITIONAL(USE_ESD, true)
394 GST_CHECK_FEATURE(ESD, [esound plugins], esdsink esdmon, [
395   AM_PATH_ESD(0.2.12, HAVE_ESD=yes, HAVE_ESD=no)
396 ])
397
398 dnl **** festival ****
399 dnl translit(dnm, m, l) AM_CONDITIONAL(USE_FESTIVAL, true)
400 dnl GST_CHECK_FEATURE(FESTIVAL, [festival plugins], festivalsrc, [
401   dnl NOTE: just using local net connection now, add this lib check
402   dnl       in the future if needed
403   dnl AC_LANG_PUSH(C++)
404   dnl dnl FIXME: took out func to check for
405   dnl dnl This check puts festival_tidy_up in extern "C".
406   dnl dnl But, at least on Debian as of 20020110, it is compiled with name
407   dnl dnl mangling C++ nonsense and symbols can't resolve
408   dnl dnl GST_CHECK_LIBHEADER(FESTIVAL, Festival, festival_tidy_up, , festival/festival.h, FESTIVAL_LIBS="-lFestival")
409   dnl GST_CHECK_LIBHEADER(FESTIVAL, Festival, , , festival/festival.h, FESTIVAL_LIBS="-lFestival")
410   dnl AC_LANG_POP(C++)
411   dnl AC_SUBST(FESTIVAL_LIBS)
412 dnl  HAVE_FESTIVAL=yes
413 dnl])
414
415 dnl *** FLAC ***
416 translit(dnm, m, l) AM_CONDITIONAL(USE_FLAC, true)
417 GST_CHECK_FEATURE(FLAC, [FLAC lossless audio], flacenc flacdec, [
418   GST_CHECK_LIBHEADER(FLAC, FLAC, FLAC__stream_decoder_new, -lm, FLAC/all.h, FLAC_LIBS="-lFLAC")
419   AC_SUBST(FLAC_LIBS)
420 ])
421
422 dnl *** Gnome VFS ***
423 translit(dnm, m, l) AM_CONDITIONAL(USE_GNOME_VFS, true)
424 GST_CHECK_FEATURE(GNOME_VFS, [Gnome VFS], gnomevfssrc, [
425   PKG_CHECK_MODULES(GNOME_VFS, gnome-vfs-2.0, HAVE_GNOME_VFS="yes", HAVE_GNOME_VFS="no")
426   AC_SUBST(GNOME_VFS_CFLAGS)
427   AC_SUBST(GNOME_VFS_LIBS)
428 ])
429
430 dnl *** gsm ***
431 translit(dnm, m, l) AM_CONDITIONAL(USE_GSM, true)
432 GST_CHECK_FEATURE(GSM, [GSM library], gsmenc gsmdec, [
433   GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm.h, GSM_LIBS="-lgsm")
434   if test $HAVE_GSM != "yes"; then
435     GST_CHECK_LIBHEADER(GSM, gsm, gsm_create, , gsm/gsm.h, GSM_LIBS="-lgsm")
436     if test $HAVE_GSM = "yes"; then 
437       AC_DEFINE(GSM_HEADER_IN_SUBDIR, 1, [Define if GSM header in gsm/ subdir])
438     fi
439   fi
440   AC_SUBST(GSM_LIBS)
441 ])
442
443 dnl *** Hermes ***
444 translit(dnm, m, l) AM_CONDITIONAL(USE_HERMES, true)
445 GST_CHECK_FEATURE(HERMES, [Hermes library], colorspace, [
446   GST_CHECK_LIBHEADER(HERMES, Hermes, Hermes_ConverterInstance, , Hermes/Hermes.h, HERMES_LIBS="-lHermes")
447 ], AC_SUBST(HERMES_LIBS))
448
449 dnl *** http ***
450 translit(dnm, m, l) AM_CONDITIONAL(USE_HTTP, true)
451 GST_CHECK_FEATURE(HTTP, [http plugins], gsthttpsrc, [
452   dnl FIXME: need to check for header
453   GHTTP_LIBS=
454   GST_HTTPSRC_GET_TYPE=
455   if test x$USE_GLIB2 = xyes; then
456     AC_MSG_WARN(ghttp disabled for glib2.0)
457   else
458     AC_CHECK_LIB(ghttp, ghttp_request_new,
459       [HTTP_LIBS="-lghttp"
460        GST_HTTPSRC_GET_TYPE="gst_httpsrc_get_type"
461        HAVE_HTTP=yes
462       ], :, $LIBS)
463   fi
464   AC_SUBST(HTTP_LIBS)
465   AC_SUBST(GST_HTTPSRC_GET_TYPE)
466 ])
467
468 dnl *** Jack ***
469 translit(dnm, m, l) AM_CONDITIONAL(USE_JACK, true)
470 GST_CHECK_FEATURE(JACK, Jack, jack, [
471   PKG_CHECK_MODULES(JACK, jack >= 0.29.0, HAVE_JACK="yes", HAVE_JACK="no")
472   AC_SUBST(JACK_CFLAGS)
473   AC_SUBST(JACK_LIBS)
474 ])
475
476 dnl *** jpeg ***
477 dnl FIXME: we could use header checks here as well IMO
478 translit(dnm, m, l) AM_CONDITIONAL(USE_JPEG, true)
479 GST_CHECK_FEATURE(JPEG, [jpeg], jpegenc jpegdec, [
480   AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_JPEG="yes", HAVE_JPEG="no")
481   JPEG_LIBS="-ljpeg"
482   AC_SUBST(JPEG_LIBS)
483 ])
484
485 dnl *** lame ***
486 translit(dnm, m, l) AM_CONDITIONAL(USE_LAME, true)
487 GST_CHECK_FEATURE(LAME, [lame mp3 encoder library], lame, [
488 GST_CHECK_LIBHEADER(LAME, mp3lame, lame_init, -lm, lame/lame.h, HAVE_LAME="yes" LAME_LIBS="-lmp3lame")
489 ])
490 AC_SUBST(LAME_LIBS)
491
492 dnl *** libcolorspace ***
493 translit(dnm, m, l) AM_CONDITIONAL(USE_LCS, true)
494 GST_CHECK_FEATURE(LCS, Lcs, lcs, [
495   PKG_CHECK_MODULES(LCS, lcs, HAVE_LCS="yes", HAVE_LCS="no")
496   AC_SUBST(LCS_CFLAGS)
497   AC_SUBST(LCS_LIBS)
498 ])
499
500 dnl FIXME : check if these CPP flags can be dealt with otherwise
501 dnl libdvcheck_save_CPPFLAGS="$CPPFLAGS"
502 dnl CPPFLAGS="$CPPFLAGS $GST_CFLAGS"
503 dnl AC_CHECK_HEADER(libdv/dv.h, :, HAVE_LIBDV=no)
504 dnl CPPFLAGS="$libdvcheck_save_CPPFLAGS"
505
506 dnl *** mad ***
507 dnl FIXME: we could use header checks here as well IMO
508 translit(dnm, m, l) AM_CONDITIONAL(USE_MAD, true)
509 GST_CHECK_FEATURE(MAD, [mad mp3 decoder], mad, [
510   AC_CHECK_LIB(mad, mad_decoder_finish, HAVE_MAD="yes" MAD_LIBS="-lmad")
511   if test "x$HAVE_MAD" = "xyes"; then
512     # installed with mad >= 0.14
513     HAVE_MAD="no"
514     save_libs=$LIBS
515     LIBS="-lz"
516     AC_CHECK_LIB(id3tag, id3_tag_query, HAVE_MAD="yes" MAD_LIBS="$MAD_LIBS -lid3tag")
517     LIBS=$save_LIBS
518   fi    
519 ])
520 AC_SUBST(MAD_LIBS)
521
522 dnl *** mikmod ***
523 translit(dnm, m, l) AM_CONDITIONAL(USE_MIKMOD, true)
524 GST_CHECK_FEATURE(MIKMOD, [mikmod plugin], mikmod, [
525   AM_PATH_LIBMIKMOD(, HAVE_MIKMOD=yes, HAVE_MIKMOD=no)
526   AC_SUBST(MIKMOD_LIBS, "$LIBMIKMOD_LIBS")
527   AC_SUBST(MIKMOD_CFLAGS, "$LIBMIKMODCFLAGS")
528 ])
529
530 dnl *** mjpegtools ***
531 translit(dnm, m, l) AM_CONDITIONAL(USE_MJPEGTOOLS, true)
532 GST_CHECK_FEATURE(MJPEGTOOLS, [mjpegtools], jpegmmxenc jpegmmxdec, [
533   PKG_CHECK_MODULES(MJPEGTOOLS, mjpegtools, HAVE_MJPEGTOOLS="yes", HAVE_MJPEGTOOLS="no")
534   AC_SUBST(MJPEGTOOLS_LIBS)
535   AC_SUBST(MJPEGTOOLS_CFLAGS)
536 ])
537
538 dnl *** mpeg2dec ***
539 translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2DEC, true)
540 GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [
541   AC_CHECK_MPEG2DEC(HAVE_MPEG2DEC=yes, HAVE_MPEG2DEC=no)
542 ])
543
544 dnl *** openquicktime ***
545 translit(dnm, m, l) AM_CONDITIONAL(USE_OPENQUICKTIME, true)
546 GST_CHECK_FEATURE(OPENQUICKTIME, [Open Quicktime], quicktime_parser quicktime_decoder quicktime_demux,[
547   GST_CHECK_LIBHEADER(OPENQUICKTIME, openquicktime, quicktime_init,, openquicktime/openquicktime.h, OPENQUICKTIME_LIBS="-lopenquicktime")
548   AC_SUBST(OPENQUICKTIME_LIBS)
549 ])
550
551 dnl *** raw1394 ***
552 translit(dnm, m, l) AM_CONDITIONAL(USE_RAW1394, true)
553 GST_CHECK_FEATURE(RAW1394, [raw1394 library], dv1394src, [
554   GST_CHECK_LIBHEADER(RAW1394, raw1394, raw1394_get_handle,, libraw1394/raw1394.h, RAW1394_LIBS="-raw1394")
555   AC_SUBST(RAW1394_LIBS)
556 ])
557
558 dnl *** rtp ***
559 dnl FIXME : adapt and make it work
560 translit(dnm, m, l) AM_CONDITIONAL(USE_RTP, true)
561 GST_CHECK_FEATURE(RTP, [RTP library], rtpenc rtpdec,[
562   AC_CHECK_LIB(rtp, rtp_packet_new_take_data, HAVE_RTP=yes, HAVE_RTP=no, $GST_CFLAGS $GST_LIBS)
563   RTP_LIBS="-lrtp"
564   AC_SUBST(RTP_LIBS)
565 ])
566
567 dnl FIXME header check needs to use GLIB_CFLAGS in order to succeed for rtp
568 dnl can use GST_* which should have GLIB_* info
569 dnl AC_CHECK_HEADERS(rtp/rtp.h, HAVE_LIBRTP=yes, HAVE_LIBRTP=no)
570 dnl AC_CHECK_HEADERS(rtp/rtp-packet.h, :, HAVE_LIBRTP=no)
571 dnl AC_CHECK_HEADERS(rtp/rtcp-packet.h, :, HAVE_LIBRTP=no)
572 dnl AC_CHECK_HEADERS(rtp/rtp-audio.h, :, HAVE_LIBRTP=no)
573
574 dnl *** SDL ***
575 translit(dnm, m, l) AM_CONDITIONAL(USE_SDL, true)
576 GST_CHECK_FEATURE(SDL, [SDL plugin], sdlvideosink, [
577  AM_PATH_SDL(, HAVE_SDL=yes, HAVE_SDL=no)
578 ])
579
580 dnl *** shout ***
581 translit(dnm, m, l) AM_CONDITIONAL(USE_SHOUT, true)
582 GST_CHECK_FEATURE(SHOUT, [shout plugin], icecastsend, [
583   GST_CHECK_LIBHEADER(SHOUT, shout, shout_init_connection,, shout/shout.h, SHOUT_LIBS="-lshout")
584   AC_SUBST(SHOUT_LIBS)
585 ])
586
587 dnl *** sidplay ***
588 translit(dnm, m, l) AM_CONDITIONAL(USE_SIDPLAY, true)
589 GST_CHECK_FEATURE(SIDPLAY, [sidplay plugin], sidplay, [
590   GST_PATH_SIDPLAY()
591 ])
592
593 dnl *** smoothwave ***
594 translit(dnm, m, l) AM_CONDITIONAL(USE_SMOOTHWAVE, true)
595 GST_CHECK_FEATURE(SMOOTHWAVE, [smoothwave plugin], smoothwave, [
596   if test $HAVE_GTK = "yes"; then HAVE_SMOOTHWAVE=yes; fi;
597 ])
598
599
600 dnl *** snapshot ***
601 translit(dnm, m, l) AM_CONDITIONAL(USE_LIBPNG, true)
602 GST_CHECK_FEATURE(LIBPNG, [snapshot plugin], snapshot, [
603   GST_CHECK_LIBHEADER(LIBPNG, png, png_read_info, -lz, png.h, LIBPNG_LIBS="-lpng -lz")
604   AC_SUBST(LIBPNG_LIBS)
605 ])
606
607 dnl *** tarkin ***
608 dnl for now the sources are included in the plugin
609 dnl and should be moved to ext-libs/ perhaps
610 translit(dnm, m, l) AM_CONDITIONAL(USE_TARKIN, true)
611 GST_CHECK_FEATURE(TARKIN, [tarkinenc tarkindec], tarkin, [
612   HAVE_TARKIN="yes"
613 ])
614
615 dnl *** vorbis ***
616 dnl AM_PATH_VORBIS only takes two options
617 translit(dnm, m, l) AM_CONDITIONAL(USE_VORBIS, true)
618 GST_CHECK_FEATURE(VORBIS, [vorbis plugin], vorbisenc vorbisdec, [
619   AM_PATH_VORBIS(HAVE_VORBIS=yes, HAVE_VORBIS=no)
620 ])
621
622 dnl *** XMMS ***
623 translit(dnm, m, l) AM_CONDITIONAL(USE_XMMS, true)
624 GST_CHECK_FEATURE(XMMS, [xmms plugin], xmms, [
625   AM_PATH_XMMS(0.1.0, HAVE_XMMS=yes, HAVE_XMMS=no)
626 ])
627
628 dnl Check for atomic.h
629 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
630 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
631 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
632 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
633 if test x$HAVE_ATOMIC_H = xyes; then
634   AC_TRY_RUN([
635 #include "asm/atomic.h"
636 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
637   ],, [
638     # Not successful
639     if test x$HAVE_ATOMIC_H = xyes; then
640       AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
641     fi
642     HAVE_ATOMIC_H=no
643   ], [
644     # Cross compiling
645     AC_MSG_RESULT(yes)
646     AC_MSG_WARN(Can't check properly for atomic reference counting.  Assuming OK.)
647   ])
648 fi
649
650
651 dnl ######################################################################
652 dnl # Check command line parameters, and set shell variables accordingly #
653 dnl ######################################################################
654
655 GST_DEBUGINFO
656
657 AC_ARG_ENABLE(libmmx,
658 [  --enable-libmmx              use libmmx, if available],
659 [case "${enableval}" in
660   yes) USE_LIBMMX=$HAVE_LIBMMX ;;
661   no)  USE_LIBMMX=no ;;
662   *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
663 esac], 
664 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
665
666 AC_ARG_ENABLE(atomic,
667 [  --enable-atomic              use atomic reference counting header],
668 [case "${enableval}" in
669   yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
670   noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
671   no)  USE_ATOMIC_H=no;;
672   *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
673 esac], 
674 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
675
676 AC_ARG_ENABLE(profiling,
677 [  --enable-profiling           adds -pg to compiler commandline, for profiling],
678 [case "${enableval}" in
679   yes) USE_PROFILING=yes ;;
680   no)  UES_PROFILING=no ;;
681   *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
682 esac], 
683 [USE_PROFILING=no]) dnl Default value
684
685 AC_ARG_ENABLE(tests,
686 [  --disable-tests              disable building test apps],
687 [case "${enableval}" in
688   yes) BUILD_TESTS=yes ;;
689   no)  BUILD_TESTS=no ;;
690   *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
691 esac], 
692 [BUILD_TESTS=yes]) dnl Default value
693
694 AC_ARG_ENABLE(examples,
695 [  --disable-examples           disable building examples],
696 [case "${enableval}" in
697   yes) BUILD_EXAMPLES=yes ;;
698   no)  BUILD_EXAMPLES=no ;;
699   *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
700 esac], 
701 [BUILD_EXAMPLES=yes]) dnl Default value
702
703 dnl ################################################
704 dnl # Set defines according to variables set above #
705 dnl ################################################
706
707
708 if test "x$USE_LIBMMX" = xyes; then
709   AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
710 fi
711
712 if test "x$USE_ATOMIC_H" = xyes; then
713   AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
714 fi
715
716 dnl if test "x$USE_DEBUG" = xyes; then
717 dnl   CFLAGS="$CFLAGS -g"
718 dnl fi
719
720 if test "x$USE_PROFILING" = xyes; then
721 dnl  CFLAGS="$CFLAGS -pg -fprofile-arcs"
722   FOMIT_FRAME_POINTER=""
723 else
724   FOMIT_FRAME_POINTER="-fomit-frame-pointer"
725 fi
726
727 dnl
728 dnl AC_SUBST(FOMIT_FRAME_POINTER)
729 dnl
730
731 dnl #############################
732 dnl # Set automake conditionals #
733 dnl #############################
734
735 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
736 dnl HAVE_ and it is likely to be easier to stick with the old name
737 AM_CONDITIONAL(HAVE_CPU_I386,       test "x$HAVE_CPU_I386" = "xyes")
738 AM_CONDITIONAL(HAVE_CPU_PPC,        test "x$HAVE_CPU_PPC" = "xyes")
739 AM_CONDITIONAL(HAVE_CPU_ALPHA,      test "x$HAVE_CPU_ALPHA" = "xyes")
740 AM_CONDITIONAL(HAVE_CPU_ARM,        test "x$HAVE_CPU_ARM" = "xyes")
741 AM_CONDITIONAL(HAVE_CPU_SPARC,      test "x$HAVE_CPU_SPARC" = "xyes")
742 AM_CONDITIONAL(HAVE_LIBMMX,         test "x$USE_LIBMMX" = "xyes")
743
744 AM_CONDITIONAL(HAVE_ATOMIC_H,       test "x$USE_ATOMIC_H" = "xyes")
745
746 AM_CONDITIONAL(EXPERIMENTAL,        test "$EXPERIMENTAL" = "$xyes")
747 AM_CONDITIONAL(BROKEN,              test "$BROKEN" = "$xyes")
748
749 AM_CONDITIONAL(HAVE_NASM,           test "x$HAVE_NASM" = "xyes")
750 AM_CONDITIONAL(HAVE_LIBGLADE_GNOME, test "x$HAVE_LIBGLADE_GNOME" = "xyes")
751 AM_CONDITIONAL(HAVE_GNOME,          test "x$HAVE_GNOME" = "xyes")
752 AM_CONDITIONAL(HAVE_GTK,            test "x$HAVE_GTK" = "xyes")
753 AM_CONDITIONAL(HAVE_GTK_DOC,        $HAVE_GTK_DOC)
754 AM_CONDITIONAL(BUILD_DOCS,          test "x$BUILD_DOCS" = "xyes")
755 AM_CONDITIONAL(BUILD_TESTS,         test "x$BUILD_TESTS" = "xyes")
756 AM_CONDITIONAL(BUILD_EXAMPLES,      test "x$BUILD_EXAMPLES" = "xyes")
757 AM_CONDITIONAL(BUILD_PLUGIN_DOCS,   test "x$BUILD_PLUGIN_DOCS" = "xyes")
758 AM_CONDITIONAL(HAVE_FIG2DEV_PNG,    $HAVE_FIG2DEV_PNG)
759 AM_CONDITIONAL(HAVE_FIG2DEV_PDF,    $HAVE_FIG2DEV_PDF)
760 AM_CONDITIONAL(HAVE_RAW1394,        test "x$HAVE_RAW1394" = "xyes")
761
762 GST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir)/gst-libs -Wall -Werror"
763 AC_SUBST(GST_LIBS)
764 AC_SUBST(GST_CFLAGS)
765
766 dnl #########################
767 dnl # Make the output files #
768 dnl #########################
769
770 dnl testsuite/autoplug/Makefile
771 dnl testsuite/Makefile
772 AC_CONFIG_FILES(
773 Makefile
774 gstreamer-libs.pc
775 gstreamer-libs-uninstalled.pc
776 gst-plugins.spec
777 gst/Makefile
778 gst/ac3parse/Makefile
779 gst/adder/Makefile
780 gst/audioscale/Makefile
781 gst/auparse/Makefile
782 gst/avi/Makefile
783 gst/cdxaparse/Makefile
784 gst/chart/Makefile
785 gst/cutter/Makefile
786 gst/deinterlace/Makefile
787 gst/effectv/Makefile
788 gst/festival/Makefile
789 gst/flx/Makefile
790 gst/goom/Makefile
791 gst/intfloat/Makefile
792 gst/law/Makefile
793 gst/level/Makefile
794 gst/median/Makefile
795 gst/mpeg1enc/Makefile
796 gst/mpeg1sys/Makefile
797 gst/mpeg1videoparse/Makefile
798 gst/mpeg2enc/Makefile
799 gst/mpeg2sub/Makefile
800 gst/mpegaudio/Makefile
801 gst/mpegaudioparse/Makefile
802 gst/mpegstream/Makefile
803 gst/mpegtypes/Makefile
804 gst/modplug/Makefile
805 gst/modplug/libmodplug/Makefile
806 gst/monoscope/Makefile
807 gst/passthrough/Makefile
808 gst/playondemand/Makefile
809 gst/qtdemux/Makefile
810 gst/rtjpeg/Makefile
811 gst/silence/Makefile
812 gst/sine/Makefile
813 gst/smooth/Makefile
814 gst/spectrum/Makefile
815 gst/speed/Makefile
816 gst/stereo/Makefile
817 gst/stereomono/Makefile
818 gst/synaesthesia/Makefile
819 gst/udp/Makefile
820 gst/videoscale/Makefile
821 gst/volenv/Makefile
822 gst/volume/Makefile
823 gst/vumeter/Makefile
824 gst/wavparse/Makefile
825 gst/y4m/Makefile
826 sys/Makefile
827 sys/dxr3/Makefile
828 sys/oss/Makefile
829 sys/qcam/Makefile
830 sys/v4l/Makefile
831 sys/vcd/Makefile
832 sys/vga/Makefile
833 sys/xvideo/Makefile
834 sys/videosink/Makefile
835 ext/Makefile
836 ext/a52dec/Makefile
837 ext/aalib/Makefile
838 ext/alsa/Makefile
839 ext/arts/Makefile
840 ext/artsd/Makefile
841 ext/audiofile/Makefile
842 ext/avifile/Makefile
843 ext/cdparanoia/Makefile
844 ext/dv/Makefile
845 ext/dvdread/Makefile
846 ext/dvdnav/Makefile
847 ext/esd/Makefile
848 ext/ffmpeg/Makefile
849 ext/flac/Makefile
850 ext/gnomevfs/Makefile
851 ext/gsm/Makefile
852 ext/hermes/Makefile
853 ext/http/Makefile
854 ext/jack/Makefile
855 ext/jpeg/Makefile
856 ext/lcs/Makefile
857 ext/ladspa/Makefile
858 ext/lame/Makefile
859 ext/mad/Makefile
860 ext/mikmod/Makefile
861 ext/mjpegtools/Makefile
862 ext/mpeg2dec/Makefile
863 ext/openquicktime/Makefile
864 ext/raw1394/Makefile
865 ext/rtp/Makefile
866 ext/sdl/Makefile
867 ext/shout/Makefile
868 ext/sidplay/Makefile
869 ext/smoothwave/Makefile
870 ext/vorbis/Makefile
871 ext/tarkin/Makefile
872 ext/xmms/Makefile
873 gst-libs/Makefile
874 gst-libs/gst/Makefile
875 gst-libs/gst/audio/Makefile
876 gst-libs/gst/idct/Makefile
877 gst-libs/gst/resample/Makefile
878 gst-libs/gst/riff/Makefile
879 gst-libs/gst/floatcast/Makefile
880 examples/capsfilter/Makefile
881 examples/Makefile
882 tools/Makefile
883 gconf/Makefile
884 )
885
886 AC_OUTPUT
887
888 echo -e "configure: *** Plugins that will be built : $GST_PLUGINS_YES"
889 echo
890 echo -e "configure: *** Plugins that will not be built : $GST_PLUGINS_NO"
891 echo