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"
25 dnl We disable static building for development, for time savings
26 dnl *NOTE*: dnl this line before release, so release does static too
32 dnl ##############################
33 dnl # Do automated configuration #
34 dnl ##############################
39 dnl allow for different autotools
40 AS_AUTOTOOLS_ALTERNATE()
42 dnl modify pkg-config path
43 AC_ARG_WITH(pkg-config-path,
44 AC_HELP_STRING([--with-pkg-config-path],
45 [colon-separated list of pkg-config(1) dirs]),
46 [export PKG_CONFIG_PATH=${withval}])
49 AC_PATH_PROG(NASM_PATH, nasm, no)
51 if test x$NASM_PATH = xno; then
52 AC_MSG_WARN(Couldn't find nasm)
54 else AC_DEFINE(HAVE_NASM, 1, [Define if NASM, the netwide assembler, is available])
61 dnl we require bison for building of some of the marshal files
62 dnl FIXME: check if AC_PROG_YACC is suitable here
63 AC_PATH_PROG(BISON_PATH, bison, no)
64 if test x$BISON_PATH = xno; then
65 AC_MSG_ERROR(Could not find bison)
68 dnl we require flex for building the parser
69 dnl FIXME: check if AC_PROG_LEX is suitable here
70 AC_PATH_PROG(FLEX_PATH, flex, no)
71 if test x$FLEX_PATH = xno; then
72 AC_MSG_ERROR(Could not find flex)
76 dnl We should really use AC_SYS_LARGEFILE, but the problem is
77 dnl many of the plugins don't include "config.h". To assure
78 dnl binary compatibility, it is necessary that all gstreamer
79 dnl code be compiled with the same sizeof(off_t), so we use
80 dnl the following crude hack.
84 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
86 dnl this is so we can make GST_CFLAGS for external modules available
87 dnl without mixing in internal (uninstalled) CFLAGS
90 AC_MSG_CHECKING(for large file support)
92 #define _LARGEFILE_SOURCE
93 #define _FILE_OFFSET_BITS 64
94 #include <sys/types.h>
95 int main () { return !(sizeof(off_t) == 8); }
99 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
108 dnl Check for essential libraries first:
109 dnl ====================================
112 dnl Minimum required version of GLib2
113 dnl required for compilation without warnings
118 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,
119 HAVE_GLIB2=yes,HAVE_GLIB2=no)
120 GLIB_LIBS=$GLIB2_LIBS
121 GLIB_CFLAGS=$GLIB2_CFLAGS
123 AC_SUBST(GLIB_CFLAGS)
125 if test "x$HAVE_GLIB2" = "xno"; then
126 AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
129 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
130 AC_SUBST(GST_PKG_DEPS)
133 dnl Minimum required version of libxml2
135 AC_SUBST(LIBXML2_REQ)
137 dnl check for libxml2
141 GST_CHECK_LIBHEADER(POPT, popt, poptStrippedArgv,, popt.h, POPT_LIBS="-lpopt",
142 AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
143 download the latest version from
144 ftp://people.redhat.com/sopwith/popt/])
146 AC_MSG_NOTICE(Checking for POPT_TABLEEND)
151 #ifndef POPT_TABLEEND
159 AC_MSG_ERROR([popt 1.6.1 or newer is required to build gstreamer. You can
160 download the latest version from
161 ftp://people.redhat.com/sopwith/popt/])
164 dnl Check for atomic.h
165 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
166 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
167 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
168 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
169 if test x$HAVE_ATOMIC_H = xyes; then
171 #include "asm/atomic.h"
172 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
175 if test x$HAVE_ATOMIC_H = xyes; then
176 AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
182 AC_MSG_WARN(Can't check properly for atomic reference counting. Assuming OK.)
186 dnl ######################################################################
187 dnl # Check command line parameters, and set shell variables accordingly #
188 dnl ######################################################################
190 dnl FIXME: simplify all this down using a few m4 macros
192 AC_ARG_ENABLE(libmmx,
193 AC_HELP_STRING([--enable-libmmx],[use libmmx, if available]),
194 [case "${enableval}" in
195 yes) USE_LIBMMX=$HAVE_LIBMMX ;;
197 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
199 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
201 AC_ARG_ENABLE(atomic,
202 AC_HELP_STRING([--enable-atomic],[use atomic reference counting header]),
203 [case "${enableval}" in
204 yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
205 noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
206 no) USE_ATOMIC_H=no;;
207 *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
209 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
211 AC_ARG_ENABLE(plugin-builddir,
212 AC_HELP_STRING([--enable-plugin-builddir],[allow tests/demos to use non-installed plugins]),
213 [case "${enableval}" in
214 yes) PLUGINS_USE_BUILDDIR=yes ;;
215 no) PLUGINS_USE_BUILDDIR=no ;;
216 *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
218 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
222 AC_ARG_ENABLE(profiling,
223 AC_HELP_STRING([--enable-profiling],[adds -pg to compiler commandline, for profiling]),
224 [case "${enableval}" in
225 yes) USE_PROFILING=yes ;;
226 no) UES_PROFILING=no ;;
227 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
229 [USE_PROFILING=no]) dnl Default value
231 dnl default to building registry in the source tree if we are enabling plugin build dir
232 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
235 GST_CONFIG_DIR=${sysconfdir}/gstreamer
237 AC_ARG_WITH(configdir,
238 AC_HELP_STRING([--with-configdir],[specify path to use for plugin and command completion registries]),
239 [case "${withval}" in
240 yes) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
241 no) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
242 *) GST_CONFIG_DIR="${withval}" ;;
244 [:]) dnl Default value
246 AS_AC_EXPAND(GST_CONFIG_DIR, $GST_CONFIG_DIR)
247 AC_MSG_NOTICE(Using $GST_CONFIG_DIR as configuration dir)
250 dnl building of tests
252 AC_HELP_STRING([--disable-tests],[disable building test apps]),
253 [case "${enableval}" in
254 yes) BUILD_TESTS=yes ;;
255 no) BUILD_TESTS=no ;;
256 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
258 [BUILD_TESTS=yes]) dnl Default value
259 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
261 dnl tests known to fail
262 AC_ARG_ENABLE(failing-tests,
263 AC_HELP_STRING([--disable-failing-tests],[disable building tests known to fail]),
264 [case "${enableval}" in
265 yes) BUILD_FAILING_TESTS=yes ;;
266 no) BUILD_FAILING_TESTS=no ;;
267 *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
269 [BUILD_FAILING_TESTS=no]) dnl Default value
270 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
271 if test x$BUILD_FAILING_TESTS = xyes; then
272 AC_MSG_WARN([building tests known to fail, use --disable-failing-tests to disable])
274 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.])
277 AC_ARG_ENABLE(examples,
278 AC_HELP_STRING([--disable-examples],[disable building examples]),
279 [case "${enableval}" in
280 yes) BUILD_EXAMPLES=yes ;;
281 no) BUILD_EXAMPLES=no ;;
282 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
284 [BUILD_EXAMPLES=yes]) dnl Default value
285 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
287 dnl Next, check for the optional components:
288 dnl ========================================
290 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
291 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
292 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
293 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
294 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
295 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
296 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
297 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
298 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
299 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
300 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
301 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
303 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
305 dnl ################################################
306 dnl # Set defines according to variables set above #
307 dnl ################################################
310 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
311 dnl HAVE_ and it is likely to be easier to stick with the old name
312 if test "x$USE_LIBMMX" = xyes; then
313 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
316 if test "x$USE_ATOMIC_H" = xyes; then
317 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
320 dnl test if we have pthread_attr_setstack; if not use the older calls
321 AC_CHECK_LIB(pthread, pthread_attr_setstack,
322 AC_DEFINE(HAVE_PTHREAD_ATTR_SETSTACK, 1,
323 [Defined if libpthread has pthread_attr_setstack ()]))
325 dnl test if we have posix_memalign; FreeBSD doesn't
326 AC_CHECK_FUNC(posix_memalign,
327 AC_DEFINE(HAVE_POSIX_MEMALIGN, 1,
328 [Defined if we have posix_memalign ()]))
330 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
331 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
334 if test "x$USE_DEBUG" = xyes; then
335 GST_INT_CFLAGS="$GST_INT_CFLAGS -g"
338 if test "x$USE_PROFILING" = xyes; then
339 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
340 FOMIT_FRAME_POINTER=""
342 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
346 dnl AC_SUBST(FOMIT_FRAME_POINTER)
349 dnl #############################
350 dnl # Set automake conditionals #
351 dnl #############################
353 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
354 dnl HAVE_ and it is likely to be easier to stick with the old name
355 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
357 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
358 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
360 AM_CONDITIONAL(HAVE_NASM, test "x$HAVE_NASM" = "xyes")
361 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
364 dnl ############################
365 dnl # Set up some more defines #
366 dnl ############################
368 dnl Set location of configuration dir.
369 AC_DEFINE_UNQUOTED(GST_CONFIG_DIR, "$GST_CONFIG_DIR", [Define the configuration directory])
370 AC_SUBST(GST_CONFIG_DIR)
372 dnl Set location of plugin directory
373 if test "x${prefix}" = "xNONE"; then
374 PLUGINS_DIR=${ac_default_prefix}/lib/gst
376 PLUGINS_DIR=${prefix}/lib/gst
378 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
379 AC_SUBST(PLUGINS_DIR)
381 dnl Set location of uninstalled plugin directory
382 PLUGINS_BUILDDIR=`pwd`
383 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
384 AC_SUBST(PLUGINS_BUILDDIR)
386 dnl since glib and xml are package deps, there's no need to include their cflags
387 dnl in the pkg-config file
390 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
391 GST_PKG_LIBS=$GST_EXT_LIBS
392 AC_SUBST(GST_PKG_CFLAGS)
393 AC_SUBST(GST_PKG_LIBS)
395 dnl finalize _CFLAGS and _LIBS
396 dnl add GLIB and XML if necessary to EXT_*
397 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
398 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
400 dnl Private vars for libgst only
401 LIBGST_LIBS="$GST_LIBS"
402 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
403 AC_SUBST(LIBGST_LIBS)
404 AC_SUBST(LIBGST_CFLAGS)
406 dnl Vars for everyone else
407 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer.la"
408 GST_INT_CFLAGS="$GST_INT_CFLAGS -I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
410 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
411 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
413 GST_PLUGIN_LDFLAGS='-module -avoid-version'
414 AC_SUBST(GST_PLUGIN_LDFLAGS)
416 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
418 dnl ##################################################
419 dnl # Prepare informative messages to display at end #
420 dnl ##################################################
424 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
425 infomessages="$infomessages
426 *** Warning: You have configured using the --enable-plugin-builddir option.
428 This option is for development purposes only: binaries built with
429 it should be used with code in the build tree only. To build an
430 installable version, use ./configure without the --enable-plugin-builddir
431 option. Note that the autogen.sh script supplies the plugin builddir
432 option automatically -- run ./autogen.sh --disable-plugin-buildddir to make
433 an installable build.
438 dnl #########################
439 dnl # Make the output files #
440 dnl #########################
442 dnl libs/ext/Makefile
448 gst/autoplug/Makefile
449 gst/elements/Makefile
451 gst/schedulers/Makefile
453 gst/registries/Makefile
456 libs/gst/bytestream/Makefile
457 libs/gst/getbits/Makefile
458 libs/gst/putbits/Makefile
459 libs/gst/control/Makefile
462 tests/bufspeed/Makefile
463 tests/memchunk/Makefile
464 tests/muxing/Makefile
465 tests/seeking/Makefile
467 tests/threadstate/Makefile
469 testsuite/bytestream/Makefile
470 testsuite/caps/Makefile
471 testsuite/cleanup/Makefile
472 testsuite/clock/Makefile
473 testsuite/dynparams/Makefile
474 testsuite/elements/Makefile
475 testsuite/plugin/Makefile
476 testsuite/refcounting/Makefile
477 testsuite/threads/Makefile
479 examples/autoplug/Makefile
480 examples/helloworld/Makefile
481 examples/helloworld2/Makefile
482 examples/launch/Makefile
483 examples/queue/Makefile
484 examples/queue2/Makefile
485 examples/queue3/Makefile
486 examples/queue4/Makefile
487 examples/thread/Makefile
488 examples/mixer/Makefile
489 examples/cutter/Makefile
490 examples/launch/Makefile
491 examples/xml/Makefile
492 examples/plugins/Makefile
493 examples/typefind/Makefile
494 examples/mixer/Makefile
495 examples/pingpong/Makefile
499 docs/gst/gstreamer.types
501 docs/plugins/Makefile
502 docs/plugins/gstreamer-plugins.types
506 docs/devhelp/Makefile
509 gstreamer-uninstalled.pc
511 echo "$infomessages", infomessages="$infomessages"