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
260 AC_ARG_ENABLE(profiling,
261 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
262 [case "${enableval}" in
263 yes) USE_PROFILING=yes ;;
264 no) UES_PROFILING=no ;;
265 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
267 [USE_PROFILING=no]) dnl Default value
269 dnl use a cache dir for storing element registry info.
270 dnl default to building registry in the source tree if we are enabling plugin build dir
271 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
274 dnl ${localstatedir} points to PREFIX/var
275 GST_CACHE_DIR=${localstatedir}/cache/gstreamer-$GST_MAJORMINOR
277 AC_ARG_WITH(cachedir,
278 AC_HELP_STRING([--with-cachedir],[specify path to use for plugin and command completion registries]),
279 [case "${withval}" in
280 yes) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
281 no) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
282 *) GST_CACHE_DIR="${withval}" ;;
284 [:]) dnl Default value
286 AS_AC_EXPAND(GST_CACHE_DIR, $GST_CACHE_DIR)
287 AC_MSG_NOTICE(Using $GST_CACHE_DIR as registry cache dir)
290 dnl building of tests
292 AC_HELP_STRING([--disable-tests],[disable building test apps]),
293 [case "${enableval}" in
294 yes) BUILD_TESTS=yes ;;
295 no) BUILD_TESTS=no ;;
296 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
298 [BUILD_TESTS=yes]) dnl Default value
299 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
301 dnl tests known to fail
302 AC_ARG_ENABLE(failing-tests,
303 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
304 [case "${enableval}" in
305 yes) BUILD_FAILING_TESTS=yes ;;
306 no) BUILD_FAILING_TESTS=no ;;
307 *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
309 [BUILD_FAILING_TESTS=no]) dnl Default value
310 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
311 if test x$BUILD_FAILING_TESTS = xyes; then
312 AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
314 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.])
317 AC_ARG_ENABLE(examples,
318 AC_HELP_STRING([--disable-examples],[disable building examples]),
319 [case "${enableval}" in
320 yes) BUILD_EXAMPLES=yes ;;
321 no) BUILD_EXAMPLES=no ;;
322 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
324 [BUILD_EXAMPLES=yes]) dnl Default value
325 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
327 dnl Next, check for the optional components:
328 dnl ========================================
330 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
331 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
332 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
333 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
334 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
335 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
336 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
337 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
338 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
339 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
340 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_ALLOC_TRACE, true)
341 GST_SUBSYSTEM_DISABLE(ALLOC_TRACE,[allocation tracing])
343 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
344 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
345 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_ENUMTYPES, true)
346 GST_SUBSYSTEM_DISABLE(ENUMTYPES,[enum types])
347 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_INDEX, true)
348 GST_SUBSYSTEM_DISABLE(INDEX,[index])
349 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PLUGIN, true)
350 GST_SUBSYSTEM_DISABLE(PLUGIN,[plugin])
351 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_URI, true)
352 GST_SUBSYSTEM_DISABLE(URI,[uri handlers])
354 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
356 dnl ################################################
357 dnl # Set defines according to variables set above #
358 dnl ################################################
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 if test "x$USE_LIBMMX" = xyes; then
364 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
367 if test "x$USE_ATOMIC_H" = xyes; then
368 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
371 if test "x$USE_FAST_STACK_TRASH" = xyes; then
372 AC_DEFINE(USE_FAST_STACK_TRASH, 1, [Define if we should use i586 optimized stack functions])
375 dnl test if we have pthread_attr_setstack; if not use the older calls
376 AC_CHECK_LIB(pthread, pthread_attr_setstack,
377 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1,
378 [Defined if libpthread has pthread_attr_setstack ()]))
380 dnl test if we have posix_memalign; FreeBSD doesn't
381 AC_CHECK_FUNC(posix_memalign,
382 AC_DEFINE(HAVE_POSIX_MEMALIGN, 1,
383 [Defined if we have posix_memalign ()]))
385 dnl test for sigaction()
386 AC_CHECK_FUNC(sigaction,
387 AC_DEFINE(HAVE_SIGACTION, 1,
388 [Defined if we have sigaction ()]))
390 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
391 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
394 if test "x$USE_DEBUG" = xyes; then
395 GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
398 if test "x$USE_PROFILING" = xyes; then
399 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
400 FOMIT_FRAME_POINTER=""
402 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
406 dnl AC_SUBST(FOMIT_FRAME_POINTER)
409 dnl #############################
410 dnl # Set automake conditionals #
411 dnl #############################
413 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
414 dnl HAVE_ and it is likely to be easier to stick with the old name
415 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
417 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
418 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
420 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
423 dnl ############################
424 dnl # Set up some more defines #
425 dnl ############################
427 dnl Set location of registry dir.
428 AC_DEFINE_UNQUOTED(GST_CACHE_DIR, "$GST_CACHE_DIR", [Define the registry directory])
429 AC_SUBST(GST_CACHE_DIR)
431 dnl Set location of plugin directory
432 if test "x${prefix}" = "xNONE"; then
433 PLUGINS_DIR=${ac_default_prefix}/lib/gstreamer-$GST_MAJORMINOR
435 PLUGINS_DIR=${prefix}/lib/gstreamer-$GST_MAJORMINOR
437 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
438 AC_SUBST(PLUGINS_DIR)
440 dnl Set location of uninstalled plugin directory
441 PLUGINS_BUILDDIR=`pwd`
442 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
443 AC_SUBST(PLUGINS_BUILDDIR)
445 dnl since glib and xml are package deps, there's no need to include their cflags
446 dnl in the pkg-config file
449 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
450 GST_PKG_LIBS=$GST_EXT_LIBS
451 AC_SUBST(GST_PKG_CFLAGS)
452 AC_SUBST(GST_PKG_LIBS)
454 dnl finalize _CFLAGS and _LIBS
455 dnl add GLIB and XML if necessary to EXT_*
456 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
457 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
459 dnl Private vars for libgst only
460 LIBGST_LIBS="$GST_LIBS"
461 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
462 AC_SUBST(LIBGST_LIBS)
463 AC_SUBST(LIBGST_CFLAGS)
465 dnl Vars for everyone else
466 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_MAJORMINOR.la"
467 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
469 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
470 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
472 GST_PLUGIN_LDFLAGS="-module -avoid-version"
473 AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
475 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
477 dnl ##################################################
478 dnl # deps for examples from manual #
479 dnl ##################################################
481 PKG_CHECK_MODULES(LIBGNOMEUI, libgnomeui-2.0,
482 HAVE_LIBGNOMEUI="yes", HAVE_LIBGNOMEUI="no")
483 AC_SUBST(LIBGNOMEUI_CFLAGS)
484 AC_SUBST(LIBGNOMEUI_LIBS)
485 AM_CONDITIONAL(HAVE_LIBGNOMEUI, test "x$HAVE_LIBGNOMEUI" = "xyes")
487 dnl ##################################################
488 dnl # Prepare informative messages to display at end #
489 dnl ##################################################
493 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
494 infomessages="$infomessages
495 *** Warning: You have configured using the --enable-plugin-builddir option.
497 This option is for development purposes only: binaries built with
498 it should be used with code in the build tree only. To build an
499 installable version, use ./configure without the --enable-plugin-builddir
500 option. Note that the autogen.sh script supplies the plugin builddir
501 option automatically -- run ./autogen.sh -- --disable-plugin-builddir to make
502 an installable build.
507 dnl #########################
508 dnl # Make the output files #
509 dnl #########################
511 dnl libs/ext/Makefile
512 dnl nothing there yet !
518 gst/autoplug/Makefile
519 gst/indexers/Makefile
520 gst/elements/Makefile
522 gst/schedulers/Makefile
524 gst/registries/Makefile
527 libs/gst/bytestream/Makefile
528 libs/gst/getbits/Makefile
529 libs/gst/putbits/Makefile
530 libs/gst/control/Makefile
533 tests/bufspeed/Makefile
534 tests/memchunk/Makefile
535 tests/muxing/Makefile
536 tests/seeking/Makefile
538 tests/threadstate/Makefile
540 testsuite/bytestream/Makefile
541 testsuite/caps/Makefile
542 testsuite/cleanup/Makefile
543 testsuite/clock/Makefile
544 testsuite/dynparams/Makefile
545 testsuite/elements/Makefile
546 testsuite/indexers/Makefile
547 testsuite/parse/Makefile
548 testsuite/plugin/Makefile
549 testsuite/refcounting/Makefile
550 testsuite/threads/Makefile
552 examples/autoplug/Makefile
553 examples/cutter/Makefile
554 examples/helloworld/Makefile
555 examples/helloworld2/Makefile
556 examples/launch/Makefile
557 examples/manual/Makefile
558 examples/mixer/Makefile
559 examples/pingpong/Makefile
560 examples/plugins/Makefile
561 examples/queue/Makefile
562 examples/queue2/Makefile
563 examples/queue3/Makefile
564 examples/queue4/Makefile
565 examples/thread/Makefile
566 examples/typefind/Makefile
567 examples/xml/Makefile
572 docs/gst/gstreamer.types
576 docs/plugins/Makefile
577 docs/plugins/gstreamer-plugins.types
581 pkgconfig/gstreamer.pc
582 pkgconfig/gstreamer-uninstalled.pc
583 pkgconfig/gstreamer-control.pc
584 pkgconfig/gstreamer-control-uninstalled.pc
586 echo "$infomessages", infomessages="$infomessages"