2 AC_CANONICAL_TARGET([])
4 dnl when going to/from release please set the nano (fourth number) right !
5 AS_VERSION(gstreamer, GST_VERSION, 0, 3, 3, 1)
6 AM_INIT_AUTOMAKE($PACKAGE,$VERSION)
7 AS_LIBTOOL(GST, 0, 0, 0, yes)
9 AC_CONFIG_SRCDIR([gst/gst.c])
10 AM_CONFIG_HEADER(config.h)
12 dnl Add parameters for aclocal
13 dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
14 ACLOCAL="$ACLOCAL -I common/m4 $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 modify pkg-config path
41 AC_ARG_WITH(pkg-config-path,
42 AC_HELP_STRING([--with-pkg-config-path],[colon-separated list of pkg-config(1) dirs]),
43 [export PKG_CONFIG_PATH=${withval}])
46 AC_PATH_PROG(NASM_PATH, nasm, no)
48 if test x$NASM_PATH = xno; then
49 AC_MSG_WARN(Couldn't find nasm)
51 else AC_DEFINE(HAVE_NASM, 1, [Define if NASM, the netwide assembler, is available])
59 dnl We should really use AC_SYS_LARGEFILE, but the problem is
60 dnl many of the plugins don't include "config.h". To assure
61 dnl binary compatibility, it is necessary that all gstreamer
62 dnl code be compiled with the same sizeof(off_t), so we use
63 dnl the following crude hack.
67 dnl GST_CFLAGS are split up as GST_EXT_CFLAGS and GST_INT_CFLAGS
69 dnl this is so we can make GST_CFLAGS for external modules available
70 dnl without mixing in internal (uninstalled) CFLAGS
73 AC_MSG_CHECKING(for large file support)
75 #define _LARGEFILE_SOURCE
76 #define _FILE_OFFSET_BITS 64
77 #include <sys/types.h>
78 int main () { return !(sizeof(off_t) == 8); }
82 GST_EXT_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
91 dnl Check for essential libraries first:
92 dnl ====================================
95 dnl Minimum required version of GLib2
96 dnl required for compilation without warnings
101 PKG_CHECK_MODULES(GLIB2, glib-2.0 >= $GLIB2_REQ gobject-2.0 gthread-2.0 gmodule-2.0,
102 HAVE_GLIB2=yes,HAVE_GLIB2=no)
103 GLIB_LIBS=$GLIB2_LIBS
104 GLIB_CFLAGS=$GLIB2_CFLAGS
106 AC_SUBST(GLIB_CFLAGS)
108 if test "x$HAVE_GLIB2" = "xno"; then
109 AC_MSG_ERROR([GStreamer requires GLib 2.0 to compile.])
112 GST_PKG_DEPS="glib-2.0, gobject-2.0, gmodule-2.0, gthread-2.0"
113 AC_SUBST(GST_PKG_DEPS)
116 dnl Minimum required version of libxml2
118 AC_SUBST(LIBXML2_REQ)
120 dnl check for libxml2
121 LIBXML_PKG=', libxml-2.0'
122 PKG_CHECK_MODULES(XML, libxml-2.0 >= $LIBXML2_REQ, HAVE_LIBXML2=yes, HAVE_LIBXML2=no)
123 if test "x$HAVE_LIBXML2" = "xyes"; then
124 AC_DEFINE(HAVE_LIBXML2, 1, [Define if libxml2 is available])
126 AC_MSG_ERROR([Need libxml2 for glib2 builds -- you should be able to do without it -- this needs fixing])
132 GST_CHECK_LIBHEADER(POPT, popt, poptStrippedArgv,, popt.h, POPT_LIBS="-lpopt",
133 AC_MSG_ERROR([popt 1.5 or newer is required to build gstreamer. You can
134 download the latest version from ftp://people.redhat.com/sopwith/popt/]))
136 dnl Check for atomic.h
137 dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
138 dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
139 AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
140 dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
141 if test x$HAVE_ATOMIC_H = xyes; then
143 #include "asm/atomic.h"
144 main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
147 if test x$HAVE_ATOMIC_H = xyes; then
148 AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
154 AC_MSG_WARN(Can't check properly for atomic reference counting. Assuming OK.)
158 dnl ######################################################################
159 dnl # Check command line parameters, and set shell variables accordingly #
160 dnl ######################################################################
162 dnl FIXME: simplify all this down using a few m4 macros
164 AC_ARG_ENABLE(libmmx,
165 AC_HELP_STRING([--enable-libmmx][use libmmx, if available]),
166 [case "${enableval}" in
167 yes) USE_LIBMMX=$HAVE_LIBMMX ;;
169 *) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
171 [USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
173 AC_ARG_ENABLE(atomic,
174 AC_HELP_STRING([--enable-atomic][use atomic reference counting header]),
175 [case "${enableval}" in
176 yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
177 noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
178 no) USE_ATOMIC_H=no;;
179 *) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
181 [USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
183 AC_ARG_ENABLE(plugin-builddir,
184 AC_HELP_STRING([--enable-plugin-builddir][allow tests/demos to use non-installed plugins]),
185 [case "${enableval}" in
186 yes) PLUGINS_USE_BUILDDIR=yes ;;
187 no) PLUGINS_USE_BUILDDIR=no ;;
188 *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;;
190 [PLUGINS_USE_BUILDDIR=no]) dnl Default value
194 AC_ARG_ENABLE(profiling,
195 AC_HELP_STRING([--enable-profiling][adds -pg to compiler commandline, for profiling]),
196 [case "${enableval}" in
197 yes) USE_PROFILING=yes ;;
198 no) UES_PROFILING=no ;;
199 *) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
201 [USE_PROFILING=no]) dnl Default value
203 dnl default to building registry in the source tree if we are enabling plugin build dir
204 if test "x$PLUGINS_USE_BUILDDIR" = "xyes"; then
207 GST_CONFIG_DIR=/etc/gstreamer
209 AC_ARG_WITH(configdir,
210 AC_HELP_STRING([--with-configdir][specify path to use for plugin and command completion registries]),
211 [case "${withval}" in
212 yes) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
213 no) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
214 *) GST_CONFIG_DIR="${withval}" ;;
216 [:]) dnl Default value
219 AC_HELP_STRING([--disable-tests][disable building test apps]),
220 [case "${enableval}" in
221 yes) BUILD_TESTS=yes ;;
222 no) BUILD_TESTS=no ;;
223 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
225 [BUILD_TESTS=yes]) dnl Default value
227 AC_ARG_ENABLE(examples,
228 AC_HELP_STRING([--disable-examples][disable building examples]),
229 [case "${enableval}" in
230 yes) BUILD_EXAMPLES=yes ;;
231 no) BUILD_EXAMPLES=no ;;
232 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
234 [BUILD_EXAMPLES=yes]) dnl Default value
236 dnl Next, check for the optional components:
237 dnl ========================================
239 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
240 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
241 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
242 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
243 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
244 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
245 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
246 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
247 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
248 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
249 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
250 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
252 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
254 dnl ################################################
255 dnl # Set defines according to variables set above #
256 dnl ################################################
259 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
260 dnl HAVE_ and it is likely to be easier to stick with the old name
261 if test "x$USE_LIBMMX" = xyes; then
262 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
265 if test "x$USE_ATOMIC_H" = xyes; then
266 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
269 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
270 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
273 dnl if test "x$USE_DEBUG" = xyes; then
274 dnl CFLAGS="$CFLAGS -g"
277 if test "x$USE_PROFILING" = xyes; then
278 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
279 FOMIT_FRAME_POINTER=""
281 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
285 dnl AC_SUBST(FOMIT_FRAME_POINTER)
288 dnl #############################
289 dnl # Set automake conditionals #
290 dnl #############################
292 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
293 dnl HAVE_ and it is likely to be easier to stick with the old name
294 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
296 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
297 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
299 AM_CONDITIONAL(HAVE_NASM, test "x$HAVE_NASM" = "xyes")
300 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
301 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
302 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
305 dnl ############################
306 dnl # Set up some more defines #
307 dnl ############################
309 dnl Set location of configuration dir.
310 AC_DEFINE_UNQUOTED(GST_CONFIG_DIR, "$GST_CONFIG_DIR", [Define the configuration directory])
311 AC_SUBST(GST_CONFIG_DIR)
313 dnl Set location of plugin directory
314 if test "x${prefix}" = "xNONE"; then
315 PLUGINS_DIR=${ac_default_prefix}/lib/gst
317 PLUGINS_DIR=${prefix}/lib/gst
319 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
320 AC_SUBST(PLUGINS_DIR)
322 dnl Set location of uninstalled plugin directory
323 PLUGINS_BUILDDIR=`pwd`
324 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
325 AC_SUBST(PLUGINS_BUILDDIR)
327 dnl since glib and xml are package deps, there's no need to include their cflags
328 dnl in the pkg-config file
331 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
332 GST_PKG_LIBS=$GST_EXT_LIBS
333 AC_SUBST(GST_PKG_CFLAGS)
334 AC_SUBST(GST_PKG_LIBS)
336 dnl finalize _CFLAGS and _LIBS
337 dnl add GLIB and XML if necessary to EXT_*
338 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
339 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
341 dnl Private vars for libgst only
342 LIBGST_LIBS="$GST_LIBS"
343 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) -Wall -Werror"
344 AC_SUBST(LIBGST_LIBS)
345 AC_SUBST(LIBGST_CFLAGS)
347 dnl Vars for everyone else
348 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer.la"
349 GST_INT_CFLAGS="-I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
351 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
352 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
354 GST_PLUGIN_LDFLAGS='-module -avoid-version'
355 AC_SUBST(GST_PLUGIN_LDFLAGS)
357 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
359 dnl ##################################################
360 dnl # Prepare informative messages to display at end #
361 dnl ##################################################
365 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
366 infomessages="$infomessages
367 *** Warning: You have configured using the --enable-plugin-builddir option.
369 This option is for development purposes only: binaries built with
370 it should be used with code in the build tree only. To build an
371 installable version, use ./configure without the --enable-plugin-builddir
372 option. Note that the autogen.sh script supplies the plugin builddir
373 option automatically -- run ./autogen.sh --disable-plugin-buildddir to make
374 an installable build.
379 dnl #########################
380 dnl # Make the output files #
381 dnl #########################
383 dnl libs/ext/Makefile
389 gst/autoplug/Makefile
390 gst/elements/Makefile
392 gst/schedulers/Makefile
396 libs/gst/bytestream/Makefile
397 libs/gst/getbits/Makefile
398 libs/gst/putbits/Makefile
399 libs/gst/control/Makefile
402 tests/bufspeed/Makefile
403 tests/memchunk/Makefile
404 tests/muxing/Makefile
407 testsuite/bytestream/Makefile
408 testsuite/caps/Makefile
409 testsuite/cleanup/Makefile
410 testsuite/elements/Makefile
411 testsuite/plugin/Makefile
412 testsuite/dynparams/Makefile
414 examples/autoplug/Makefile
415 examples/helloworld/Makefile
416 examples/helloworld2/Makefile
417 examples/launch/Makefile
418 examples/queue/Makefile
419 examples/queue2/Makefile
420 examples/queue3/Makefile
421 examples/queue4/Makefile
422 examples/thread/Makefile
423 examples/mixer/Makefile
424 examples/cutter/Makefile
425 examples/launch/Makefile
426 examples/xml/Makefile
427 examples/plugins/Makefile
428 examples/typefind/Makefile
429 examples/mixer/Makefile
433 docs/gst/gstreamer.types
435 docs/plugins/Makefile
436 docs/plugins/gstreamer-plugins.types
440 docs/devhelp/Makefile
443 gstreamer-uninstalled.pc
445 echo "$infomessages", infomessages="$infomessages"