2 AC_CANONICAL_TARGET([])
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, 7, 0, 1, GST_CVS="no", GST_CVS="yes")
8 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
10 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
12 dnl our libraries and install dirs use major.minor as a version
13 GST_MAJORMINOR=$GST_VERSION_MAJOR.$GST_VERSION_MINOR
14 AC_SUBST(GST_MAJORMINOR)
17 dnl For interactive UNIX (a Sun thing)
20 dnl CURRENT, REVISION, AGE
21 dnl - library source changed -> increment REVISION
22 dnl - interfaces added/removed/changed -> increment CURRENT, REVISION = 0
23 dnl - interfaces added -> increment AGE
24 dnl - interfaces removed -> AGE = 0
25 AS_LIBTOOL(GST, 3, 0, 0)
27 AC_CONFIG_SRCDIR([gst/gst.c])
28 AM_CONFIG_HEADER(config.h)
30 dnl Add parameters for aclocal
31 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
32 ACLOCAL="$ACLOCAL -I common/m4 $ACLOCAL_FLAGS"
38 dnl decide on error flags
39 AS_COMPILER_FLAG(-Wall,GST_ERROR="$GST_ERROR -Wall",GST_ERROR="$GST_ERROR")
40 if test "x$GST_CVS" = "xyes"; then
41 AS_COMPILER_FLAG(-Werror,GST_ERROR="$GST_ERROR -Werror",GST_ERROR="$GST_ERROR")
44 dnl We disable static building for development, for time savings
45 dnl *NOTE*: dnl this line before release, so release does static too
51 dnl ##############################
52 dnl # Do automated configuration #
53 dnl ##############################
58 dnl allow for different autotools
59 AS_AUTOTOOLS_ALTERNATE()
61 dnl modify pkg-config path
62 AC_ARG_WITH(pkg-config-path,
63 AC_HELP_STRING([--with-pkg-config-path],
64 [colon-separated list of pkg-config(1) dirs]),
65 [export PKG_CONFIG_PATH=${withval}])
70 dnl Perl is used in building documentation
71 AC_PATH_PROG(PERL_PATH, perl, no)
72 if test x$PERL_PATH = xno; then
73 AC_MSG_ERROR(Could not find perl)
76 dnl we require bison for building of some of the marshal files
77 dnl FIXME: check if AC_PROG_YACC is suitable here
78 AC_PATH_PROG(BISON_PATH, bison, no)
79 if test x$BISON_PATH = xno; then
80 AC_MSG_ERROR(Could not find bison)
83 dnl we require flex for building the parser
84 dnl FIXME: check if AC_PROG_LEX is suitable here
85 AC_PATH_PROG(FLEX_PATH, flex, no)
86 if test x$FLEX_PATH = xno; then
87 AC_MSG_ERROR(Could not find flex)
91 dnl We should really use AC_SYS_LARGEFILE, but the problem is
92 dnl many of the plugins don't include "config.h". To assure
93 dnl binary compatibility, it is necessary that all gstreamer
94 dnl code be compiled with the same sizeof(off_t), so we use
95 dnl the following crude hack.
99 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
101 dnl this is so we can make GST_CFLAGS for external modules available
102 dnl without mixing in internal (uninstalled) CFLAGS
105 dnl disable deprecated functions internally
106 GST_INT_CFLAGS="-DGST_DISABLE_DEPRECATED"
108 AC_MSG_CHECKING(for large file support)
110 #define _LARGEFILE_SOURCE
111 #define _FILE_OFFSET_BITS 64
112 #include <sys/types.h>
113 int main () { return !(sizeof(off_t) == 8); }
117 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
126 dnl check for makecontext and define HAVE_MAKECONTEXT if we have it
128 if test "$ac_cv_check_mcsc" == "yes"; then
129 AC_DEFINE_UNQUOTED(HAVE_MAKECONTEXT, $HAVE_MAKECONTEXT,
130 [defined if we have makecontext ()])
133 dnl Check for a way to display the function name in debug output
136 dnl Check for essential libraries first:
137 dnl ====================================
140 dnl Minimum required version of GLib2
141 dnl required for compilation without warnings
146 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,HAVE_GLIB2=yes,HAVE_GLIB2=no)
147 GLIB_LIBS=$GLIB2_LIBS
148 GLIB_CFLAGS=$GLIB2_CFLAGS
150 AC_SUBST(GLIB_CFLAGS)
152 if test "x$HAVE_GLIB2" = "xno"; then
153 AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
156 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
157 AC_SUBST(GST_PKG_DEPS)
160 dnl Minimum required version of libxml2
162 AC_SUBST(LIBXML2_REQ)
164 dnl check for libxml2
168 dnl FIXME: This test passes on popt 1.6.2, maybe earlier, but popt 1.6.2
169 dnl causes segfaults on gst_init. Write a working test if possible.
170 GST_CHECK_LIBHEADER(POPT, popt, poptStrippedArgv,, popt.h, POPT_LIBS="-lpopt",
171 AC_MSG_ERROR([popt 1.6.3 or newer is required to build gstreamer. You can
172 download the latest version from
173 ftp://ftp.rpm.org/pub/rpm/dist/])
175 AC_MSG_NOTICE(Checking for POPT_TABLEEND)
180 #ifndef POPT_TABLEEND
188 AC_MSG_ERROR([popt 1.6.3 or newer is required to build gstreamer. You can
189 download the latest version from
190 ftp://ftp.rpm.org/pub/rpm/dist/])
193 dnl Check for atomic.h
194 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
195 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
196 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
197 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
198 if test x$HAVE_ATOMIC_H = xyes; then
200 #include "asm/atomic.h"
201 main() {atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
204 if test x$HAVE_ATOMIC_H = xyes; then
205 AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
211 dnl Check for ucontext.h
212 AC_CHECK_HEADER(ucontext.h, AC_DEFINE(HAVE_UCONTEXT_H, 1, [defined if we have ucontext.h]))
214 dnl ######################################################################
215 dnl # Check command line parameters, and set shell variables accordingly #
216 dnl ######################################################################
218 dnl FIXME: simplify all this down using a few m4 macros
220 AC_ARG_ENABLE(libmmx,
221 AC_HELP_STRING([--enable-libmmx],[use libmmx, if available]),
222 [case "${enableval}" in
223 yes) USE_LIBMMX=$HAVE_LIBMMX ;;
225 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
227 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
229 AC_ARG_ENABLE(atomic,
230 AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
231 [case "${enableval}" in
232 yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
233 noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
234 no) USE_ATOMIC_H=no;;
235 *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
237 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
239 AC_ARG_ENABLE(fast-stack-trash,
240 AC_HELP_STRING([--enable-fast-stack-trash],[use fast memory allocator (i586 or above)]),
241 [case "${enableval}" in
242 yes) USE_FAST_STACK_TRASH=yes;;
243 noset) USE_FAST_STACK_TRASH=no;;
244 no) USE_FAST_STACK_TRASH=no;;
245 *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
247 [USE_FAST_STACK_TRASH=yes]) dnl Default value
249 AC_ARG_ENABLE(plugin-builddir,
250 AC_HELP_STRING([--enable-plugin-builddir],[allow tests/demos to use non-installed plugins]),
251 [case "${enableval}" in
252 yes) PLUGINS_USE_BUILDDIR=yes ;;
253 no) PLUGINS_USE_BUILDDIR=no ;;
254 *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
256 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
258 AC_ARG_ENABLE(profiling,
259 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
260 [case "${enableval}" in
261 yes) USE_PROFILING=yes ;;
262 no) UES_PROFILING=no ;;
263 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
265 [USE_PROFILING=no]) dnl Default value
267 dnl use a cache dir for storing element registry info.
268 dnl default to building registry in the source tree if we are enabling plugin build dir
269 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
272 dnl ${localstatedir} points to PREFIX/var
273 GST_CACHE_DIR=${localstatedir}/cache/gstreamer-$GST_MAJORMINOR
275 AC_ARG_WITH(cachedir,
276 AC_HELP_STRING([--with-cachedir],[specify path to use for plugin and command completion registries]),
277 [case "${withval}" in
278 yes) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
279 no) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
280 *) GST_CACHE_DIR="${withval}" ;;
282 [:]) dnl Default value
284 AS_AC_EXPAND(GST_CACHE_DIR, $GST_CACHE_DIR)
285 AC_MSG_NOTICE(Using $GST_CACHE_DIR as registry cache dir)
288 dnl building of tests
290 AC_HELP_STRING([--disable-tests],[disable building test apps]),
291 [case "${enableval}" in
292 yes) BUILD_TESTS=yes ;;
293 no) BUILD_TESTS=no ;;
294 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
296 [BUILD_TESTS=yes]) dnl Default value
297 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
299 dnl tests known to fail
300 AC_ARG_ENABLE(failing-tests,
301 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
302 [case "${enableval}" in
303 yes) BUILD_FAILING_TESTS=yes ;;
304 no) BUILD_FAILING_TESTS=no ;;
305 *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
307 [BUILD_FAILING_TESTS=no]) dnl Default value
308 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
309 if test x$BUILD_FAILING_TESTS = xyes; then
310 AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
312 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.])
315 AC_ARG_ENABLE(examples,
316 AC_HELP_STRING([--disable-examples],[disable building examples]),
317 [case "${enableval}" in
318 yes) BUILD_EXAMPLES=yes ;;
319 no) BUILD_EXAMPLES=no ;;
320 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
322 [BUILD_EXAMPLES=yes]) dnl Default value
323 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
325 dnl Next, check for the optional components:
326 dnl ========================================
330 AC_HELP_STRING([--disable-debug],[disable addition of -g debugging info]),
331 [case "${enableval}" in
332 yes) USE_DEBUG=yes ;;
334 *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
336 [USE_DEBUG=yes]) dnl Default value
337 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_GST_DEBUG, true)
338 GST_SUBSYSTEM_DISABLE(GST_DEBUG,[debugging subsystem])
340 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
341 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
342 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
343 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
344 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
345 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
346 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
347 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
348 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
349 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
350 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_ALLOC_TRACE, true)
351 GST_SUBSYSTEM_DISABLE(ALLOC_TRACE,[allocation tracing])
353 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
354 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
355 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_ENUMTYPES, true)
356 GST_SUBSYSTEM_DISABLE(ENUMTYPES,[enum types])
357 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_INDEX, true)
358 GST_SUBSYSTEM_DISABLE(INDEX,[index])
359 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PLUGIN, true)
360 GST_SUBSYSTEM_DISABLE(PLUGIN,[plugin])
361 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_URI, true)
362 GST_SUBSYSTEM_DISABLE(URI,[uri handlers])
364 dnl ################################################
365 dnl # Set defines according to variables set above #
366 dnl ################################################
369 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
370 dnl HAVE_ and it is likely to be easier to stick with the old name
371 if test "x$USE_LIBMMX" = xyes; then
372 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
375 if test "x$USE_ATOMIC_H" = xyes; then
376 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
379 if test "x$USE_FAST_STACK_TRASH" = xyes; then
380 AC_DEFINE(USE_FAST_STACK_TRASH, 1, [Define if we should use i586 optimized stack functions])
383 dnl test if we have pthread_attr_setstack; if not use the older calls
384 AC_CHECK_LIB(pthread, pthread_attr_setstack,
385 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1,
386 [Defined if libpthread has pthread_attr_setstack ()]))
388 dnl test if we have posix_memalign; FreeBSD doesn't
389 AC_CHECK_FUNC(posix_memalign,
390 AC_DEFINE(HAVE_POSIX_MEMALIGN, 1,
391 [Defined if we have posix_memalign ()]))
393 dnl test for sigaction()
394 AC_CHECK_FUNC(sigaction,
395 AC_DEFINE(HAVE_SIGACTION, 1,
396 [Defined if we have sigaction ()]))
398 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
399 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
402 if test "x$USE_DEBUG" = xyes; then
403 GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
406 if test "x$USE_PROFILING" = xyes; then
407 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
408 FOMIT_FRAME_POINTER=""
410 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
414 dnl AC_SUBST(FOMIT_FRAME_POINTER)
417 dnl #############################
418 dnl # Set automake conditionals #
419 dnl #############################
421 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
422 dnl HAVE_ and it is likely to be easier to stick with the old name
423 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
425 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
426 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
428 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
431 dnl ############################
432 dnl # Set up some more defines #
433 dnl ############################
435 dnl Set location of registry dir.
436 AC_DEFINE_UNQUOTED(GST_CACHE_DIR, "$GST_CACHE_DIR", [Define the registry directory])
437 AC_SUBST(GST_CACHE_DIR)
439 dnl Set location of plugin directory
440 if test "x${prefix}" = "xNONE"; then
441 PLUGINS_DIR=${ac_default_prefix}/lib/gstreamer-$GST_MAJORMINOR
443 PLUGINS_DIR=${prefix}/lib/gstreamer-$GST_MAJORMINOR
445 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
446 AC_SUBST(PLUGINS_DIR)
448 dnl Set location of uninstalled plugin directory
449 PLUGINS_BUILDDIR=`pwd`
450 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
451 AC_SUBST(PLUGINS_BUILDDIR)
453 dnl since glib and xml are package deps, there's no need to include their cflags
454 dnl in the pkg-config file
457 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
458 GST_PKG_LIBS=$GST_EXT_LIBS
459 AC_SUBST(GST_PKG_CFLAGS)
460 AC_SUBST(GST_PKG_LIBS)
462 dnl finalize _CFLAGS and _LIBS
463 dnl add GLIB and XML if necessary to EXT_*
464 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
465 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
467 dnl Private vars for libgst only
468 LIBGST_LIBS="$GST_LIBS"
469 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
470 AC_SUBST(LIBGST_LIBS)
471 AC_SUBST(LIBGST_CFLAGS)
473 dnl Vars for everyone else
474 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_MAJORMINOR.la"
475 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
477 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
478 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
480 GST_PLUGIN_LDFLAGS="-module -avoid-version"
481 AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
483 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
485 dnl ##################################################
486 dnl # deps for examples from manual #
487 dnl ##################################################
489 PKG_CHECK_MODULES(LIBGNOMEUI, libgnomeui-2.0,
490 HAVE_LIBGNOMEUI="yes", HAVE_LIBGNOMEUI="no")
491 AC_SUBST(LIBGNOMEUI_CFLAGS)
492 AC_SUBST(LIBGNOMEUI_LIBS)
493 AM_CONDITIONAL(HAVE_LIBGNOMEUI, test "x$HAVE_LIBGNOMEUI" = "xyes")
495 dnl ##################################################
496 dnl # Prepare informative messages to display at end #
497 dnl ##################################################
501 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
502 infomessages="$infomessages
503 *** Warning: You have configured using the --enable-plugin-builddir option.
505 This option is for development purposes only: binaries built with
506 it should be used with code in the build tree only. To build an
507 installable version, use ./configure without the --enable-plugin-builddir
508 option. Note that the autogen.sh script supplies the plugin builddir
509 option automatically -- run ./autogen.sh -- --disable-plugin-builddir to make
510 an installable build.
515 dnl #########################
516 dnl # Make the output files #
517 dnl #########################
519 dnl libs/ext/Makefile
520 dnl nothing there yet !
527 gst/autoplug/Makefile
528 gst/indexers/Makefile
529 gst/elements/Makefile
531 gst/schedulers/Makefile
533 gst/registries/Makefile
536 libs/gst/bytestream/Makefile
537 libs/gst/getbits/Makefile
538 libs/gst/putbits/Makefile
539 libs/gst/control/Makefile
542 tests/bufspeed/Makefile
543 tests/memchunk/Makefile
544 tests/muxing/Makefile
545 tests/seeking/Makefile
547 tests/threadstate/Makefile
549 testsuite/bytestream/Makefile
550 testsuite/caps/Makefile
551 testsuite/cleanup/Makefile
552 testsuite/clock/Makefile
553 testsuite/debug/Makefile
554 testsuite/dynparams/Makefile
555 testsuite/elements/Makefile
556 testsuite/indexers/Makefile
557 testsuite/parse/Makefile
558 testsuite/plugin/Makefile
559 testsuite/refcounting/Makefile
560 testsuite/threads/Makefile
562 examples/autoplug/Makefile
563 examples/cutter/Makefile
564 examples/helloworld/Makefile
565 examples/helloworld2/Makefile
566 examples/launch/Makefile
567 examples/manual/Makefile
568 examples/mixer/Makefile
569 examples/pingpong/Makefile
570 examples/plugins/Makefile
571 examples/queue/Makefile
572 examples/queue2/Makefile
573 examples/queue3/Makefile
574 examples/queue4/Makefile
575 examples/thread/Makefile
576 examples/typefind/Makefile
577 examples/xml/Makefile
585 docs/plugins/Makefile
586 docs/plugins/gstreamer-plugins.types
590 pkgconfig/gstreamer.pc
591 pkgconfig/gstreamer-uninstalled.pc
592 pkgconfig/gstreamer-control.pc
593 pkgconfig/gstreamer-control-uninstalled.pc
595 echo "$infomessages", infomessages="$infomessages"