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, 1, 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_FLAGS="-I common/m4 $ACLOCAL_FLAGS"
18 AC_SUBST(ACLOCAL_AMFLAGS, $ACLOCAL_FLAGS)
26 dnl We disable static building for development, for time savings
27 dnl *NOTE*: dnl this line before release, so release does static too
33 dnl ##############################
34 dnl # Do automated configuration #
35 dnl ##############################
40 dnl allow for different autotools
41 AS_AUTOTOOLS_ALTERNATE()
43 dnl modify pkg-config path
44 AC_ARG_WITH(pkg-config-path,
45 AC_HELP_STRING([--with-pkg-config-path],
46 [colon-separated list of pkg-config(1) dirs]),
47 [export PKG_CONFIG_PATH=${withval}])
50 AC_PATH_PROG(NASM_PATH, nasm, no)
52 if test x$NASM_PATH = xno; then
53 AC_MSG_WARN(Couldn't find nasm)
55 else AC_DEFINE(HAVE_NASM, 1, [Define if NASM, the netwide assembler, is available])
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)
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)
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.
85 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
87 dnl this is so we can make GST_CFLAGS for external modules available
88 dnl without mixing in internal (uninstalled) CFLAGS
91 AC_MSG_CHECKING(for large file support)
93 #define _LARGEFILE_SOURCE
94 #define _FILE_OFFSET_BITS 64
95 #include <sys/types.h>
96 int main () { return !(sizeof(off_t) == 8); }
100 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
109 dnl Check for essential libraries first:
110 dnl ====================================
113 dnl Minimum required version of GLib2
114 dnl required for compilation without warnings
119 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,
120 HAVE_GLIB2=yes,HAVE_GLIB2=no)
121 GLIB_LIBS=$GLIB2_LIBS
122 GLIB_CFLAGS=$GLIB2_CFLAGS
124 AC_SUBST(GLIB_CFLAGS)
126 if test "x$HAVE_GLIB2" = "xno"; then
127 AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
130 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
131 AC_SUBST(GST_PKG_DEPS)
134 dnl Minimum required version of libxml2
136 AC_SUBST(LIBXML2_REQ)
138 dnl check for libxml2
142 GST_CHECK_LIBHEADER(POPT, popt, poptStrippedArgv,, popt.h, POPT_LIBS="-lpopt",
143 AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
144 download the latest version from
145 ftp://people.redhat.com/sopwith/popt/])
147 AC_MSG_NOTICE(Checking for POPT_TABLEEND)
152 #ifndef POPT_TABLEEND
160 AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
161 download the latest version from
162 ftp://people.redhat.com/sopwith/popt/])
165 dnl Check for atomic.h
166 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
167 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
168 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
169 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
170 if test x$HAVE_ATOMIC_H = xyes; then
172 #include "asm/atomic.h"
173 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
176 if test x$HAVE_ATOMIC_H = xyes; then
177 AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
183 AC_MSG_WARN(Can't check properly for atomic reference counting. Assuming OK.)
187 dnl ######################################################################
188 dnl # Check command line parameters, and set shell variables accordingly #
189 dnl ######################################################################
191 dnl FIXME: simplify all this down using a few m4 macros
193 AC_ARG_ENABLE(libmmx,
194 AC_HELP_STRING([--enable-libmmx],[use libmmx, if available]),
195 [case "${enableval}" in
196 yes) USE_LIBMMX=$HAVE_LIBMMX ;;
198 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
200 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
202 AC_ARG_ENABLE(atomic,
203 AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
204 [case "${enableval}" in
205 yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
206 noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
207 no) USE_ATOMIC_H=no;;
208 *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
210 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
212 AC_ARG_ENABLE(plugin-builddir,
213 AC_HELP_STRING([--enable-plugin-builddir],[allow tests/demos to use non-installed plugins]),
214 [case "${enableval}" in
215 yes) PLUGINS_USE_BUILDDIR=yes ;;
216 no) PLUGINS_USE_BUILDDIR=no ;;
217 *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
219 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
223 AC_ARG_ENABLE(profiling,
224 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
225 [case "${enableval}" in
226 yes) USE_PROFILING=yes ;;
227 no) UES_PROFILING=no ;;
228 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
230 [USE_PROFILING=no]) dnl Default value
232 dnl default to building registry in the source tree if we are enabling plugin build dir
233 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
236 GST_CONFIG_DIR=${sysconfdir}/gstreamer
238 AC_ARG_WITH(configdir,
239 AC_HELP_STRING([--with-configdir],[specify path to use for plugin and command completion registries]),
240 [case "${withval}" in
241 yes) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
242 no) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
243 *) GST_CONFIG_DIR="${withval}" ;;
245 [:]) dnl Default value
247 AS_AC_EXPAND(GST_CONFIG_DIR, $GST_CONFIG_DIR)
248 AC_MSG_NOTICE(Using $GST_CONFIG_DIR as configuration dir)
251 dnl building of tests
253 AC_HELP_STRING([--disable-tests],[disable building test apps]),
254 [case "${enableval}" in
255 yes) BUILD_TESTS=yes ;;
256 no) BUILD_TESTS=no ;;
257 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
259 [BUILD_TESTS=yes]) dnl Default value
260 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
262 dnl tests known to fail
263 AC_ARG_ENABLE(failing-tests,
264 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
265 [case "${enableval}" in
266 yes) BUILD_FAILING_TESTS=yes ;;
267 no) BUILD_FAILING_TESTS=no ;;
268 *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
270 [BUILD_FAILING_TESTS=no]) dnl Default value
271 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
272 if test x$BUILD_FAILING_TESTS = xyes; then
273 AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
275 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.])
278 AC_ARG_ENABLE(examples,
279 AC_HELP_STRING([--disable-examples],[disable building examples]),
280 [case "${enableval}" in
281 yes) BUILD_EXAMPLES=yes ;;
282 no) BUILD_EXAMPLES=no ;;
283 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
285 [BUILD_EXAMPLES=yes]) dnl Default value
286 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
288 dnl Next, check for the optional components:
289 dnl ========================================
291 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
292 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
293 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
294 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
295 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
296 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
297 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
298 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
299 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
300 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
301 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
302 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
304 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
306 dnl ################################################
307 dnl # Set defines according to variables set above #
308 dnl ################################################
311 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
312 dnl HAVE_ and it is likely to be easier to stick with the old name
313 if test "x$USE_LIBMMX" = xyes; then
314 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
317 if test "x$USE_ATOMIC_H" = xyes; then
318 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
321 dnl test if we have pthread_attr_setstack; if not use the older calls
322 AC_CHECK_LIB(pthread, pthread_attr_setstack,
323 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1,
324 [Defined if libpthread has pthread_attr_setstack ()]))
326 dnl test if we have posix_memalign; FreeBSD doesn't
327 AC_CHECK_FUNC(posix_memalign,
328 AC_DEFINE(HAVE_POSIX_MEMALIGN, 1,
329 [Defined if we have posix_memalign ()]))
331 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
332 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
335 if test "x$USE_DEBUG" = xyes; then
336 GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
339 if test "x$USE_PROFILING" = xyes; then
340 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
341 FOMIT_FRAME_POINTER=""
343 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
347 dnl AC_SUBST(FOMIT_FRAME_POINTER)
350 dnl #############################
351 dnl # Set automake conditionals #
352 dnl #############################
354 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
355 dnl HAVE_ and it is likely to be easier to stick with the old name
356 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
358 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
359 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
361 AM_CONDITIONAL(HAVE_NASM, test "x$HAVE_NASM" = "xyes")
362 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
365 dnl ############################
366 dnl # Set up some more defines #
367 dnl ############################
369 dnl Set location of configuration dir.
370 AC_DEFINE_UNQUOTED(GST_CONFIG_DIR, "$GST_CONFIG_DIR", [Define the configuration directory])
371 AC_SUBST(GST_CONFIG_DIR)
373 dnl Set location of plugin directory
374 if test "x${prefix}" = "xNONE"; then
375 PLUGINS_DIR=${ac_default_prefix}/lib/gst
377 PLUGINS_DIR=${prefix}/lib/gst
379 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
380 AC_SUBST(PLUGINS_DIR)
382 dnl Set location of uninstalled plugin directory
383 PLUGINS_BUILDDIR=`pwd`
384 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
385 AC_SUBST(PLUGINS_BUILDDIR)
387 dnl since glib and xml are package deps, there's no need to include their cflags
388 dnl in the pkg-config file
391 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
392 GST_PKG_LIBS=$GST_EXT_LIBS
393 AC_SUBST(GST_PKG_CFLAGS)
394 AC_SUBST(GST_PKG_LIBS)
396 dnl finalize _CFLAGS and _LIBS
397 dnl add GLIB and XML if necessary to EXT_*
398 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
399 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
401 dnl Private vars for libgst only
402 LIBGST_LIBS="$GST_LIBS"
403 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
404 AC_SUBST(LIBGST_LIBS)
405 AC_SUBST(LIBGST_CFLAGS)
407 dnl Vars for everyone else
408 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer.la"
409 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
411 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
412 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
414 GST_PLUGIN_LDFLAGS='-module -avoid-version'
415 AC_SUBST(GST_PLUGIN_LDFLAGS)
417 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
419 dnl ##################################################
420 dnl # deps for examples from manual #
421 dnl ##################################################
423 PKG_CHECK_MODULES(LIBGNOMEUI, libgnomeui-2.0,
424 HAVE_LIBGNOMEUI="yes", HAVE_LIBGNOMEUI="no")
425 AC_SUBST(LIBGNOMEUI_CFLAGS)
426 AC_SUBST(LIBGNOMEUI_LIBS)
427 AM_CONDITIONAL(HAVE_LIBGNOMEUI, test "x$HAVE_LIBGNOMEUI" = "xyes")
429 dnl ##################################################
430 dnl # Prepare informative messages to display at end #
431 dnl ##################################################
435 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
436 infomessages="$infomessages
437 *** Warning: You have configured using the --enable-plugin-builddir option.
439 This option is for development purposes only: binaries built with
440 it should be used with code in the build tree only. To build an
441 installable version, use ./configure without the --enable-plugin-builddir
442 option. Note that the autogen.sh script supplies the plugin builddir
443 option automatically -- run ./autogen.sh --disable-plugin-buildddir to make
444 an installable build.
449 dnl #########################
450 dnl # Make the output files #
451 dnl #########################
453 dnl libs/ext/Makefile
459 gst/autoplug/Makefile
460 gst/elements/Makefile
462 gst/schedulers/Makefile
464 gst/registries/Makefile
467 libs/gst/bytestream/Makefile
468 libs/gst/getbits/Makefile
469 libs/gst/putbits/Makefile
470 libs/gst/control/Makefile
473 tests/bufspeed/Makefile
474 tests/memchunk/Makefile
475 tests/muxing/Makefile
476 tests/seeking/Makefile
478 tests/threadstate/Makefile
480 testsuite/bytestream/Makefile
481 testsuite/caps/Makefile
482 testsuite/cleanup/Makefile
483 testsuite/clock/Makefile
484 testsuite/dynparams/Makefile
485 testsuite/elements/Makefile
486 testsuite/plugin/Makefile
487 testsuite/refcounting/Makefile
488 testsuite/threads/Makefile
490 examples/autoplug/Makefile
491 examples/cutter/Makefile
492 examples/helloworld/Makefile
493 examples/helloworld2/Makefile
494 examples/launch/Makefile
495 examples/manual/Makefile
496 examples/mixer/Makefile
497 examples/pingpong/Makefile
498 examples/plugins/Makefile
499 examples/queue/Makefile
500 examples/queue2/Makefile
501 examples/queue3/Makefile
502 examples/queue4/Makefile
503 examples/thread/Makefile
504 examples/typefind/Makefile
505 examples/xml/Makefile
509 docs/gst/gstreamer.types
511 docs/plugins/Makefile
512 docs/plugins/gstreamer-plugins.types
516 docs/devhelp/Makefile
517 docs/devhelp/html2xml.py
520 gstreamer-uninstalled.pc
522 echo "$infomessages", infomessages="$infomessages"