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, 4, 0, 1, GST_ERROR="-Wall", GST_ERROR="-Wall -Werror")
7 dnl AM_MAINTAINER_MODE only provides the option to configure to enable it
9 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
10 AS_LIBTOOL(GST, 0, 0, 0, yes)
12 AC_CONFIG_SRCDIR([gst/gst.c])
13 AM_CONFIG_HEADER(config.h)
15 dnl Add parameters for aclocal
16 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
17 ACLOCAL="$ACLOCAL -I common/m4 $ACLOCAL_FLAGS"
27 dnl We disable static building for development, for time savings
28 dnl *NOTE*: dnl this line before release, so release does static too
34 dnl ##############################
35 dnl # Do automated configuration #
36 dnl ##############################
41 dnl allow for different autotools
42 AS_AUTOTOOLS_ALTERNATE()
44 dnl modify pkg-config path
45 AC_ARG_WITH(pkg-config-path,
46 AC_HELP_STRING([--with-pkg-config-path],
47 [colon-separated list of pkg-config(1) dirs]),
48 [export PKG_CONFIG_PATH=${withval}])
51 AC_PATH_PROG(NASM_PATH, nasm, no)
53 if test x$NASM_PATH = xno; then
54 AC_MSG_WARN(Couldn't find nasm)
56 else AC_DEFINE(HAVE_NASM, 1, [Define if NASM, the netwide assembler, is available])
63 dnl we require bison for building of some of the marshal files
64 AC_PATH_PROG(BISON_PATH, bison, no)
65 if test x$BISON_PATH = xno; then
66 AC_MSG_ERROR(Could not find bison)
70 dnl We should really use AC_SYS_LARGEFILE, but the problem is
71 dnl many of the plugins don't include "config.h". To assure
72 dnl binary compatibility, it is necessary that all gstreamer
73 dnl code be compiled with the same sizeof(off_t), so we use
74 dnl the following crude hack.
78 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
80 dnl this is so we can make GST_CFLAGS for external modules available
81 dnl without mixing in internal (uninstalled) CFLAGS
84 AC_MSG_CHECKING(for large file support)
86 #define _LARGEFILE_SOURCE
87 #define _FILE_OFFSET_BITS 64
88 #include <sys/types.h>
89 int main () { return !(sizeof(off_t) == 8); }
93 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
102 dnl Check for essential libraries first:
103 dnl ====================================
106 dnl Minimum required version of GLib2
107 dnl required for compilation without warnings
112 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,
113 HAVE_GLIB2=yes,HAVE_GLIB2=no)
114 GLIB_LIBS=$GLIB2_LIBS
115 GLIB_CFLAGS=$GLIB2_CFLAGS
117 AC_SUBST(GLIB_CFLAGS)
119 if test "x$HAVE_GLIB2" = "xno"; then
120 AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
123 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
124 AC_SUBST(GST_PKG_DEPS)
127 dnl Minimum required version of libxml2
129 AC_SUBST(LIBXML2_REQ)
131 dnl check for libxml2
132 LIBXML_PKG=', libxml-2.0'
133 PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_REQ, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
134 if test "x$HAVE_LIBXML2" = "xyes"; then
135 AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 is available])
137 AC_MSG_ERROR([Need libxml2 for glib2 builds -- you should be able to do without it -- this needs fixing])
144 GST_CHECK_LIBHEADER(POPT, popt, poptStrippedArgv,, popt.h, POPT_LIBS="-lpopt",
145 AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
146 download the latest version from
147 ftp://people.redhat.com/sopwith/popt/])
149 AC_MSG_NOTICE(Checking for POPT_TABLEEND)
154 #ifndef POPT_TABLEEND
162 AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
163 download the latest version from
164 ftp://people.redhat.com/sopwith/popt/])
167 dnl Check for atomic.h
168 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
169 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
170 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
171 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
172 if test x$HAVE_ATOMIC_H = xyes; then
174 #include "asm/atomic.h"
175 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
178 if test x$HAVE_ATOMIC_H = xyes; then
179 AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
185 AC_MSG_WARN(Can't check properly for atomic reference counting. Assuming OK.)
189 dnl ######################################################################
190 dnl # Check command line parameters, and set shell variables accordingly #
191 dnl ######################################################################
193 dnl FIXME: simplify all this down using a few m4 macros
195 AC_ARG_ENABLE(libmmx,
196 AC_HELP_STRING([--enable-libmmx],[use libmmx, if available]),
197 [case "${enableval}" in
198 yes) USE_LIBMMX=$HAVE_LIBMMX ;;
200 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
202 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
204 AC_ARG_ENABLE(atomic,
205 AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
206 [case "${enableval}" in
207 yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
208 noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
209 no) USE_ATOMIC_H=no;;
210 *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
212 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
214 AC_ARG_ENABLE(plugin-builddir,
215 AC_HELP_STRING([--enable-plugin-builddir],[allow tests/demos to use non-installed plugins]),
216 [case "${enableval}" in
217 yes) PLUGINS_USE_BUILDDIR=yes ;;
218 no) PLUGINS_USE_BUILDDIR=no ;;
219 *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
221 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
225 AC_ARG_ENABLE(profiling,
226 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
227 [case "${enableval}" in
228 yes) USE_PROFILING=yes ;;
229 no) UES_PROFILING=no ;;
230 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
232 [USE_PROFILING=no]) dnl Default value
234 dnl default to building registry in the source tree if we are enabling plugin build dir
235 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
238 GST_CONFIG_DIR=${sysconfdir}/gstreamer
240 AC_ARG_WITH(configdir,
241 AC_HELP_STRING([--with-configdir],[specify path to use for plugin and command completion registries]),
242 [case "${withval}" in
243 yes) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
244 no) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
245 *) GST_CONFIG_DIR="${withval}" ;;
247 [:]) dnl Default value
249 AS_AC_EXPAND(GST_CONFIG_DIR, $GST_CONFIG_DIR)
250 AC_MSG_NOTICE(Using $GST_CONFIG_DIR as configuration dir)
253 dnl building of tests
255 AC_HELP_STRING([--disable-tests],[disable building test apps]),
256 [case "${enableval}" in
257 yes) BUILD_TESTS=yes ;;
258 no) BUILD_TESTS=no ;;
259 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
261 [BUILD_TESTS=yes]) dnl Default value
262 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
264 dnl tests known to fail
265 AC_ARG_ENABLE(failing-tests,
266 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
267 [case "${enableval}" in
268 yes) BUILD_FAILING_TESTS=yes ;;
269 no) BUILD_FAILING_TESTS=no ;;
270 *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
272 [BUILD_FAILING_TESTS=no]) dnl Default value
273 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
274 if test x$BUILD_FAILING_TESTS = xyes; then
275 AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
277 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.])
280 AC_ARG_ENABLE(examples,
281 AC_HELP_STRING([--disable-examples],[disable building examples]),
282 [case "${enableval}" in
283 yes) BUILD_EXAMPLES=yes ;;
284 no) BUILD_EXAMPLES=no ;;
285 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
287 [BUILD_EXAMPLES=yes]) dnl Default value
288 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
290 dnl Next, check for the optional components:
291 dnl ========================================
293 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
294 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
295 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
296 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
297 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
298 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
299 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
300 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
301 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
302 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
303 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
304 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
306 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
308 dnl ################################################
309 dnl # Set defines according to variables set above #
310 dnl ################################################
313 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
314 dnl HAVE_ and it is likely to be easier to stick with the old name
315 if test "x$USE_LIBMMX" = xyes; then
316 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
319 if test "x$USE_ATOMIC_H" = xyes; then
320 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
323 dnl test if we have pthread_attr_setstack; if not use the older calls
324 AC_CHECK_LIB(pthread, pthread_attr_setstack,
325 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1,
326 [Defined if libpthread has pthread_attr_setstack]))
328 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
329 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
332 if test "x$USE_DEBUG" = xyes; then
333 GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
336 if test "x$USE_PROFILING" = xyes; then
337 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
338 FOMIT_FRAME_POINTER=""
340 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
344 dnl AC_SUBST(FOMIT_FRAME_POINTER)
347 dnl #############################
348 dnl # Set automake conditionals #
349 dnl #############################
351 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
352 dnl HAVE_ and it is likely to be easier to stick with the old name
353 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
355 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
356 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
358 AM_CONDITIONAL(HAVE_NASM, test "x$HAVE_NASM" = "xyes")
359 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
362 dnl ############################
363 dnl # Set up some more defines #
364 dnl ############################
366 dnl Set location of configuration dir.
367 AC_DEFINE_UNQUOTED(GST_CONFIG_DIR, "$GST_CONFIG_DIR", [Define the configuration directory])
368 AC_SUBST(GST_CONFIG_DIR)
370 dnl Set location of plugin directory
371 if test "x${prefix}" = "xNONE"; then
372 PLUGINS_DIR=${ac_default_prefix}/lib/gst
374 PLUGINS_DIR=${prefix}/lib/gst
376 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
377 AC_SUBST(PLUGINS_DIR)
379 dnl Set location of uninstalled plugin directory
380 PLUGINS_BUILDDIR=`pwd`
381 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
382 AC_SUBST(PLUGINS_BUILDDIR)
384 dnl since glib and xml are package deps, there's no need to include their cflags
385 dnl in the pkg-config file
388 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
389 GST_PKG_LIBS=$GST_EXT_LIBS
390 AC_SUBST(GST_PKG_CFLAGS)
391 AC_SUBST(GST_PKG_LIBS)
393 dnl finalize _CFLAGS and _LIBS
394 dnl add GLIB and XML if necessary to EXT_*
395 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
396 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
398 dnl Private vars for libgst only
399 LIBGST_LIBS="$GST_LIBS"
400 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
401 AC_SUBST(LIBGST_LIBS)
402 AC_SUBST(LIBGST_CFLAGS)
404 dnl Vars for everyone else
405 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer.la"
406 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
408 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
409 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
411 GST_PLUGIN_LDFLAGS='-module -avoid-version'
412 AC_SUBST(GST_PLUGIN_LDFLAGS)
414 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
416 dnl ##################################################
417 dnl # Prepare informative messages to display at end #
418 dnl ##################################################
422 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
423 infomessages="$infomessages
424 *** Warning: You have configured using the --enable-plugin-builddir option.
426 This option is for development purposes only: binaries built with
427 it should be used with code in the build tree only. To build an
428 installable version, use ./configure without the --enable-plugin-builddir
429 option. Note that the autogen.sh script supplies the plugin builddir
430 option automatically -- run ./autogen.sh --disable-plugin-buildddir to make
431 an installable build.
436 dnl #########################
437 dnl # Make the output files #
438 dnl #########################
440 dnl libs/ext/Makefile
446 gst/autoplug/Makefile
447 gst/elements/Makefile
449 gst/schedulers/Makefile
451 gst/registries/Makefile
454 libs/gst/bytestream/Makefile
455 libs/gst/getbits/Makefile
456 libs/gst/putbits/Makefile
457 libs/gst/control/Makefile
460 tests/bufspeed/Makefile
461 tests/memchunk/Makefile
462 tests/muxing/Makefile
464 tests/threadstate/Makefile
466 testsuite/bytestream/Makefile
467 testsuite/caps/Makefile
468 testsuite/cleanup/Makefile
469 testsuite/clock/Makefile
470 testsuite/dynparams/Makefile
471 testsuite/elements/Makefile
472 testsuite/plugin/Makefile
473 testsuite/refcounting/Makefile
474 testsuite/threads/Makefile
476 examples/autoplug/Makefile
477 examples/helloworld/Makefile
478 examples/helloworld2/Makefile
479 examples/launch/Makefile
480 examples/queue/Makefile
481 examples/queue2/Makefile
482 examples/queue3/Makefile
483 examples/queue4/Makefile
484 examples/thread/Makefile
485 examples/mixer/Makefile
486 examples/cutter/Makefile
487 examples/launch/Makefile
488 examples/xml/Makefile
489 examples/plugins/Makefile
490 examples/typefind/Makefile
491 examples/mixer/Makefile
495 docs/gst/gstreamer.types
497 docs/plugins/Makefile
498 docs/plugins/gstreamer-plugins.types
502 docs/devhelp/Makefile
505 gstreamer-uninstalled.pc
507 echo "$infomessages", infomessages="$infomessages"