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=${sysconfdir}/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
218 AS_AC_EXPAND(GST_CONFIG_DIR, $GST_CONFIG_DIR)
219 AC_MSG_NOTICE(Using $GST_CONFIG_DIR as configuration dir)
221 AC_HELP_STRING([--disable-tests][disable building test apps]),
222 [case "${enableval}" in
223 yes) BUILD_TESTS=yes ;;
224 no) BUILD_TESTS=no ;;
225 *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;;
227 [BUILD_TESTS=yes]) dnl Default value
229 AC_ARG_ENABLE(examples,
230 AC_HELP_STRING([--disable-examples][disable building examples]),
231 [case "${enableval}" in
232 yes) BUILD_EXAMPLES=yes ;;
233 no) BUILD_EXAMPLES=no ;;
234 *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;;
236 [BUILD_EXAMPLES=yes]) dnl Default value
238 dnl Next, check for the optional components:
239 dnl ========================================
241 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true)
242 GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save])
243 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true)
244 GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],)
245 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true)
246 GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem])
247 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true)
248 GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser])
249 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true)
250 GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem])
251 translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true)
252 GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry])
254 GST_EXT_CFLAGS="$GST_EXT_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES"
256 dnl ################################################
257 dnl # Set defines according to variables set above #
258 dnl ################################################
261 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
262 dnl HAVE_ and it is likely to be easier to stick with the old name
263 if test "x$USE_LIBMMX" = xyes; then
264 AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available])
267 if test "x$USE_ATOMIC_H" = xyes; then
268 AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available])
271 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
272 AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this])
275 dnl if test "x$USE_DEBUG" = xyes; then
276 dnl CFLAGS="$CFLAGS -g"
279 if test "x$USE_PROFILING" = xyes; then
280 dnl CFLAGS="$CFLAGS -pg -fprofile-arcs"
281 FOMIT_FRAME_POINTER=""
283 FOMIT_FRAME_POINTER="-fomit-frame-pointer"
287 dnl AC_SUBST(FOMIT_FRAME_POINTER)
290 dnl #############################
291 dnl # Set automake conditionals #
292 dnl #############################
294 dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
295 dnl HAVE_ and it is likely to be easier to stick with the old name
296 AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
298 AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes")
299 AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes")
301 AM_CONDITIONAL(HAVE_NASM, test "x$HAVE_NASM" = "xyes")
302 AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes")
303 AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes")
304 AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes")
307 dnl ############################
308 dnl # Set up some more defines #
309 dnl ############################
311 dnl Set location of configuration dir.
312 AC_DEFINE_UNQUOTED(GST_CONFIG_DIR, "$GST_CONFIG_DIR", [Define the configuration directory])
313 AC_SUBST(GST_CONFIG_DIR)
315 dnl Set location of plugin directory
316 if test "x${prefix}" = "xNONE"; then
317 PLUGINS_DIR=${ac_default_prefix}/lib/gst
319 PLUGINS_DIR=${prefix}/lib/gst
321 AC_DEFINE_UNQUOTED(PLUGINS_DIR, "$PLUGINS_DIR", [Define the plugin directory])
322 AC_SUBST(PLUGINS_DIR)
324 dnl Set location of uninstalled plugin directory
325 PLUGINS_BUILDDIR=`pwd`
326 AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR, "$PLUGINS_BUILDDIR", [Define the uninstalled plugin directory])
327 AC_SUBST(PLUGINS_BUILDDIR)
329 dnl since glib and xml are package deps, there's no need to include their cflags
330 dnl in the pkg-config file
333 GST_PKG_CFLAGS=$GST_EXT_CFLAGS
334 GST_PKG_LIBS=$GST_EXT_LIBS
335 AC_SUBST(GST_PKG_CFLAGS)
336 AC_SUBST(GST_PKG_LIBS)
338 dnl finalize _CFLAGS and _LIBS
339 dnl add GLIB and XML if necessary to EXT_*
340 GST_CFLAGS="$GST_EXT_CFLAGS $XML_CFLAGS $GLIB_CFLAGS"
341 GST_LIBS="$GST_EXT_LIBS $XML_LIBS $GLIB_LIBS -lpopt"
343 dnl Private vars for libgst only
344 LIBGST_LIBS="$GST_LIBS"
345 LIBGST_CFLAGS="$GST_CFLAGS -I\$(top_srcdir) -Wall -Werror"
346 AC_SUBST(LIBGST_LIBS)
347 AC_SUBST(LIBGST_CFLAGS)
349 dnl Vars for everyone else
350 GST_INT_LIBS="\$(top_builddir)/gst/libgstreamer.la"
351 GST_INT_CFLAGS="-I\$(top_srcdir)/libs -I\$(top_srcdir)/include"
353 AC_SUBST(GST_CFLAGS, "$LIBGST_CFLAGS $GST_INT_CFLAGS")
354 AC_SUBST(GST_LIBS, "$LIBGST_LIBS $GST_INT_LIBS")
356 GST_PLUGIN_LDFLAGS='-module -avoid-version'
357 AC_SUBST(GST_PLUGIN_LDFLAGS)
359 AC_CONFIG_SUBDIRS(libs/ext/cothreads)
361 dnl ##################################################
362 dnl # Prepare informative messages to display at end #
363 dnl ##################################################
367 if test "x$PLUGINS_USE_BUILDDIR" = xyes; then
368 infomessages="$infomessages
369 *** Warning: You have configured using the --enable-plugin-builddir option.
371 This option is for development purposes only: binaries built with
372 it should be used with code in the build tree only. To build an
373 installable version, use ./configure without the --enable-plugin-builddir
374 option. Note that the autogen.sh script supplies the plugin builddir
375 option automatically -- run ./autogen.sh --disable-plugin-buildddir to make
376 an installable build.
381 dnl #########################
382 dnl # Make the output files #
383 dnl #########################
385 dnl libs/ext/Makefile
391 gst/autoplug/Makefile
392 gst/elements/Makefile
394 gst/schedulers/Makefile
398 libs/gst/bytestream/Makefile
399 libs/gst/getbits/Makefile
400 libs/gst/putbits/Makefile
401 libs/gst/control/Makefile
404 tests/bufspeed/Makefile
405 tests/memchunk/Makefile
406 tests/muxing/Makefile
409 testsuite/bytestream/Makefile
410 testsuite/caps/Makefile
411 testsuite/cleanup/Makefile
412 testsuite/elements/Makefile
413 testsuite/plugin/Makefile
414 testsuite/dynparams/Makefile
416 examples/autoplug/Makefile
417 examples/helloworld/Makefile
418 examples/helloworld2/Makefile
419 examples/launch/Makefile
420 examples/queue/Makefile
421 examples/queue2/Makefile
422 examples/queue3/Makefile
423 examples/queue4/Makefile
424 examples/thread/Makefile
425 examples/mixer/Makefile
426 examples/cutter/Makefile
427 examples/launch/Makefile
428 examples/xml/Makefile
429 examples/plugins/Makefile
430 examples/typefind/Makefile
431 examples/mixer/Makefile
435 docs/gst/gstreamer.types
437 docs/plugins/Makefile
438 docs/plugins/gstreamer-plugins.types
442 docs/devhelp/Makefile
445 gstreamer-uninstalled.pc
447 echo "$infomessages", infomessages="$infomessages"