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, 3, 4, 1, GST_ERROR="-Wall", GST_ERROR="-Wall -Werror")
8 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
9 AS_LIBTOOL(GST, 0, 0, 0, yes)
11 AC_CONFIG_SRCDIR([gst/gst.c])
12 AM_CONFIG_HEADER(config.h)
14 dnl Add parameters for aclocal
15 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
16 ACLOCAL="$ACLOCAL -I common/m4 $ACLOCAL_FLAGS"
28 dnl We disable static building for development, for time savings
29 dnl *NOTE*: dnl this line before release, so release does static too
35 dnl ##############################
36 dnl # Do automated configuration #
37 dnl ##############################
42 dnl allow for different autotools
43 AS_AUTOTOOLS_ALTERNATE()
45 dnl modify pkg-config path
46 AC_ARG_WITH(pkg-config-path,
47 AC_HELP_STRING([--with-pkg-config-path],
48 [colon-separated list of pkg-config(1) dirs]),
49 [export PKG_CONFIG_PATH=${withval}])
52 AC_PATH_PROG(NASM_PATH, nasm, no)
54 if test x$NASM_PATH = xno; then
55 AC_MSG_WARN(Couldn't find nasm)
57 else AC_DEFINE(HAVE_NASM, 1, [Define if NASM, the netwide assembler, is available])
64 dnl we require bison for building of some of the marshal files
65 AC_PATH_PROG(BISON_PATH, bison, no)
66 if test x$BISON_PATH = xno; then
67 AC_MSG_ERROR(Could not find bison)
71 dnl We should really use AC_SYS_LARGEFILE, but the problem is
72 dnl many of the plugins don't include "config.h". To assure
73 dnl binary compatibility, it is necessary that all gstreamer
74 dnl code be compiled with the same sizeof(off_t), so we use
75 dnl the following crude hack.
79 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
81 dnl this is so we can make GST_CFLAGS for external modules available
82 dnl without mixing in internal (uninstalled) CFLAGS
85 AC_MSG_CHECKING(for large file support)
87 #define _LARGEFILE_SOURCE
88 #define _FILE_OFFSET_BITS 64
89 #include <sys/types.h>
90 int main () { return !(sizeof(off_t) == 8); }
94 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
103 dnl Check for essential libraries first:
104 dnl ====================================
107 dnl Minimum required version of GLib2
108 dnl required for compilation without warnings
113 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,
114 HAVE_GLIB2=yes,HAVE_GLIB2=no)
115 GLIB_LIBS=$GLIB2_LIBS
116 GLIB_CFLAGS=$GLIB2_CFLAGS
118 AC_SUBST(GLIB_CFLAGS)
120 if test "x$HAVE_GLIB2" = "xno"; then
121 AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
124 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
125 AC_SUBST(GST_PKG_DEPS)
128 dnl Minimum required version of libxml2
130 AC_SUBST(LIBXML2_REQ)
132 dnl check for libxml2
133 LIBXML_PKG=', libxml-2.0'
134 PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_REQ, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
135 if test "x$HAVE_LIBXML2" = "xyes"; then
136 AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 is available])
138 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.5 or newer is required to build gstreamer. You can
146 download the latest version from ftp://people.redhat.com/sopwith/popt/]))
148 dnl Check for atomic.h
149 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
150 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
151 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
152 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
153 if test x$HAVE_ATOMIC_H = xyes; then
155 #include "asm/atomic.h"
156 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
159 if test x$HAVE_ATOMIC_H = xyes; then
160 AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
166 AC_MSG_WARN(Can't check properly for atomic reference counting. Assuming OK.)
170 dnl ######################################################################
171 dnl # Check command line parameters, and set shell variables accordingly #
172 dnl ######################################################################
174 dnl FIXME: simplify all this down using a few m4 macros
176 AC_ARG_ENABLE(libmmx,
177 AC_HELP_STRING([--enable-libmmx][use libmmx, if available]),
178 [case "${enableval}" in
179 yes) USE_LIBMMX=$HAVE_LIBMMX ;;
181 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
183 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
185 AC_ARG_ENABLE(atomic,
186 AC_HELP_STRING([--enable-atomic][use atomic reference counting header]),
187 [case "${enableval}" in
188 yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
189 noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
190 no) USE_ATOMIC_H=no;;
191 *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
193 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
195 AC_ARG_ENABLE(plugin-builddir,
196 AC_HELP_STRING([--enable-plugin-builddir][allow tests/demos to use non-installed plugins]),
197 [case "${enableval}" in
198 yes) PLUGINS_USE_BUILDDIR=yes ;;
199 no) PLUGINS_USE_BUILDDIR=no ;;
200 *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
202 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
206 AC_ARG_ENABLE(profiling,
207 AC_HELP_STRING([--enable-profiling][adds -pg to compiler commandline, for profiling]),
208 [case "${enableval}" in
209 yes) USE_PROFILING=yes ;;
210 no) UES_PROFILING=no ;;
211 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
213 [USE_PROFILING=no]) dnl Default value
215 dnl default to building registry in the source tree if we are enabling plugin build dir
216 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
219 GST_CONFIG_DIR=${sysconfdir}/gstreamer
221 AC_ARG_WITH(configdir,
222 AC_HELP_STRING([--with-configdir][specify path to use for plugin and command completion registries]),
223 [case "${withval}" in
224 yes) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
225 no) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
226 *) GST_CONFIG_DIR="${withval}" ;;
228 [:]) dnl Default value
230 AS_AC_EXPAND(GST_CONFIG_DIR, $GST_CONFIG_DIR)
231 AC_MSG_NOTICE(Using $GST_CONFIG_DIR as configuration dir)
234 dnl building of tests
236 AC_HELP_STRING([--disable-tests][disable building test apps]),
237 [case "${enableval}" in
238 yes) BUILD_TESTS=yes ;;
239 no) BUILD_TESTS=no ;;
240 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
242 [BUILD_TESTS=yes]) dnl Default value
243 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
245 dnl tests known to fail
246 AC_ARG_ENABLE(failing-tests,
247 AC_HELP_STRING([--disable-failing-tests][disable building tests known to fail]),
248 [case "${enableval}" in
249 yes) BUILD_FAILING_TESTS=yes ;;
250 no) BUILD_FAILING_TESTS=no ;;
251 *) AC_MSG_ERROR(bad value ${enableval} for --disable-failing-tests) ;;
253 [BUILD_FAILING_TESTS=yes]) dnl Default value
254 AM_CONDITIONAL(BUILD_FAILING_TESTS, test "x$BUILD_FAILING_TESTS" = "xyes")
256 AC_ARG_ENABLE(examples,
257 AC_HELP_STRING([--disable-examples][disable building examples]),
258 [case "${enableval}" in
259 yes) BUILD_EXAMPLES=yes ;;
260 no) BUILD_EXAMPLES=no ;;
261 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
263 [BUILD_EXAMPLES=yes]) dnl Default value
264 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
266 dnl Next, check for the optional components:
267 dnl ========================================
269 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
270 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
271 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
272 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
273 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
274 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
275 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
276 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
277 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
278 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
279 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
280 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
282 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
284 dnl ################################################
285 dnl # Set defines according to variables set above #
286 dnl ################################################
289 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
290 dnl HAVE_ and it is likely to be easier to stick with the old name
291 if test "x$USE_LIBMMX" = xyes; then
292 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
295 if test "x$USE_ATOMIC_H" = xyes; then
296 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
299 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
300 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
303 dnl if test "x$USE_DEBUG" = xyes; then
304 dnl CFLAGS="$CFLAGS -g"
307 if test "x$USE_PROFILING" = xyes; then
308 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
309 FOMIT_FRAME_POINTER=""
311 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
315 dnl AC_SUBST(FOMIT_FRAME_POINTER)
318 dnl #############################
319 dnl # Set automake conditionals #
320 dnl #############################
322 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
323 dnl HAVE_ and it is likely to be easier to stick with the old name
324 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
326 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
327 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
329 AM_CONDITIONAL(HAVE_NASM, test "x$HAVE_NASM" = "xyes")
330 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
333 dnl ############################
334 dnl # Set up some more defines #
335 dnl ############################
337 dnl Set location of configuration dir.
338 AC_DEFINE_UNQUOTED(GST_CONFIG_DIR, "$GST_CONFIG_DIR", [Define the configuration directory])
339 AC_SUBST(GST_CONFIG_DIR)
341 dnl Set location of plugin directory
342 if test "x${prefix}" = "xNONE"; then
343 PLUGINS_DIR=${ac_default_prefix}/lib/gst
345 PLUGINS_DIR=${prefix}/lib/gst
347 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
348 AC_SUBST(PLUGINS_DIR)
350 dnl Set location of uninstalled plugin directory
351 PLUGINS_BUILDDIR=`pwd`
352 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
353 AC_SUBST(PLUGINS_BUILDDIR)
355 dnl since glib and xml are package deps, there's no need to include their cflags
356 dnl in the pkg-config file
359 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
360 GST_PKG_LIBS=$GST_EXT_LIBS
361 AC_SUBST(GST_PKG_CFLAGS)
362 AC_SUBST(GST_PKG_LIBS)
364 dnl finalize _CFLAGS and _LIBS
365 dnl add GLIB and XML if necessary to EXT_*
366 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
367 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
369 dnl Private vars for libgst only
370 LIBGST_LIBS="$GST_LIBS"
371 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) $GST_ERROR"
372 AC_SUBST(LIBGST_LIBS)
373 AC_SUBST(LIBGST_CFLAGS)
375 dnl Vars for everyone else
376 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer.la"
377 GST_INT_CFLAGS="-I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
379 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
380 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
382 GST_PLUGIN_LDFLAGS='-module -avoid-version'
383 AC_SUBST(GST_PLUGIN_LDFLAGS)
385 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
387 dnl ##################################################
388 dnl # Prepare informative messages to display at end #
389 dnl ##################################################
393 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
394 infomessages="$infomessages
395 *** Warning: You have configured using the --enable-plugin-builddir option.
397 This option is for development purposes only: binaries built with
398 it should be used with code in the build tree only. To build an
399 installable version, use ./configure without the --enable-plugin-builddir
400 option. Note that the autogen.sh script supplies the plugin builddir
401 option automatically -- run ./autogen.sh --disable-plugin-buildddir to make
402 an installable build.
407 dnl #########################
408 dnl # Make the output files #
409 dnl #########################
411 dnl libs/ext/Makefile
417 gst/autoplug/Makefile
418 gst/elements/Makefile
420 gst/schedulers/Makefile
422 gst/registries/Makefile
425 libs/gst/bytestream/Makefile
426 libs/gst/getbits/Makefile
427 libs/gst/putbits/Makefile
428 libs/gst/control/Makefile
431 tests/bufspeed/Makefile
432 tests/memchunk/Makefile
433 tests/muxing/Makefile
436 testsuite/bytestream/Makefile
437 testsuite/caps/Makefile
438 testsuite/cleanup/Makefile
439 testsuite/clock/Makefile
440 testsuite/dynparams/Makefile
441 testsuite/elements/Makefile
442 testsuite/plugin/Makefile
443 testsuite/refcounting/Makefile
444 testsuite/threads/Makefile
446 examples/autoplug/Makefile
447 examples/helloworld/Makefile
448 examples/helloworld2/Makefile
449 examples/launch/Makefile
450 examples/queue/Makefile
451 examples/queue2/Makefile
452 examples/queue3/Makefile
453 examples/queue4/Makefile
454 examples/thread/Makefile
455 examples/mixer/Makefile
456 examples/cutter/Makefile
457 examples/launch/Makefile
458 examples/xml/Makefile
459 examples/plugins/Makefile
460 examples/typefind/Makefile
461 examples/mixer/Makefile
465 docs/gst/gstreamer.types
467 docs/plugins/Makefile
468 docs/plugins/gstreamer-plugins.types
472 docs/devhelp/Makefile
475 gstreamer-uninstalled.pc
477 echo "$infomessages", infomessages="$infomessages"