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
40 if test "x$COMPILER" = "xforte"; then
43 if test "x$GST_CVS"="xyes"; then
44 GST_ERROR="-Wall -Werror"
50 dnl We disable static building for development, for time savings
51 dnl *NOTE*: dnl this line before release, so release does static too
57 dnl ##############################
58 dnl # Do automated configuration #
59 dnl ##############################
64 dnl allow for different autotools
65 AS_AUTOTOOLS_ALTERNATE()
67 dnl modify pkg-config path
68 AC_ARG_WITH(pkg-config-path,
69 AC_HELP_STRING([--with-pkg-config-path],
70 [colon-separated list of pkg-config(1) dirs]),
71 [export PKG_CONFIG_PATH=${withval}])
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(plugin-builddir,
240 AC_HELP_STRING([--enable-plugin-builddir],[allow tests/demos to use non-installed plugins]),
241 [case "${enableval}" in
242 yes) PLUGINS_USE_BUILDDIR=yes ;;
243 no) PLUGINS_USE_BUILDDIR=no ;;
244 *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
246 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
250 AC_ARG_ENABLE(profiling,
251 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
252 [case "${enableval}" in
253 yes) USE_PROFILING=yes ;;
254 no) UES_PROFILING=no ;;
255 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
257 [USE_PROFILING=no]) dnl Default value
259 dnl use a cache dir for storing element registry info.
260 dnl default to building registry in the source tree if we are enabling plugin build dir
261 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
264 dnl ${localstatedir} points to PREFIX/var
265 GST_CACHE_DIR=${localstatedir}/cache/gstreamer-$GST_MAJORMINOR
267 AC_ARG_WITH(cachedir,
268 AC_HELP_STRING([--with-cachedir],[specify path to use for plugin and command completion registries]),
269 [case "${withval}" in
270 yes) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
271 no) AC_MSG_ERROR(bad value ${withval} for --with-cachedir) ;;
272 *) GST_CACHE_DIR="${withval}" ;;
274 [:]) dnl Default value
276 AS_AC_EXPAND(GST_CACHE_DIR, $GST_CACHE_DIR)
277 AC_MSG_NOTICE(Using $GST_CACHE_DIR as registry cache dir)
280 dnl building of tests
282 AC_HELP_STRING([--disable-tests],[disable building test apps]),
283 [case "${enableval}" in
284 yes) BUILD_TESTS=yes ;;
285 no) BUILD_TESTS=no ;;
286 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
288 [BUILD_TESTS=yes]) dnl Default value
289 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
291 dnl tests known to fail
292 AC_ARG_ENABLE(failing-tests,
293 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
294 [case "${enableval}" in
295 yes) BUILD_FAILING_TESTS=yes ;;
296 no) BUILD_FAILING_TESTS=no ;;
297 *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
299 [BUILD_FAILING_TESTS=no]) dnl Default value
300 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
301 if test x$BUILD_FAILING_TESTS = xyes; then
302 AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
304 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.])
307 AC_ARG_ENABLE(examples,
308 AC_HELP_STRING([--disable-examples],[disable building examples]),
309 [case "${enableval}" in
310 yes) BUILD_EXAMPLES=yes ;;
311 no) BUILD_EXAMPLES=no ;;
312 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
314 [BUILD_EXAMPLES=yes]) dnl Default value
315 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
317 dnl Next, check for the optional components:
318 dnl ========================================
320 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
321 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
322 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
323 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
324 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
325 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
326 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
327 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
328 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
329 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
330 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
331 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
332 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_ENUMTYPES, true)
333 GST_SUBSYSTEM_DISABLE(ENUMTYPES,[enum types])
334 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_INDEX, true)
335 GST_SUBSYSTEM_DISABLE(INDEX,[index])
336 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PLUGIN, true)
337 GST_SUBSYSTEM_DISABLE(PLUGIN,[plugin])
338 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_URI, true)
339 GST_SUBSYSTEM_DISABLE(URI,[uri handlers])
341 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
343 dnl ################################################
344 dnl # Set defines according to variables set above #
345 dnl ################################################
348 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
349 dnl HAVE_ and it is likely to be easier to stick with the old name
350 if test "x$USE_LIBMMX" = xyes; then
351 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
354 if test "x$USE_ATOMIC_H" = xyes; then
355 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
358 dnl test if we have pthread_attr_setstack; if not use the older calls
359 AC_CHECK_LIB(pthread, pthread_attr_setstack,
360 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1,
361 [Defined if libpthread has pthread_attr_setstack ()]))
363 dnl test if we have posix_memalign; FreeBSD doesn't
364 AC_CHECK_FUNC(posix_memalign,
365 AC_DEFINE(HAVE_POSIX_MEMALIGN, 1,
366 [Defined if we have posix_memalign ()]))
368 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
369 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
372 if test "x$USE_DEBUG" = xyes; then
373 GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
376 if test "x$USE_PROFILING" = xyes; then
377 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
378 FOMIT_FRAME_POINTER=""
380 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
384 dnl AC_SUBST(FOMIT_FRAME_POINTER)
387 dnl #############################
388 dnl # Set automake conditionals #
389 dnl #############################
391 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
392 dnl HAVE_ and it is likely to be easier to stick with the old name
393 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
395 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
396 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
398 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
401 dnl ############################
402 dnl # Set up some more defines #
403 dnl ############################
405 dnl Set location of registry dir.
406 AC_DEFINE_UNQUOTED(GST_CACHE_DIR, "$GST_CACHE_DIR", [Define the registry directory])
407 AC_SUBST(GST_CACHE_DIR)
409 dnl Set location of plugin directory
410 if test "x${prefix}" = "xNONE"; then
411 PLUGINS_DIR=${ac_default_prefix}/lib/gstreamer-$GST_MAJORMINOR
413 PLUGINS_DIR=${prefix}/lib/gstreamer-$GST_MAJORMINOR
415 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
416 AC_SUBST(PLUGINS_DIR)
418 dnl Set location of uninstalled plugin directory
419 PLUGINS_BUILDDIR=`pwd`
420 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
421 AC_SUBST(PLUGINS_BUILDDIR)
423 dnl since glib and xml are package deps, there's no need to include their cflags
424 dnl in the pkg-config file
427 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
428 GST_PKG_LIBS=$GST_EXT_LIBS
429 AC_SUBST(GST_PKG_CFLAGS)
430 AC_SUBST(GST_PKG_LIBS)
432 dnl finalize _CFLAGS and _LIBS
433 dnl add GLIB and XML if necessary to EXT_*
434 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
435 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
437 dnl Private vars for libgst only
438 LIBGST_LIBS="$GST_LIBS"
439 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
440 AC_SUBST(LIBGST_LIBS)
441 AC_SUBST(LIBGST_CFLAGS)
443 dnl Vars for everyone else
444 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer-$GST_MAJORMINOR.la"
445 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
447 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
448 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
450 GST_PLUGIN_LDFLAGS="-module -avoid-version"
451 AC_SUBST(GST_PLUGIN_LDFLAGS, "$GST_PLUGIN_LDFLAGS")
453 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
455 dnl ##################################################
456 dnl # deps for examples from manual #
457 dnl ##################################################
459 PKG_CHECK_MODULES(LIBGNOMEUI, libgnomeui-2.0,
460 HAVE_LIBGNOMEUI="yes", HAVE_LIBGNOMEUI="no")
461 AC_SUBST(LIBGNOMEUI_CFLAGS)
462 AC_SUBST(LIBGNOMEUI_LIBS)
463 AM_CONDITIONAL(HAVE_LIBGNOMEUI, test "x$HAVE_LIBGNOMEUI" = "xyes")
465 dnl ##################################################
466 dnl # Prepare informative messages to display at end #
467 dnl ##################################################
471 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
472 infomessages="$infomessages
473 *** Warning: You have configured using the --enable-plugin-builddir option.
475 This option is for development purposes only: binaries built with
476 it should be used with code in the build tree only. To build an
477 installable version, use ./configure without the --enable-plugin-builddir
478 option. Note that the autogen.sh script supplies the plugin builddir
479 option automatically -- run ./autogen.sh -- --disable-plugin-builddir to make
480 an installable build.
485 dnl #########################
486 dnl # Make the output files #
487 dnl #########################
489 dnl libs/ext/Makefile
490 dnl nothing there yet !
496 gst/autoplug/Makefile
497 gst/indexers/Makefile
498 gst/elements/Makefile
500 gst/schedulers/Makefile
502 gst/registries/Makefile
505 libs/gst/bytestream/Makefile
506 libs/gst/getbits/Makefile
507 libs/gst/putbits/Makefile
508 libs/gst/control/Makefile
511 tests/bufspeed/Makefile
512 tests/memchunk/Makefile
513 tests/muxing/Makefile
514 tests/seeking/Makefile
516 tests/threadstate/Makefile
518 testsuite/bytestream/Makefile
519 testsuite/caps/Makefile
520 testsuite/cleanup/Makefile
521 testsuite/clock/Makefile
522 testsuite/dynparams/Makefile
523 testsuite/elements/Makefile
524 testsuite/indexers/Makefile
525 testsuite/parse/Makefile
526 testsuite/plugin/Makefile
527 testsuite/refcounting/Makefile
528 testsuite/threads/Makefile
530 examples/autoplug/Makefile
531 examples/cutter/Makefile
532 examples/helloworld/Makefile
533 examples/helloworld2/Makefile
534 examples/launch/Makefile
535 examples/manual/Makefile
536 examples/mixer/Makefile
537 examples/pingpong/Makefile
538 examples/plugins/Makefile
539 examples/queue/Makefile
540 examples/queue2/Makefile
541 examples/queue3/Makefile
542 examples/queue4/Makefile
543 examples/thread/Makefile
544 examples/typefind/Makefile
545 examples/xml/Makefile
548 docs/devhelp/Makefile
551 docs/gst/gstreamer.types
555 docs/plugins/Makefile
556 docs/plugins/gstreamer-plugins.types
560 pkgconfig/gstreamer.pc
561 pkgconfig/gstreamer-uninstalled.pc
562 pkgconfig/gstreamer-control.pc
563 pkgconfig/gstreamer-control-uninstalled.pc
565 echo "$infomessages", infomessages="$infomessages"