gstreamer/configure.in

795 lines
22 KiB
Text
Raw Normal View History

AC_INIT(gst/gstobject.h)
AC_CANONICAL_SYSTEM
AM_CONFIG_HEADER(config.h)
dnl FIXME this should be GSTREAMER_ now
STREAMER_MAJOR_VERSION=0
STREAMER_MINOR_VERSION=1
STREAMER_MICRO_VERSION=1
STREAMER_VERSION=$STREAMER_MAJOR_VERSION.$STREAMER_MINOR_VERSION.$STREAMER_MICRO_VERSION
PACKAGE=gstreamer
VERSION=$STREAMER_VERSION
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
dnl libtool
STREAMER_CURRENT=0
STREAMER_REVISION=0
STREAMER_AGE=0
GSTREAMER_LIBVERSION=$STREAMER_CURRENT:$STREAMER_REVISION:$STREAMER_AGE
AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
dnl Add parameters for aclocal
dnl (This must come after AM_INIT_AUTOMAKE, since it modifies ACLOCAL)
ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
AC_SUBST(STREAMER_MAJOR_VERSION)
AC_SUBST(STREAMER_MINOR_VERSION)
AC_SUBST(STREAMER_MICRO_VERSION)
AC_SUBST(STREAMER_VERSION)
AC_SUBST(STREAMER_CURRENT)
AC_SUBST(STREAMER_REVISION)
AC_SUBST(STREAMER_AGE)
AC_SUBST(GSTREAMER_LIBVERSION)
AM_MAINTAINER_MODE
AC_PROG_CC
AC_ISC_POSIX
AC_STDC_HEADERS
AC_ARG_PROGRAM
dnl We disable static building for development, for time savings
dnl *NOTE*: dnl this line before release, so release does static too
AM_DISABLE_STATIC
AC_LIBTOOL_DLOPEN
AM_PROG_LIBTOOL
CFLAGS=""
dnl This is used for the -config script...
builddir=`pwd`
AC_SUBST(builddir)
dnl ##############################
dnl # Do automated configuration #
dnl ##############################
dnl Check for tools:
dnl ================
dnl Check for nasm
AC_PATH_PROG(NASM_PATH, nasm, no)
AC_SUBST(NASM_PATH)
if test x$NASM_PATH = xno; then
AC_MSG_WARN(Couldn't find nasm)
HAVE_NASM="no"
else
AC_DEFINE(HAVE_NASM)
HAVE_NASM="yes"
fi
dnl check for gtkdoc
AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-mkdb, true, false)
AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-scanobj, :, false)
AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-scan, :, false)
AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-mktmpl, :, false)
AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-mkdb, :, false)
AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-mkhtml, :, false)
AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-fixxref, :, false)
dnl check for docbook tools
AC_CHECK_PROG(HAVE_DB2HTML, db2html, true, false)
AC_CHECK_PROG(HAVE_DB2PS, db2ps, true, false)
AC_CHECK_PROG(HAVE_PS2PDF, ps2pdf, true, false)
dnl check for image conversion tool
AC_CHECK_PROG(HAVE_FIG2DEV, fig2dev, true, false)
dnl The following is a hack: if fig2dev doesn't display an error message
dnl for the desired type, we assume it supports it.
HAVE_FIG2DEV_PNG=false
if test "x$HAVE_FIG2DEV" = "xtrue" ; then
fig2dev_quiet=`fig2dev -L png </dev/null 2>&1 >/dev/null`
if test "x$fig2dev_quiet" = "x" ; then
HAVE_FIG2DEV_PNG=true
fi
fi
HAVE_FIG2DEV_EPS=false
if test "x$HAVE_FIG2DEV" = "xtrue" ; then
fig2dev_quiet=`fig2dev -L eps </dev/null 2>&1 >/dev/null`
if test "x$fig2dev_quiet" = "x" ; then
HAVE_FIG2DEV_EPS=true
fi
fi
dnl Set up conditionals for (target) architecture:
dnl ==============================================
dnl Determine CPU
case "x${target_cpu}" in
xi?86) HAVE_CPU_I386=yes ;
AC_DEFINE(HAVE_CPU_I386) ;;
xpowerpc) HAVE_CPU_PPC=yes ;
AC_DEFINE(HAVE_CPU_PPC) ;;
xalpha) HAVE_CPU_ALPHA=yes ;
AC_DEFINE(HAVE_CPU_ALPHA) ;;
xarm*) HAVE_CPU_ARM=yes ;
AC_DEFINE(HAVE_CPU_ARM) ;;
xsparc*) HAVE_CPU_SPARC=yes ;
AC_DEFINE(HAVE_CPU_SPARC) ;;
esac
dnl Determine endianness
AC_C_BIGENDIAN
dnl Check for MMX-capable compiler
AC_MSG_CHECKING(for MMX-capable compiler)
AC_TRY_RUN([
#include "include/mmx.h"
main()
{ movq_r2r(mm0, mm1); return 0; }
],
[
HAVE_LIBMMX="yes"
AC_MSG_RESULT(yes)
],
HAVE_LIBMMX="no"
AC_MSG_RESULT(no)
,
HAVE_LIBMMX="no"
AC_MSG_RESULT(no)
)
dnl Check for essential libraries first:
dnl ====================================
dnl Check for glib
AM_PATH_GLIB(1.2.0,,
AC_MSG_ERROR(Cannot find glib: Is glib-config in path?),
glib gmodule gthread)
dnl Put the glib flags into $LIBS and $CFLAGS since we always use them
CORE_LIBS="$GLIB_LIBS"
CORE_CFLAGS="$GLIB_CFLAGS"
dnl Check for gtk
AM_PATH_GTK(1.2.0,,
AC_MSG_ERROR(Cannot find gtk: Is gtk-config in path?))
dnl Put the gtk flags into $LIBS and $CFLAGS since we always use them
CORE_LIBS="$CORE_LIBS $GTK_LIBS"
CORE_CFLAGS="$CORE_CFLAGS $GTK_CFLAGS"
dnl Check for libxml
AC_PATH_PROG(XML_CONFIG, xml-config, no)
if test x$XML_CONFIG = xno; then
AC_MSG_ERROR(Couldn't find xml-config)
fi
XML_LIBS=`xml-config --libs`
XML_CFLAGS=`xml-config --cflags`
AC_SUBST(XML_LIBS)
AC_SUBST(XML_CFLAGS)
CORE_LIBS="$CORE_LIBS $XML_LIBS"
CORE_CFLAGS="$CORE_CFLAGS $XML_CFLAGS"
dnl Next, check for the optional libraries:
dnl =======================================
dnl Check for libesd
AM_PATH_ESD(0.2.12, HAVE_LIBESD=yes, HAVE_LIBESD=no)
dnl AM_PATH_XMMS(0.1.0, HAVE_LIBXMMS=yes, HAVE_LIBXMMS=no)
dnl Check for libasound
alsa_save_LIBS=$LIBS
alsa_save_CFLAGS=$CFLAGS
AM_PATH_ALSA(0.5.0, HAVE_LIBASOUND=yes, HAVE_LIBASOUND=no)
LIBS=$alsa_save_LIBS
CFLAGS=$alsa_save_CFLAGS
dnl Check for libgdk-pixbuf
AC_PATH_PROG(GDK_PIXBUF_CONFIG, gdk-pixbuf-config, no)
if test x$GDK_PIXBUF_CONFIG = xno; then
AC_MSG_WARN(Couldn't find gdk-pixbuf-config)
GDK_PIXBUF_LIBS=
GDK_PIXBUF_CFLAGS=
HAVE_GDK_PIXBUF=no
else
GDK_PIXBUF_LIBS=`gdk-pixbuf-config --libs`
GDK_PIXBUF_CFLAGS=`gdk-pixbuf-config --cflags`
HAVE_GDK_PIXBUF=yes
fi
AC_SUBST(GDK_PIXBUF_LIBS)
AC_SUBST(GDK_PIXBUF_CFLAGS)
dnl Check for libgnome
AC_PATH_PROG(GNOME_CONFIG, gnome-config, no)
if test x$GNOME_CONFIG = xno; then
AC_MSG_WARN(Couldn't find gnome-config: can't build editor or gstplay)
GNOME_LIBS=
GNOME_CFLAGS=
HAVE_GNOME=no
else
GNOME_LIBS=`gnome-config --libs gnome gnomeui`
GNOME_CFLAGS=`gnome-config --cflags gnome gnomeui`
GHTTP_LIBS=`gnome-config --libs gnome gnomeui`
GHTTP_CFLAGS=`gnome-config --cflags gnome gnomeui`
HAVE_GNOME=yes
fi
AC_SUBST(GNOME_LIBS)
AC_SUBST(GNOME_CFLAGS)
AC_SUBST(GHTTP_LIBS)
dnl Check for libghttp
dnl FIXME: need to check for header
AC_CHECK_LIB(ghttp, ghttp_request_new,
[GHTTP_LIBS="-lghttp"
GST_HTTPSRC_GET_TYPE="gst_httpsrc_get_type"
HAVE_LIBGHTTP=yes
],
[AC_MSG_WARN(Cannot find libghttp: can't build gsthttpsrc)
GHTTP_LIBS=
GST_HTTPSRC_GET_TYPE=
HAVE_LIBGHTTP=no
],
$LIBS)
AC_SUBST(GST_HTTPSRC_GET_TYPE)
dnl Check for libglade
HAVE_LIBGLADE_GNOME="no"
AC_PATH_PROG(LIBGLADE_CONFIG_PATH, libglade-config, no)
if test x$LIBGLADE_CONFIG_PATH = xno; then
AC_MSG_WARN(Couldn't find libglade-config - Can't build gstplay)
LIBGLADE_GNOME_LIBS=
LIBGLADE_GNOME_CFLAGS=
HAVE_LIBGLADE_GNOME=NO
else
LIBGLADE_GNOME_LIBS=`libglade-config --libs gnome`
LIBGLADE_GNOME_CFLAGS=`libglade-config --cflags gnome`
libglade_save_CFLAGS="$CFLAGS"
libglade_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $LIBGLADE_GNOME_CFLAGS $GTK_CFLAGS"
LIBS="$LIBS $LIBGLADE_GNOME_LIBS $GTK_LIBS"
HAVE_LIBGLADE_GNOME="no"
AC_TRY_LINK([#include <glade/glade.h>],[glade_gnome_init();],
HAVE_LIBGLADE_GNOME="yes",
AC_MSG_WARN(
[Couldn't find gnome libraries for libglade - Can't build gstplay])
)
CFLAGS="$libglade_save_CFLAGS"
LIBS="$libglade_save_LIBS"
fi
AC_SUBST(LIBGLADE_GNOME_LIBS)
AC_SUBST(LIBGLADE_GNOME_CFLAGS)
dnl Check for atomic.h
dnl Note: use AC_CHECK_HEADER not AC_CHECK_HEADERS, because the latter
dnl defines the wrong default symbol as well (HAVE_ASM_ATOMIC_H)
AC_CHECK_HEADER(asm/atomic.h, HAVE_ATOMIC_H=yes, HAVE_ATOMIC_H=no)
dnl Do a compile to check that it has atomic_set (eg, linux 2.0 didn't)
if test x$HAVE_ATOMIC_H = xyes; then
AC_TRY_RUN([
#include "asm/atomic.h"
main() { atomic_t t; atomic_set(&t,0); atomic_inc(&t); atomic_add(1,&t);return 0;}
],, [
# Not successful
if test x$HAVE_ATOMIC_H = xyes; then
AC_MSG_WARN(Atomic reference counting is out of date: doing without.)
fi
HAVE_ATOMIC_H=no
], [
# Cross compiling
AC_MSG_RESULT(yes)
AC_MSG_WARN(Can't check properly for atomic reference counting. Assuming OK.)
])
fi
dnl Check for X11 extensions
AC_PATH_XTRA
if test "-DX_DISPLAY_MISSING" = "$X_CFLAGS"; then
AC_MSG_ERROR(can not find X11)
fi
AC_SUBST(X_CFLAGS)
AC_SUBST(X_PRE_LIBS)
AC_SUBST(X_EXTRA_LIBS)
AC_SUBST(X_LIBS)
dnl Check for the Xv library
xvsave_LIBS=${LIBS}
AC_CHECK_LIB(Xv, XvQueryExtension,
HAVE_LIBXV=yes
AC_DEFINE(HAVE_LIBXV),
HAVE_LIBXV=no, $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS)
LIBS=${xvsave_LIBS}
dnl Check for xaudio
AC_CHECK_HEADER(xaudio/decoder.h,[
AC_DEFINE(HAVE_XAUDIO)
HAVE_XAUDIO="yes", []
])
dnl Check for libvorbis
AC_MSG_CHECKING(Vorbis library)
AC_CHECK_LIB(vorbis, ogg_sync_init,
HAVE_VORBIS=yes
AC_DEFINE(HAVE_VORBIS),
HAVE_VORBIS=no, )
dnl Check for libvorbis
AC_MSG_CHECKING(libjpeg library)
AC_CHECK_LIB(jpeg, jpeg_set_defaults,
HAVE_LIBJPEG=yes
AC_DEFINE(HAVE_LIBJPEG),
HAVE_LIBJPEG=no, )
dnl Check for cdparanoia
AC_MSG_CHECKING(CDparanoia library)
HAVE_CDPARANOIA=yes
AC_CHECK_LIB(cdda_interface, cdda_open, : , HAVE_CDPARANOIA=no, )
AC_CHECK_HEADER(cdda_interface.h, :, HAVE_CDPARANOIA=no)
AC_CHECK_LIB(cdda_paranoia, paranoia_init, : , HAVE_CDPARANOIA=no, -lcdda_interface )
AC_CHECK_HEADER(cdda_paranoia.h, :, HAVE_CDPARANOIA=no)
dnl Check for liblame
AC_MSG_CHECKING(LAME library)
AC_CHECK_LIB(mp3lame, lame_init, HAVE_LIBLAME=yes, HAVE_LIBLAME=no, )
AC_CHECK_HEADER(lame/lame.h, :, HAVE_LIBLAME=no)
dnl Check for libshout
AC_MSG_CHECKING(Shout library)
AC_CHECK_LIB(shout, shout_init_connection, HAVE_LIBSHOUT=yes, HAVE_LIBSHOUT=no, )
AC_CHECK_HEADER(shout/shout.h, :, HAVE_LIBSHOUT=no)
dnl Check for mpeg2dec
AC_MSG_CHECKING(mpeg2dec library)
AC_CHECK_LIB(mpeg2, mpeg2_init, HAVE_MPEG2DEC=yes, HAVE_MPEG2DEC=no, )
AC_CHECK_HEADER(mpeg2dec/mpeg2.h, :, HAVE_MPEG2DEC=no)
dnl check if css-auth.c exists (FIXME)
AC_MSG_CHECKING(DVD CSS code)
if test -f plugins/dvdsrc/css-auth.c
then
AC_MSG_RESULT(yes)
HAVE_CSSAUTH="yes"
AC_DEFINE(HAVE_CSSAUTH)
else
AC_MSG_RESULT(no)
HAVE_CSSAUTH="no"
fi
dnl ######################################################################
dnl # Check command line parameters, and set shell variables accordingly #
dnl ######################################################################
AC_ARG_ENABLE(gdk-pixbuf,
[ --enable-gdk-pixbuf use gdk pixbuf, if available],
[case "${enableval}" in
yes) USE_GDK_PIXBUF=$HAVE_GDK_PIXBUF ;;
no) USE_GDK_PIXBUF=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-gdk-pixbuf) ;;
esac],
[USE_GDK_PIXBUF=$HAVE_GDK_PIXBUF]) dnl Default value
AC_ARG_ENABLE(libghttp,
[ --enable-libghttp use the ghttp library, if available],
[case "${enableval}" in
yes) USE_LIBGHTTP=$HAVE_LIBGHTTP ;;
no) USE_LIBGHTTP=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-libghttp) ;;
esac],
[USE_LIBGHTTP=$HAVE_LIBGHTTP]) dnl Default value
AC_ARG_ENABLE(libmmx,
[ --enable-libmmx use libmmx, if available],
[case "${enableval}" in
yes) USE_LIBMMX=$HAVE_LIBMMX ;;
no) USE_LIBMMX=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-libmmx) ;;
esac],
[USE_LIBMMX=$HAVE_LIBMMX]) dnl Default value
AC_ARG_ENABLE(atomic,
[ --enable-atomic use atomic reference counting header],
[case "${enableval}" in
yes) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
noset) USE_ATOMIC_H=$HAVE_ATOMIC_H;;
no) USE_ATOMIC_H=no;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-atomic) ;;
esac],
[USE_ATOMIC_H=$HAVE_ATOMIC_H]) dnl Default value
AC_ARG_ENABLE(plugin-srcdir,
[ --enable-plugin-srcdir allow tests/demos to use non-installed plugins ],
[case "${enableval}" in
yes) PLUGINS_USE_SRCDIR=yes ;;
no) PLUGINS_USE_SRCDIR=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-srcdir) ;;
esac],
[PLUGINS_USE_SRCDIR=no]) dnl Default value
AC_ARG_ENABLE(debug,
[ --enable-debug compile with -g debugging info],
[case "${enableval}" in
yes) USE_DEBUG=yes ;;
no) USE_DEBUG=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
esac],
[USE_DEBUG=no]) dnl Default value
AC_ARG_ENABLE(debug-verbose,
[ --enable-debug-verbose spews lots of useless debugging info at runtime],
[case "${enableval}" in
yes) USE_DEBUG_VERBOSE=yes ;;
no) USE_DEBUG_VERBOSE=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug-verbose) ;;
esac],
[USE_DEBUG_VERBOSE=no]) dnl Default value
AC_ARG_ENABLE(info,
[ --enable-info spews lots of info at runtime for plugin writers],
[case "${enableval}" in
yes) USE_DEBUG_INFO_VERBOSE=yes ;;
no) USE_DEBUG_INFO_VERBOSE=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-info) ;;
esac],
[USE_DEBUG_INFO_VERBOSE=no]) dnl Default value
AC_ARG_ENABLE(info-system,
[ --disable-info-system disables the info debugging system],
[case "${enableval}" in
yes) DISABLE_DEBUG_INFO=no ;;
no) DISABLE_DEBUG_INFO=yes ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-info) ;;
esac],
[DISABLE_DEBUG_INFO=no]) dnl Default value
AC_ARG_ENABLE(profiling,
[ --enable-profiling adds -pg to compiler commandline, for profiling],
[case "${enableval}" in
yes) USE_PROFILING=yes ;;
no) UES_PROFILING=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-profiling) ;;
esac],
[USE_PROFILING=no]) dnl Default value
dnl Default value
GST_CONFIG_DIR="/etc/gstreamer"
AC_ARG_WITH(configdir,
[ --with-configdir specify path to use for configdir],
[case "${withval}" in
yes) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
no) AC_MSG_ERROR(bad value ${withval} for --with-configdir) ;;
*) GST_CONFIG_DIR="${withval}" ;;
esac],
[:]) dnl Default value
dnl Default value
GST_WIN32_LIBDIR="/usr/lib/win32"
AC_ARG_WITH(win32_libdir,
[ --with-win32-libdir specify location for win32 DLLs],
[case "${withval}" in
yes) AC_MSG_ERROR(bad value ${withval} for --with-win32-libdir) ;;
no) AC_MSG_ERROR(bad value ${withval} for --with-win32-libdir) ;;
*) GST_WIN32_LIBDIR="${withval}" ;;
esac],
[:]) dnl Default value
AC_ARG_ENABLE(docs-build,
[ --enable-docs-build enable the building of the documentation],
[case "${enableval}" in
yes) BUILD_DOCS=yes ;;
no) BUILD_DOCS=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-docs-build) ;;
esac],
[BUILD_DOCS=no]) dnl Default value
dnl ################################################
dnl # Set defines according to variables set above #
dnl ################################################
dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
dnl HAVE_ and it is likely to be easier to stick with the old name
if test "x$USE_GDK_PIXBUF" = xyes; then
AC_DEFINE(HAVE_GDK_PIXBUF)
fi
if test "x$USE_LIBGHTTP" = xyes; then
AC_DEFINE(HAVE_LIBGHTTP)
fi
if test "x$USE_LIBMMX" = xyes; then
AC_DEFINE(HAVE_LIBMMX)
fi
if test "x$USE_ATOMIC_H" = xyes; then
AC_DEFINE(HAVE_ATOMIC_H)
fi
if test "x$PLUGINS_USE_SRCDIR" = xyes; then
AC_DEFINE(PLUGINS_USE_SRCDIR)
fi
if test "x$USE_DEBUG" = xyes; then
Changes made to the DEBUG system. New header file gstdebug.h holds the stuff to keep it out of gst.h's hair. DEBUG ... Original commit message from CVS: Changes made to the DEBUG system. New header file gstdebug.h holds the stuff to keep it out of gst.h's hair. DEBUG prints out the process id, cothread id, source filename and line number. Two new macros DEBUG_ENTER and DEBUG_LEAVE are used to show the entry and exit of a given function. This eventually might be used to construct call trace graphs, even taking cothreads into account. This would be quite useful in visualizing the scheduling mechanism. Minor changes to various debug messages. Also sitting in gstdebug.h is a prototypical DEBUG_ENTER that's capable of performing DEBUG_LEAVE automatically. It does this by utilizing a little-known GCC extension that allows one to call a function with the same parameters as the current function. The macro uses this to basically call itself. A boolean is used to ensure that when it calls itself it actually runs the body of the function. In the meantime it prints stuff out before and after the real function, as well as constructing a debugging string. This can be used eventually to provide call-wide data on the DEBUG lines, instead of having to replicate data on each call to DEBUG. More research is needed into how this would most cleanly be fit into some other chunk of code, like GStreamer (I think of this DEBUG trick as a separate project, sorta). Unfortunately, the aforementioned DEBUG trick interacts quite poorly with cothreads. Almost any time it's used in a function that has anything remotely to do with a cothread context (as in, it runs in one), a segfault results from the __builtin_apply call, which is the heart of the whole thing. If someone who really knows assembly could analyze the resulting code to see what's really going on, we might find a way to fix either the macro or the cothreads (I'm thinking that there's something we missed in constructing the cothreads themselves) so this works in all cases. In the meantime, please insert both DEBUG_ENTER and DEBUG_LEAVE in your functions. Be sure to put DEBUG_ENTER after your variable declarations and before any functional code, not to put the function name in any DEBUG strings (it's already there, trust me), and put a DEBUG_LEAVE if you care enough. Changes are going to happen in the way DEBUGs and other printouts occur, so stay tuned.
2000-12-04 09:35:08 +00:00
CFLAGS="$CFLAGS -g"
fi
if test "x$USE_DEBUG_VERBOSE" = xyes; then
Changes made to the DEBUG system. New header file gstdebug.h holds the stuff to keep it out of gst.h's hair. DEBUG ... Original commit message from CVS: Changes made to the DEBUG system. New header file gstdebug.h holds the stuff to keep it out of gst.h's hair. DEBUG prints out the process id, cothread id, source filename and line number. Two new macros DEBUG_ENTER and DEBUG_LEAVE are used to show the entry and exit of a given function. This eventually might be used to construct call trace graphs, even taking cothreads into account. This would be quite useful in visualizing the scheduling mechanism. Minor changes to various debug messages. Also sitting in gstdebug.h is a prototypical DEBUG_ENTER that's capable of performing DEBUG_LEAVE automatically. It does this by utilizing a little-known GCC extension that allows one to call a function with the same parameters as the current function. The macro uses this to basically call itself. A boolean is used to ensure that when it calls itself it actually runs the body of the function. In the meantime it prints stuff out before and after the real function, as well as constructing a debugging string. This can be used eventually to provide call-wide data on the DEBUG lines, instead of having to replicate data on each call to DEBUG. More research is needed into how this would most cleanly be fit into some other chunk of code, like GStreamer (I think of this DEBUG trick as a separate project, sorta). Unfortunately, the aforementioned DEBUG trick interacts quite poorly with cothreads. Almost any time it's used in a function that has anything remotely to do with a cothread context (as in, it runs in one), a segfault results from the __builtin_apply call, which is the heart of the whole thing. If someone who really knows assembly could analyze the resulting code to see what's really going on, we might find a way to fix either the macro or the cothreads (I'm thinking that there's something we missed in constructing the cothreads themselves) so this works in all cases. In the meantime, please insert both DEBUG_ENTER and DEBUG_LEAVE in your functions. Be sure to put DEBUG_ENTER after your variable declarations and before any functional code, not to put the function name in any DEBUG strings (it's already there, trust me), and put a DEBUG_LEAVE if you care enough. Changes are going to happen in the way DEBUGs and other printouts occur, so stay tuned.
2000-12-04 09:35:08 +00:00
AC_DEFINE(GST_DEBUG_ENABLED)
fi
if test "x$USE_DEBUG_INFO_VERBOSE" = xyes; then
AC_DEFINE(GST_INFO_ENABLED_VERBOSE)
AC_DEFINE(GST_INFO_ENABLED)
else
AC_DEFINE(GST_INFO_ENABLED)
fi
if test "x$DISABLE_DEBUG_INFO" = xyes; then
AC_DEFINE(GST_INFO_FORCE_DISABLE)
fi
if test "x$USE_PROFILING" = xyes; then
CFLAGS="$CFLAGS -pg"
FOMIT_FRAME_POINTER=""
else
FOMIT_FRAME_POINTER="-fomit-frame-pointer"
fi
dnl #############################
dnl # Set automake conditionals #
dnl #############################
dnl These should be "USE_*" instead of "HAVE_*", but some packages expect
dnl HAVE_ and it is likely to be easier to stick with the old name
AM_CONDITIONAL(HAVE_CPU_I386, test "x$HAVE_CPU_I386" = "xyes")
AM_CONDITIONAL(HAVE_CPU_PPC, test "x$HAVE_CPU_PPC" = "xyes")
AM_CONDITIONAL(HAVE_CPU_ALPHA, test "x$HAVE_CPU_ALPHA" = "xyes")
AM_CONDITIONAL(HAVE_CPU_ARM, test "x$HAVE_CPU_ARM" = "xyes")
AM_CONDITIONAL(HAVE_CPU_SPARC, test "x$HAVE_CPU_SPARC" = "xyes")
AM_CONDITIONAL(HAVE_GDK_PIXBUF, test "x$USE_GDK_PIXBUF" = "xyes")
AM_CONDITIONAL(HAVE_LIBGHTTP, test "x$USE_LIBGHTTP" = "xyes")
AM_CONDITIONAL(HAVE_LIBMMX, test "x$USE_LIBMMX" = "xyes")
AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes")
AM_CONDITIONAL(HAVE_XAUDIO, test "x$HAVE_XAUDIO" = "xyes")
AM_CONDITIONAL(HAVE_CSSAUTH, test "x$HAVE_CSSAUTH" = "xyes")
AM_CONDITIONAL(HAVE_VORBIS, test "x$HAVE_VORBIS" = "xyes")
AM_CONDITIONAL(HAVE_LIBJPEG, test "x$HAVE_LIBJPEG" = "xyes")
AM_CONDITIONAL(HAVE_NASM, test "x$HAVE_NASM" = "xyes")
AM_CONDITIONAL(HAVE_LIBGLADE_GNOME, test "x$HAVE_LIBGLADE_GNOME" = "xyes")
AM_CONDITIONAL(HAVE_GNOME, test "x$HAVE_GNOME" = "xyes")
AM_CONDITIONAL(HAVE_LIBXV, test "x$HAVE_LIBXV" = "xyes")
AM_CONDITIONAL(HAVE_GTK_DOC, $HAVE_GTK_DOC)
AM_CONDITIONAL(BUILD_DOCS, test "x$BUILD_DOCS" = "xyes")
AM_CONDITIONAL(HAVE_DB2HTML, $HAVE_DB2HTML)
AM_CONDITIONAL(HAVE_DB2PS, $HAVE_DB2PS)
AM_CONDITIONAL(HAVE_PS2PDF, $HAVE_PS2PDF)
AM_CONDITIONAL(HAVE_FIG2DEV_PNG, $HAVE_FIG2DEV_PNG)
AM_CONDITIONAL(HAVE_FIG2DEV_EPS, $HAVE_FIG2DEV_EPS)
AM_CONDITIONAL(HAVE_CDPARANOIA, test "x$HAVE_CDPARANOIA" = "xyes")
AM_CONDITIONAL(HAVE_LIBLAME, test "x$HAVE_LIBLAME" = "xyes")
AM_CONDITIONAL(HAVE_LIBSHOUT, test "x$HAVE_LIBSHOUT" = "xyes")
AM_CONDITIONAL(HAVE_LIBESD, test "x$HAVE_LIBESD" = "xyes")
AM_CONDITIONAL(HAVE_LIBASOUND, test "x$HAVE_LIBASOUND" = "xyes")
AM_CONDITIONAL(HAVE_MPEG2DEC, test "x$HAVE_MPEG2DEC" = "xyes")
AM_CONDITIONAL(HAVE_LIBXMMS, test "x$HAVE_LIBXMMS" = "xyes")
dnl ############################
dnl # Set up some more defines #
dnl ############################
dnl Set location of configuration dir.
AC_DEFINE_UNQUOTED(GST_CONFIG_DIR,"$GST_CONFIG_DIR")
AC_SUBST(GST_CONFIG_DIR)
dnl Set location of windows dll dir.
AC_DEFINE_UNQUOTED(GST_WIN32_LIBDIR,"$GST_WIN32_LIBDIR")
AC_SUBST(GST_WIN32_LIBDIR)
dnl Set location of plugin directory
if test "x${prefix}" = "xNONE"; then
PLUGINS_DIR=${ac_default_prefix}/lib/gst
else
PLUGINS_DIR=${prefix}/lib/gst
fi
AC_DEFINE_UNQUOTED(PLUGINS_DIR,"$PLUGINS_DIR")
AC_SUBST(PLUGINS_DIR)
dnl Set location of uninstalled plugin directory
PLUGINS_SRCDIR=`pwd`/$srcdir
AC_DEFINE_UNQUOTED(PLUGINS_SRCDIR,"$PLUGINS_SRCDIR")
AC_SUBST(PLUGINS_SRCDIR)
dnl ##############################
dnl # Set up the defaults cflags #
dnl ##############################
dnl CC="kgcc"
CFLAGS="$CORE_CFLAGS $CFLAGS -O6 -Wall"
LIBS="$CORE_LIBS $LIBS"
AC_SUBST(CORE_LIBS)
AC_SUBST(CORE_CFLAGS)
dnl FIXME: having to AC_SUBST these is messy. Not sure if CPPFLAGS and LDFLAGS
dnl need it, either.
dnl Private vars for libgst only
LIBGST_LIBS="$LIBS"
LIBGST_CFLAGS="$CFLAGS"
AC_SUBST(LIBGST_LIBS)
AC_SUBST(LIBGST_CFLAGS)
dnl Vars for everyone else
GST_LIBS="\$(top_builddir)/gst/libgst.la"
GST_CFLAGS="-I\$(top_srcdir) -I\$(top_srcdir)/include"
AC_SUBST(GST_LIBS)
AC_SUBST(GST_CFLAGS)
dnl CFLAGS for everyone else
CFLAGS="$CFLAGS $GST_CFLAGS"
AC_SUBST(LIBS)
AC_SUBST(CFLAGS)
dnl AC_SUBST(CPPFLAGS)
dnl AC_SUBST(LDFLAGS)
dnl #############################
dnl # Configure the subpackages #
dnl #############################
dnl AC_CONFIG_SUBDIRS(gist)
dnl AC_CONFIG_SUBDIRS(plugins/mp3decode/xing/libxing)
dnl #########################
dnl # Make the output files #
dnl #########################
AC_OUTPUT([Makefile
include/Makefile
include/wine/Makefile
gst/Makefile
gst/types/Makefile
gst/meta/Makefile
gst/elements/Makefile
gst/autoplug/Makefile
libs/Makefile
libs/riff/Makefile
libs/colorspace/Makefile
libs/videoscale/Makefile
libs/getbits/Makefile
libs/putbits/Makefile
libs/winloader/Makefile
libs/idct/Makefile
plugins/Makefile
plugins/au/Makefile
plugins/alsa/Makefile
plugins/wav/Makefile
plugins/avi/Makefile
plugins/avi/wincodec/Makefile
plugins/jpeg/Makefile
plugins/mp3decode/Makefile
plugins/mp3decode/types/Makefile
plugins/mp3decode/xa/Makefile
plugins/mp3decode/mpg123/Makefile
plugins/mp3decode/parse/Makefile
plugins/mp3encode/Makefile
plugins/mp3encode/lame/Makefile
plugins/mpeg2/Makefile
plugins/mpeg2/parse/Makefile
plugins/mpeg2/ac3parse/Makefile
plugins/mpeg2/ac3dec/Makefile
plugins/mpeg2/video/Makefile
plugins/mpeg2/mpeg2enc/Makefile
plugins/mpeg2/mpeg2dec/Makefile
plugins/mpeg2/subtitles/Makefile
plugins/mpeg2/videoparse/Makefile
plugins/mpeg2/mpegtypes/Makefile
plugins/mpeg1/Makefile
plugins/mpeg1/mpegtypes/Makefile
plugins/mpeg1/mpeg_play/Makefile
plugins/mpeg1/mpegaudio/Makefile
plugins/mpeg1/parse/Makefile
plugins/mpeg1/system_encode/Makefile
plugins/mpeg1/mpeg1encoder/Makefile
plugins/mpeg1video/Makefile
plugins/mpeg1video/parse/Makefile
plugins/filters/Makefile
plugins/filters/smooth/Makefile
plugins/filters/median/Makefile
plugins/filters/ladspa/Makefile
plugins/icecast/Makefile
plugins/icecast/icecastsend/Makefile
plugins/effects/Makefile
plugins/effects/stereo/Makefile
plugins/effects/volume/Makefile
plugins/visualization/Makefile
plugins/visualization/spectrum/Makefile
plugins/visualization/vumeter/Makefile
plugins/visualization/synaesthesia/Makefile
plugins/visualization/smoothwave/Makefile
plugins/videosink/Makefile
plugins/videoscale/Makefile
plugins/audioscale/Makefile
plugins/dvdsrc/Makefile
plugins/vcdsrc/Makefile
plugins/rtjpeg/Makefile
plugins/vorbis/Makefile
plugins/capture/Makefile
plugins/capture/v4l/Makefile
plugins/cdparanoia/Makefile
plugins/esd/Makefile
plugins/esd/esdsink/Makefile
plugins/xmms/Makefile
gstplay/Makefile
dnl components/bonobo-gstmediaplay/Makefile
test/Makefile
test/xml/Makefile
test/bindings/Makefile
tests/Makefile
tests/sched/Makefile
tests/eos/Makefile
testsuite/Makefile
examples/Makefile
examples/autoplug/Makefile
examples/helloworld/Makefile
examples/helloworld2/Makefile
examples/launch/Makefile
examples/queue/Makefile
examples/queue2/Makefile
examples/queue3/Makefile
examples/queue4/Makefile
examples/thread/Makefile
examples/launch/Makefile
examples/xml/Makefile
examples/plugins/Makefile
examples/typefind/Makefile
editor/Makefile
editor/pixmaps/Makefile
tools/Makefile
docs/Makefile
docs/gst/Makefile
docs/gst/gstreamer.types
docs/libs/Makefile
docs/plugins/Makefile
docs/plugins/gstreamer-plugins.types
docs/manual/Makefile
docs/fwg/Makefile
debian/Makefile
stamp.h
gstreamer-config
gstreamer.spec])
AC_OUTPUT_COMMANDS([chmod +x gstreamer-config])