merge back from release branch
[platform/upstream/gstreamer.git] / configure.ac
1 AC_INIT
2 AC_CANONICAL_TARGET([])
3
4 dnl when going to/from release please set the nano (fourth number) right !
5 dnl releases only do Wall, cvs and prerelease does Werror too
6 AS_VERSION(gstreamer, GST_VERSION, 0, 5, 1, 1, GST_ERROR="-Wall", GST_ERROR="-Wall -Werror")
7 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
8 AM_MAINTAINER_MODE
9 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
10
11 dnl our libraries and install dirs use major.minor as a version
12 GST_MAJORMINOR=$GST_VERSION_MAJOR.$GST_VERSION_MINOR
13 AC_SUBST(GST_MAJORMINOR)
14
15 dnl CURRENT, REVISION, AGE
16 dnl - library source changed -> increment REVISION
17 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
18 dnl - interfaces added -> increment AGE
19 dnl - interfaces removed -> AGE = 0
20 AS_LIBTOOL(GST, 2, 0, 0)
21
22 AC_CONFIG_SRCDIR([gst/gst.c])
23 AM_CONFIG_HEADER(config.h)
24
25 dnl Add parameters for aclocal
26 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
27 ACLOCAL="$ACLOCAL -I common/m4 $ACLOCAL_FLAGS"
28
29 AC_PROG_CC
30 dnl For interactive UNIX (a Sun thing)
31 AC_ISC_POSIX
32 AM_PROG_CC_STDC
33 AM_PROG_AS
34 AS="${CC}"
35
36 dnl We disable static building for development, for time savings
37 dnl *NOTE*: dnl this line before release, so release does static too
38 dnl AM_DISABLE_STATIC
39
40 AC_HEADER_STDC([])
41
42
43 dnl ##############################
44 dnl # Do automated configuration #
45 dnl ##############################
46
47 dnl Check for tools:
48 dnl ================
49
50 dnl allow for different autotools
51 AS_AUTOTOOLS_ALTERNATE()
52
53 dnl modify pkg-config path
54 AC_ARG_WITH(pkg-config-path, 
55    AC_HELP_STRING([--with-pkg-config-path],
56                   [colon-separated list of pkg-config(1) dirs]),
57    [export PKG_CONFIG_PATH=${withval}])
58
59 GST_DOC()
60 GST_ARCH()
61
62 dnl we require bison for building of some of the marshal files
63 dnl FIXME: check if AC_PROG_YACC is suitable here
64 AC_PATH_PROG(BISON_PATH, bison, no)
65 if test x$BISON_PATH = xno; then
66   AC_MSG_ERROR(Could not find bison)
67 fi
68
69 dnl we require flex for building the parser
70 dnl FIXME: check if AC_PROG_LEX is suitable here
71 AC_PATH_PROG(FLEX_PATH, flex, no)
72 if test x$FLEX_PATH = xno; then
73   AC_MSG_ERROR(Could not find flex)
74 fi
75
76 dnl
77 dnl We should really use AC_SYS_LARGEFILE, but the problem is
78 dnl many of the plugins don't include "config.h".  To assure
79 dnl binary compatibility, it is necessary that all gstreamer
80 dnl code be compiled with the same sizeof(off_t), so we use
81 dnl the following crude hack.
82 dnl
83
84 dnl
85 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
86 dnl same for libs
87 dnl this is so we can make GST_CFLAGS for external modules available
88 dnl without mixing in internal (uninstalled) CFLAGS
89 dnl
90
91 AC_MSG_CHECKING(for large file support)
92 AC_TRY_RUN([
93 #define _LARGEFILE_SOURCE
94 #define _FILE_OFFSET_BITS 64
95 #include <sys/types.h>
96 int main () { return !(sizeof(off_t) == 8); }
97 ],
98 [
99 AC_MSG_RESULT(yes)
100 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
101 ],
102 [
103 AC_MSG_RESULT(no)
104 ],
105 [
106 AC_MSG_RESULT(no)
107 ])
108
109 dnl check for makecontext and define HAVE_MAKECONTEXT if we have it
110 GST_CHECK_MAKECONTEXT()
111
112 dnl Check for a way to display the function name in debug output
113 GST_CHECK_FUNCTION()
114
115 dnl Check for essential libraries first:
116 dnl ====================================
117
118 dnl === GLib 2 ===
119 dnl Minimum required version of GLib2
120 dnl required for compilation without warnings
121 GLIB2_REQ="2.0.1"
122 AC_SUBST(GLIB2_REQ)
123
124 dnl Check for glib2
125 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,HAVE_GLIB2=yes,HAVE_GLIB2=no)
126 GLIB_LIBS=$GLIB2_LIBS
127 GLIB_CFLAGS=$GLIB2_CFLAGS
128 AC_SUBST(GLIB_LIBS)
129 AC_SUBST(GLIB_CFLAGS)
130
131 if test "x$HAVE_GLIB2" = "xno"; then
132   AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
133 fi
134
135 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
136 AC_SUBST(GST_PKG_DEPS)
137   
138 dnl === libxml 2 ===
139 dnl Minimum required version of libxml2
140 LIBXML2_REQ="2.4.9"
141 AC_SUBST(LIBXML2_REQ)
142
143 dnl check for libxml2
144 GST_LIBXML2_CHECK()
145
146 dnl popt checks
147 GST_CHECK_LIBHEADER(POPT, popt, poptStrippedArgv,, popt.h, POPT_LIBS="-lpopt",
148   AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
149                 download the latest version from 
150                 ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/])
151 )
152 AC_MSG_NOTICE(Checking for POPT_TABLEEND)
153 AC_TRY_RUN([
154 #include <popt.h>
155 int main ()
156 {
157 #ifndef POPT_TABLEEND
158   return 1;
159 #else
160   return 0;
161 #endif
162 }
163 ],, [
164   dnl it failed
165   AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
166                 download the latest version from 
167                 ftp://ftp.rpm.org/pub/rpm/dist/rpm-4.0.x/])
168 ])
169
170 dnl Check for atomic.h
171 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
172 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
173 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
174 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
175 if test x$HAVE_ATOMIC_H = xyes; then
176   AC_TRY_RUN([
177 #include "asm/atomic.h"
178 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
179   ],, [
180     # Not successful
181     if test x$HAVE_ATOMIC_H = xyes; then
182       AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
183     fi
184     HAVE_ATOMIC_H=no
185   ], [
186     # Cross compiling
187     AC_MSG_RESULT(yes)
188     AC_MSG_WARN(Can't check properly for atomic reference counting.  Assuming OK.)
189   ])
190 fi
191
192 dnl ######################################################################
193 dnl # Check command line parameters, and set shell variables accordingly #
194 dnl ######################################################################
195
196 dnl FIXME: simplify all this down using a few m4 macros
197
198 AC_ARG_ENABLE(libmmx,
199 AC_HELP_STRING([--enable-libmmx],[use libmmx, if available]),
200 [case "${enableval}" in
201   yes) USE_LIBMMX=$HAVE_LIBMMX ;;
202   no)  USE_LIBMMX=no ;;
203   *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
204 esac], 
205 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
206
207 AC_ARG_ENABLE(atomic,
208 AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
209 [case "${enableval}" in
210   yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
211   noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
212   no)  USE_ATOMIC_H=no;;
213   *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
214 esac], 
215 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
216
217 AC_ARG_ENABLE(plugin-builddir,
218 AC_HELP_STRING([--enable-plugin-builddir],[allow tests/demos to use non-installed plugins]),
219 [case "${enableval}" in
220   yes) PLUGINS_USE_BUILDDIR=yes ;;
221   no)  PLUGINS_USE_BUILDDIR=no ;;
222   *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
223 esac], 
224 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
225
226 GST_DEBUGINFO
227
228 AC_ARG_ENABLE(profiling,
229 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
230 [case "${enableval}" in
231   yes) USE_PROFILING=yes ;;
232   no)  UES_PROFILING=no ;;
233   *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
234 esac], 
235 [USE_PROFILING=no]) dnl Default value
236
237 dnl use a cache dir for storing element registry info.
238 dnl default to building registry in the source tree if we are enabling plugin build dir
239 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
240   GST_CACHE_DIR=`pwd`
241 else
242   dnl ${localstatedir} points to PREFIX/var
243   GST_CACHE_DIR=${localstatedir}/cache/gstreamer-$GST_MAJORMINOR
244 fi
245 AC_ARG_WITH(cachedir,
246 AC_HELP_STRING([--with-cachedir],[specify path to use for plugin and command completion registries]),
247 [case "${withval}" in
248   yes) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
249   no) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
250   *) GST_CACHE_DIR="${withval}" ;;
251 esac], 
252 [:]) dnl Default value
253
254 AS_AC_EXPAND(GST_CACHE_DIR, $GST_CACHE_DIR)
255 AC_MSG_NOTICE(Using $GST_CACHE_DIR as registry cache dir)
256
257
258 dnl building of tests
259 AC_ARG_ENABLE(tests,
260 AC_HELP_STRING([--disable-tests],[disable building test apps]),
261 [case "${enableval}" in
262   yes) BUILD_TESTS=yes ;;
263   no)  BUILD_TESTS=no ;;
264   *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
265 esac], 
266 [BUILD_TESTS=yes]) dnl Default value
267 AM_CONDITIONAL(BUILD_TESTS,         test "x$BUILD_TESTS" = "xyes")
268
269 dnl tests known to fail
270 AC_ARG_ENABLE(failing-tests,
271 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
272 [case "${enableval}" in
273   yes) BUILD_FAILING_TESTS=yes ;;
274   no)  BUILD_FAILING_TESTS=no ;;
275   *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
276 esac], 
277 [BUILD_FAILING_TESTS=no]) dnl Default value
278 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
279 if test x$BUILD_FAILING_TESTS = xyes; then
280   AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
281 else
282   AC_MSG_WARN([Sissy ! By asking to not build the tests known to fail, you hereby waive your right to customer support.  If you do not agree with this EULA, please press Ctrl-C before the next line is printed.  By allowing the next line to be printed, you expressly acknowledge your acceptance of this EULA.])
283 fi
284
285 AC_ARG_ENABLE(examples,
286 AC_HELP_STRING([--disable-examples],[disable building examples]),
287 [case "${enableval}" in
288   yes) BUILD_EXAMPLES=yes ;;
289   no)  BUILD_EXAMPLES=no ;;
290   *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
291 esac], 
292 [BUILD_EXAMPLES=yes]) dnl Default value
293 AM_CONDITIONAL(BUILD_EXAMPLES,      test "x$BUILD_EXAMPLES" = "xyes")
294
295 dnl Next, check for the optional components:
296 dnl ========================================
297
298 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
299 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
300 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
301 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
302 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
303 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
304 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
305 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
306 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
307 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
308 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
309 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
310
311 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
312
313 dnl ################################################
314 dnl # Set defines according to variables set above #
315 dnl ################################################
316
317
318 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
319 dnl HAVE_ and it is likely to be easier to stick with the old name
320 if test "x$USE_LIBMMX" = xyes; then
321   AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
322 fi
323
324 if test "x$USE_ATOMIC_H" = xyes; then
325   AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
326 fi
327
328 dnl test if we have pthread_attr_setstack; if not use the older calls
329 AC_CHECK_LIB(pthread, pthread_attr_setstack, 
330    AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1, 
331              [Defined if libpthread has pthread_attr_setstack ()]))
332
333 dnl test if we have posix_memalign; FreeBSD doesn't
334 AC_CHECK_FUNC(posix_memalign,
335    AC_DEFINE(HAVE_POSIX_MEMALIGN, 1,
336              [Defined if we have posix_memalign ()]))
337
338 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
339   AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
340 fi
341
342 if test "x$USE_DEBUG" = xyes; then
343    GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
344 fi
345
346 if test "x$USE_PROFILING" = xyes; then
347 dnl  CFLAGS="$CFLAGS -pg -fprofile-arcs"
348   FOMIT_FRAME_POINTER=""
349 else
350   FOMIT_FRAME_POINTER="-fomit-frame-pointer"
351 fi
352
353 dnl
354 dnl AC_SUBST(FOMIT_FRAME_POINTER)
355 dnl
356
357 dnl #############################
358 dnl # Set automake conditionals #
359 dnl #############################
360
361 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
362 dnl HAVE_ and it is likely to be easier to stick with the old name
363 AM_CONDITIONAL(HAVE_ATOMIC_H,       test "x$USE_ATOMIC_H" = "xyes")
364
365 AM_CONDITIONAL(EXPERIMENTAL,        test "$EXPERIMENTAL" = "$xyes")
366 AM_CONDITIONAL(BROKEN,              test "$BROKEN" = "$xyes")
367
368 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR,  test "x$PLUGINS_USE_BUILDDIR" = "xyes")
369
370
371 dnl ############################
372 dnl # Set up some more defines #
373 dnl ############################
374
375 dnl Set location of registry dir.
376 AC_DEFINE_UNQUOTED(GST_CACHE_DIR, "$GST_CACHE_DIR", [Define the registry directory])
377 AC_SUBST(GST_CACHE_DIR)
378
379 dnl Set location of plugin directory
380 if test "x${prefix}" = "xNONE"; then
381   PLUGINS_DIR=${ac_default_prefix}/lib/gstreamer-$GST_MAJORMINOR
382 else
383   PLUGINS_DIR=${prefix}/lib/gstreamer-$GST_MAJORMINOR
384 fi
385 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
386 AC_SUBST(PLUGINS_DIR)
387
388 dnl Set location of uninstalled plugin directory
389 PLUGINS_BUILDDIR=`pwd`
390 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
391 AC_SUBST(PLUGINS_BUILDDIR)
392
393 dnl since glib and xml are package deps, there's no need to include their cflags
394 dnl in the pkg-config file
395
396 dnl for pkg-config
397 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
398 GST_PKG_LIBS=$GST_EXT_LIBS
399 AC_SUBST(GST_PKG_CFLAGS)
400 AC_SUBST(GST_PKG_LIBS)
401
402 dnl finalize _CFLAGS and _LIBS
403 dnl add GLIB and XML if necessary to EXT_*
404 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
405 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
406
407 dnl Private vars for libgst only
408 LIBGST_LIBS="$GST_LIBS"
409 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
410 AC_SUBST(LIBGST_LIBS)
411 AC_SUBST(LIBGST_CFLAGS)
412
413 dnl Vars for everyone else
414 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_MAJORMINOR.la"
415 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
416
417 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
418 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
419
420 GST_PLUGIN_LDFLAGS='-module -avoid-version'
421 AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
422
423 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
424
425 dnl ##################################################
426 dnl # deps for examples from manual                  #
427 dnl ##################################################
428
429 PKG_CHECK_MODULES(LIBGNOMEUI, libgnomeui-2.0,
430                   HAVE_LIBGNOMEUI="yes", HAVE_LIBGNOMEUI="no")
431 AC_SUBST(LIBGNOMEUI_CFLAGS)
432 AC_SUBST(LIBGNOMEUI_LIBS)
433 AM_CONDITIONAL(HAVE_LIBGNOMEUI, test "x$HAVE_LIBGNOMEUI" = "xyes")
434
435 dnl ##################################################
436 dnl # Prepare informative messages to display at end #
437 dnl ##################################################
438
439 infomessages=
440
441 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
442   infomessages="$infomessages
443 *** Warning: You have configured using the --enable-plugin-builddir option.
444
445 This option is for development purposes only: binaries built with
446 it should be used with code in the build tree only.  To build an
447 installable version, use ./configure without the --enable-plugin-builddir
448 option.  Note that the autogen.sh script supplies the plugin builddir
449 option automatically -- run ./autogen.sh -- --disable-plugin-builddir to make
450 an installable build.
451
452 "
453 fi
454
455 dnl #########################
456 dnl # Make the output files #
457 dnl #########################
458
459 dnl libs/ext/Makefile
460 dnl nothing there yet !
461 AC_OUTPUT(
462 Makefile
463 include/Makefile
464 gst/Makefile
465 gst/gstversion.h
466 gst/autoplug/Makefile
467 gst/indexers/Makefile
468 gst/elements/Makefile
469 gst/parse/Makefile
470 gst/schedulers/Makefile
471 gst/types/Makefile
472 gst/registries/Makefile
473 libs/Makefile
474 libs/gst/Makefile
475 libs/gst/bytestream/Makefile
476 libs/gst/getbits/Makefile
477 libs/gst/putbits/Makefile
478 libs/gst/control/Makefile
479 libs/ext/Makefile
480 tests/Makefile
481 tests/bufspeed/Makefile
482 tests/memchunk/Makefile
483 tests/muxing/Makefile
484 tests/seeking/Makefile
485 tests/sched/Makefile
486 tests/threadstate/Makefile
487 testsuite/Makefile
488 testsuite/bytestream/Makefile
489 testsuite/caps/Makefile
490 testsuite/cleanup/Makefile
491 testsuite/clock/Makefile
492 testsuite/dynparams/Makefile
493 testsuite/elements/Makefile
494 testsuite/indexers/Makefile
495 testsuite/plugin/Makefile
496 testsuite/refcounting/Makefile
497 testsuite/threads/Makefile
498 examples/Makefile
499 examples/autoplug/Makefile
500 examples/cutter/Makefile
501 examples/helloworld/Makefile
502 examples/helloworld2/Makefile
503 examples/launch/Makefile
504 examples/manual/Makefile
505 examples/mixer/Makefile
506 examples/pingpong/Makefile
507 examples/plugins/Makefile
508 examples/queue/Makefile
509 examples/queue2/Makefile
510 examples/queue3/Makefile
511 examples/queue4/Makefile
512 examples/thread/Makefile
513 examples/typefind/Makefile
514 examples/xml/Makefile
515 tools/Makefile
516 docs/Makefile
517 docs/devhelp/Makefile
518 docs/faq/Makefile
519 docs/gst/Makefile
520 docs/gst/gstreamer.types
521 docs/libs/Makefile
522 docs/manual/Makefile
523 docs/pwg/Makefile
524 docs/plugins/Makefile
525 docs/plugins/gstreamer-plugins.types
526 docs/xsl/Makefile
527 stamp.h
528 gstreamer.pc
529 gstreamer-uninstalled.pc
530 gstreamer.spec,
531 echo "$infomessages", infomessages="$infomessages"
532 )