From 754313ab71cd4cb046191b3459842a063fd3642b Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Mon, 17 Dec 2001 18:37:01 +0000 Subject: building up speed Original commit message from CVS: building up speed --- INSTALL | 182 +++++++++ Makefile.am | 3 + acconfig.h | 60 +++ autogen.sh | 167 ++++++++ configure.ac | 1219 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 1631 insertions(+) create mode 100644 INSTALL create mode 100644 Makefile.am create mode 100644 acconfig.h create mode 100755 autogen.sh create mode 100644 configure.ac diff --git a/INSTALL b/INSTALL new file mode 100644 index 00000000..b42a17ac --- /dev/null +++ b/INSTALL @@ -0,0 +1,182 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 00000000..4d74b8a8 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,3 @@ +SUBDIRS=sys + +DIST_SUBDIRS=sys diff --git a/acconfig.h b/acconfig.h new file mode 100644 index 00000000..0b2f1651 --- /dev/null +++ b/acconfig.h @@ -0,0 +1,60 @@ +#undef PACKAGE +#undef VERSION +#undef GST_VERSION_RELEASE + +/* Gettext stuff */ +#undef ENABLE_NLS +#undef HAVE_CATGETS +#undef HAVE_GETTEXT +#undef HAVE_LC_MESSAGES +#undef HAVE_STPCPY + +#undef USE_GLIB2 +#undef HAVE_LIBXML2 + +#undef PLUGINS_DIR +#undef PLUGINS_BUILDDIR +#undef PLUGINS_USE_BUILDDIR + +#undef GST_CONFIG_DIR +#undef GST_WIN32_LIBDIR + +#undef HAVE_CPU_I386 +#undef HAVE_CPU_PPC +#undef HAVE_CPU_ALPHA +#undef HAVE_CPU_ARM +#undef HAVE_CPU_SPARC + +#undef HAVE_RDTSC + +#undef HAVE_LIBGHTTP +#undef HAVE_LIBMMX +#undef HAVE_LIBXV +#undef HAVE_OSS +#undef HAVE_XAUDIO +#undef HAVE_LIBDVDREAD +#undef HAVE_VORBIS +#undef HAVE_AALIB +#undef HAVE_LIBMAD +#undef HAVE_LIBMIKMOD +#undef HAVE_LIBJPEG +#undef HAVE_LIBGSM +#undef HAVE_LIBSDL +#undef HAVE_LIBHERMES +#undef HAVE_NASM +#undef HAVE_A52DEC +#undef HAVE_MPEG2DEC +#undef HAVE_FLACLIB +#undef HAVE_LIBRTP +#undef HAVE_LINUX_CDROM +#undef HAVE_LINUX_VIDEODEV +#undef HAVE_LIBSDL +#undef HAVE_LIBOPENQUICKTIME + +#undef HAVE_ATOMIC_H + +#undef GST_DEBUG_ENABLED +#undef GST_INFO_ENABLED +#undef GST_DEBUG_COLOR + +#undef GST_DISABLE_LOADSAVE diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 00000000..dd362f03 --- /dev/null +++ b/autogen.sh @@ -0,0 +1,167 @@ +#!/bin/bash +# Run this to generate all the initial makefiles, etc. + +DIE=0 +package=gstreamer-plugins +srcfile=own/sinesrc/gstsinesrc.c +#DEBUG=defined +if test "x$1" = "x-d"; then echo "+ debug output enabled"; DEBUG=defined; fi + +debug () +# print out a debug message if DEBUG is a defined variable +{ + if test ! -z "$DEBUG" + then + echo "DEBUG: $1" + fi +} + +version_check () +# check the version of a package +# first argument : package name (executable) +# second argument : source download url +# rest of arguments : major, minor, micro version +{ + PACKAGE=$1 + URL=$2 + MAJOR=$3 + MINOR=$4 + MICRO=$5 + + WRONG= + + debug "major $MAJOR minor $MINOR micro $MICRO" + VERSION=$MAJOR + if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi + if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi + + debug "major $MAJOR minor $MINOR micro $MICRO" + echo -n "+ checking for $1 >= $VERSION ... " + ($PACKAGE --version) < /dev/null > /dev/null 2>&1 || + { + echo + echo "You must have $PACKAGE installed to compile $package." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at $URL" + return 1 + } + # the following line is carefully crafted sed magic + pkg_version=`$PACKAGE --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'` + debug "pkg_version $pkg_version" + pkg_major=`echo $pkg_version | cut -d. -f1` + pkg_minor=`echo $pkg_version | cut -d. -f2` + pkg_micro=`echo $pkg_version | cut -d. -f3` + test -z "$pkg_minor" && pkg_minor=0 + test -z "$pkg_micro" && pkg_micro=0 + + debug "found major $pkg_major minor $pkg_minor micro $pkg_micro" + + #start checking the version + debug "version check" + + if [ ! "$pkg_major" \> "$MAJOR" ]; then + debug "$pkg_major <= $MAJOR" + if [ "$pkg_major" \< "$MAJOR" ]; then + WRONG=1 + elif [ ! "$pkg_minor" \> "$MINOR" ]; then + if [ "$pkg_minor" \< "$MINOR" ]; then + WRONG=1 + elif [ "$pkg_micro" \< "$MICRO" ]; then + WRONG=1 + fi + fi + fi + + if test ! -z "$WRONG"; then + echo "found $pkg_version, not ok !" + echo + echo "You must have $PACKAGE $VERSION or greater to compile $package." + echo "Get the latest version from $URL" + return 1 + else + echo "found $pkg_version, ok." + fi +} + +# autoconf 2.52d has a weird issue involving a yes:no error +# so don't allow it's use +ac_version=`autoconf --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'` +if test "$ac_version" = "2.52d"; then + echo "autoconf 2.52d has an issue with our current build." + echo "We don't know who's to blame however. So until we do, get a" + echo "regular version. RPM's of a working version are on the gstreamer site." + exit 1 +fi + + +version_check "autoconf" "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 52 || DIE=1 +version_check "automake" "ftp://ftp.gnu.org/pub/gnu/automake/" 1 5 || DIE=1 +version_check "libtool" "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 4 0 || DIE=1 +version_check "pkg-config" "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1 + +if test "$DIE" -eq 1; then + exit 1 +fi + +test -f $srcfile || { + echo "You must run this script in the top-level $package directory" + exit 1 +} + +if test -z "$*"; then + echo "I am going to run ./configure with no arguments - if you wish " + echo "to pass any to it, please specify them on the $0 command line." +fi + +echo "+ creating acinclude.m4" +cat m4/*.m4 > acinclude.m4 + +echo "+ running aclocal ..." +aclocal $ACLOCAL_FLAGS || { + echo + echo "aclocal failed - check that all needed development files are present on system" + exit 1 +} + +# FIXME : why does libtoolize keep complaining about aclocal ? +echo "+ running libtoolize ..." +libtoolize --copy --force + +echo "+ running autoheader ... " +autoheader || { + echo + echo "autoheader failed" + exit 1 +} +echo "+ running autoconf ... " +autoconf || { + echo + echo "autoconf failed" + exit 1 +} +echo "+ running automake ... " +automake -a -c || { + echo + echo "automake failed" + exit 1 +} + +# now remove the cache, because it can be considered dangerous in this case +#echo "+ removing config.cache ... " +#rm -f config.cache + +CONFIGURE_OPT='--enable-maintainer-mode --enable-plugin-builddir --enable-debug --enable-DEBUG' + +echo "+ running configure ... " +echo "./configure default flags: $CONFIGURE_OPT" +echo "using: $CONFIGURE_OPT $@" +echo + +./configure $CONFIGURE_OPT "$@" || { + echo + echo "configure failed" + exit 1 +} + +echo +echo "Now type 'make' to compile $package." diff --git a/configure.ac b/configure.ac new file mode 100644 index 00000000..2c749a1b --- /dev/null +++ b/configure.ac @@ -0,0 +1,1219 @@ +dnl autoconf configuration file for plugins +AC_INIT +AC_CONFIG_SRCDIR([configure.ac]) + +AC_CANONICAL_TARGET([]) + +AM_CONFIG_HEADER(config.h) + +GST_VERSION_MAJOR=0 +GST_VERSION_MINOR=3 +GST_VERSION_MICRO=02 + +dnl we use the release tag during CVS development +GST_VERSION_RELEASE=`date +%Y%m%d` + +GST_VERSION=$GST_VERSION_MAJOR.$GST_VERSION_MINOR.$GST_VERSION_MICRO + +PACKAGE=gstreamer-plugins +VERSION=$GST_VERSION + +AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") +AC_DEFINE_UNQUOTED(VERSION, "$VERSION") +AC_SUBST(PACKAGE) +AC_SUBST(VERSION) +AC_DEFINE_UNQUOTED(GST_VERSION_RELEASE, "$GST_VERSION_RELEASE") +AC_SUBST(GST_VERSION_RELEASE) + +dnl libtool +GST_CURRENT=1 +GST_REVISION=0 +GST_AGE=0 +GST_LIBVERSION=$GST_CURRENT:$GST_REVISION:$GST_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(GST_VERSION_MAJOR) +AC_SUBST(GST_VERSION_MINOR) +AC_SUBST(GST_VERSION_MICRO) +AC_SUBST(GST_VERSION) + +AC_SUBST(GST_CURRENT) +AC_SUBST(GST_REVISION) +AC_SUBST(GST_AGE) +AC_SUBST(GST_LIBVERSION) + +AM_MAINTAINER_MODE + +AC_PROG_CC +AM_PROG_CC_STDC +AM_PROG_AS +AS="${CC}" +AC_PROG_CXX +AC_PROG_CXXCPP +AC_ISC_POSIX + +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 + +AC_HEADER_STDC([]) + +dnl ########################################### +dnl # Super Duper options for plugin building # +dnl ########################################### + +dnl experimental plugins; stuff that hasn't had the dust settle yet +AC_ARG_ENABLE(experimental, +[ --enable-experimental enable building of experimental plugins], +[case "${enableval}" in + yes) EXPERIMENTAL="yes" ;; + no) EXPERIMENTAL="no" ;; +esac], +[EXPERIMENTAL=no]) dnl Default value + +if test "x$EXPERIMENTAL" = "$xyes"; then + AC_MSG_WARN(building experimental plugins) + USE_LIBMIKMOD="yes" +else + AC_MSG_NOTICE(not building experimental plugins) + USE_LIBMIKMOD="no" +fi + +dnl broken plugins; stuff that doesn't seem to build at the moment +AC_ARG_ENABLE(broken, +[ --enable-broken enable building of broken plugins], +[case "${enableval}" in + yes) BROKEN="yes" ;; + no) BROKEN="no" ;; +esac], +[BROKEN=no]) dnl Default value + +if test "x$broken-plugins" = "$xyes"; then + AC_MSG_WARN(building broken plugins) + USE_ARTS="yes" + USE_ARTSC="yes" +else + AC_MSG_NOTICE(not building broken plugins) + USE_ARTS="no" + USE_ARTSC="no" +fi + + + +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, 1, [Define if NASM, the netwide assembler, is available]) + HAVE_NASM="yes" +fi + +dnl fix pkg-config's broken default search path +if test -z $PKG_CONFIG_PATH; then + PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig +fi +export PKG_CONFIG_PATH + +dnl Check for pkgconfig +AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, true, false) + +dnl dnl check for gtk-doc +dnl AC_ARG_WITH(html-dir, [ --with-html-dir=PATH path to installed docs ]) +dnl +dnl if test "x$with_html_dir" = "x" ; then +dnl HTML_DIR='${datadir}/gst/html' +dnl else +dnl HTML_DIR=$with_html_dir +dnl fi +dnl +dnl AC_SUBST(HTML_DIR) +dnl +dnl AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-mkdb, true, false) +dnl gtk_doc_min_version=0.6 +dnl if $HAVE_GTK_DOC ; then +dnl gtk_doc_version=`gtkdoc-mkdb --version` +dnl AC_MSG_CHECKING([gtk-doc version ($gtk_doc_version) >= $gtk_doc_min_version]) +dnl if perl <= "$gtk_doc_min_version") ? 0 : 1); +dnl EOF +dnl AC_MSG_RESULT(yes) +dnl else +dnl AC_MSG_RESULT(no) +dnl HAVE_GTK_DOC=false +dnl fi +dnl fi +dnl GTK_DOC_SCANOBJ=gtkdoc-scanobj +dnl +dnl AC_SUBST(HAVE_GTK_DOC) +dnl AC_SUBST(GTK_DOC_SCANOBJ) +dnl +dnl dnl check for docbook tools +dnl AC_CHECK_PROG(HAVE_XSLTPROC, xsltproc, true, false) +dnl AC_CHECK_PROG(HAVE_PDFTOPS, pdftops, true, false) +dnl dnl this does not yet work properly, at least on debain -- wingo +dnl HAVE_PDFXMLTEX=false +dnl +dnl dnl check for image conversion tool +dnl AC_CHECK_PROG(HAVE_FIG2DEV, fig2dev, true, false) +dnl +dnl dnl The following is a hack: if fig2dev doesn't display an error message +dnl dnl for the desired type, we assume it supports it. +dnl HAVE_FIG2DEV_PNG=false +dnl if test "x$HAVE_FIG2DEV" = "xtrue" ; then +dnl fig2dev_quiet=`fig2dev -L png &1 >/dev/null` +dnl if test "x$fig2dev_quiet" = "x" ; then +dnl HAVE_FIG2DEV_PNG=true +dnl fi +dnl fi +dnl HAVE_FIG2DEV_PDF=false +dnl if test "x$HAVE_FIG2DEV" = "xtrue" ; then +dnl fig2dev_quiet=`fig2dev -L pdf &1 >/dev/null` +dnl if test "x$fig2dev_quiet" = "x" ; then +dnl HAVE_FIG2DEV_PDF=true +dnl fi +dnl fi +dnl + +dnl Set up conditionals for (target) architecture: +dnl ============================================== + +dnl Determine CPU +case "x${target_cpu}" in + xi?86 | k?) HAVE_CPU_I386=yes + AC_DEFINE(HAVE_CPU_I386, 1, [Define if the target CPU is an x86]) + dnl FIXME could use some better detection + dnl (ie CPUID) + case "x${target_cpu}" in + xi386 | xi486) ;; + *) AC_DEFINE(HAVE_RDTSC) ;; + esac ;; + xpowerpc) HAVE_CPU_PPC=yes + AC_DEFINE(HAVE_CPU_PPC, 1, [Define if the target CPU is a PPC]) ;; + xalpha) HAVE_CPU_ALPHA=yes + AC_DEFINE(HAVE_CPU_ALPHA, 1, [Define if the target CPU is an Alpha]) ;; + xarm*) HAVE_CPU_ARM=yes + AC_DEFINE(HAVE_CPU_ARM, 1, [Define if the target CPU is an ARM]) ;; + xsparc*) HAVE_CPU_SPARC=yes + AC_DEFINE(HAVE_CPU_SPARC, 1, [Define if the target CPU is a PPC]) ;; + xmips*) HAVE_CPU_MIPS=yes + AC_DEFINE(HAVE_CPU_MIPS, 1, [Define if the target CPU is a MIPS]) ;; + xhppa*) HAVE_CPU_HPPA=yes + AC_DEFINE(HAVE_CPU_HPPA, 1, [Define if the target CPU is a HPPA]) ;; +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 +dnl We should really use AC_SYS_LARGEFILE, but the problem is +dnl many of the plugins don't include "config.h". To assure +dnl binary compatibility, it is necessary that all gstreamer +dnl code be compiled with the same sizeof(off_t), so we use +dnl the following crude hack. +dnl + +AC_MSG_CHECKING(for large file support) +AC_TRY_RUN([ +#define _LARGEFILE_SOURCE +#define _FILE_OFFSET_BITS 64 +#include +int main () { return !(sizeof(off_t) == 8); } +], +[ +AC_MSG_RESULT(yes) +GST_CFLAGS="$GST_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" +], +[ +AC_MSG_RESULT(no) +], +[ +AC_MSG_RESULT(no) +]) + +dnl Check for essential libraries first: +dnl ==================================== + +dnl Check for glib2 +translit(dnm, m, l) AM_CONDITIONAL(USE_GLIB2, true) +GST_CHECK_FEATURE(GLIB2, [use of glib-2.0 and GObject], , [ + PKG_CHECK_MODULES(GLIB2, glib-2.0 gobject-2.0 gthread-2.0 gmodule-2.0, + HAVE_GLIB2=yes,HAVE_GLIB2=no) + GLIB_LIBS=$GLIB2_LIBS + GLIB_CFLAGS=$GLIB2_CFLAGS + AC_SUBST(GLIB_LIBS) + AC_SUBST(GLIB_CFLAGS) +], disabled, [ + AC_DEFINE(USE_GLIB2) + GST_CFLAGS="$GST_CFLAGS -DUSE_GLIB2" +]) +AC_SUBST(USE_GLIB2) + +if test x$USE_GLIB2 = xno; then + GST_PKG_DEPS="glib >= 1.2.0, gtk+ >= 1.2.0" + + dnl Check for glib and gtk + AM_PATH_GLIB(1.2.0,, + AC_MSG_ERROR(Cannot find glib: Is glib-config in path?), + glib gmodule gthread) + AM_PATH_GTK(1.2.0,, + AC_MSG_ERROR(Cannot find gtk: Is gtk-config in path?)) + HAVE_GTK=yes + + GLIB_LIBS="$GLIB_LIBS $GTK_LIBS" + GLIB_CFLAGS="$GLIB_CFLAGS $GTK_CFLAGS" +else + GST_PKG_DEPS="glib-2.0 gobject-2.0 gmodule-2.0 gthread-2.0" + + PKG_CHECK_MODULES(GTK2, gtk+-2.0, HAVE_GTK=yes, HAVE_GTK=no) + + GTK_FLAGS=$GTK2_CFLAGS + GTK_LIBS=$GTK2_LIBS + + if $HAVE_GTK_DOC; then + AC_CHECK_PROG(HAVE_GTK_DOC, gtkdoc-scangobj, true, false) + if $HAVE_GTK_DOC; then + GTK_DOC_SCANOBJ=gtkdoc-scangobj + fi; + fi + + dnl FIXME: check for gnome2 - this conditional is currently + dnl always false. + AM_CONDITIONAL(USE_GNOME2, test "x$USE_GNOME2" = "xyes") + AC_SUBST(USE_GNOME2) +fi + +AC_SUBST(GST_PKG_DEPS) +AC_SUBST(GTK_LIBS) +AC_SUBST(GTK_CFLAGS) + +dnl Check for libxml +if test x$USE_GLIB2 = xno; then + LIBXML_PKG='libxml >= 1.8.1' + AC_PATH_PROG(XML_CONFIG, xml-config, no) + if test x$XML_CONFIG = xno; then + AC_MSG_ERROR(Couldn't find $LIBXML_PKG) + fi + XML_LIBS="`xml-config --libs`" + XML_CFLAGS="`xml-config --cflags`" + AC_CHECK_LIB(xml, xmlDocGetRootElement, :, + [ AC_MSG_ERROR(Need version 1.8.1 or better of libxml) ], + $XML_LIBS) +else + LIBXML_PKG='libxml-2.0' + PKG_CHECK_MODULES(XML, $LIBXML_PKG, XML_CONFIG=yes, XML_CONFIG=no) + AC_PATH_PROG(XML_CONFIG, xml-config, no) + AC_DEFINE(HAVE_LIBXML2) + GST_CFLAGS="$GST_CFLAGS -DHAVE_LIBXML2" +fi +AC_SUBST(LIBXML_PKG) +AC_SUBST(XML_LIBS) +AC_SUBST(XML_CFLAGS) + +dnl ========================================================================== +dnl ========================= Macro definitions ============================== +dnl ========================================================================== + +dnl These macros should be moved out to separate files (acinclude.m4?), but +dnl can't currently be because of the SUBSTFOR magic. + +dnl Perform a check for existence of ARTS +dnl Richard Boulton +dnl Last modification: 26/06/2001 +dnl GST_CHECK_FEATURE(FEATURE-NAME, FEATURE-DESCRIPTION, +dnl DEPENDENT-PLUGINS, TEST-FOR-FEATURE) +dnl +dnl This check was written for GStreamer: it should be renamed and checked +dnl for portability if you decide to use it elsewhere. +dnl +AC_DEFUN(GST_CHECK_ARTS, +[ +dnl Set the flags +ARTS_LIBS="-L/usr/local/lib -L/usr/lib -lmcop -lartsflow -lartsflow_idl" +ARTS_CFLAGS="-I/usr/local/include/arts -I/usr/include/kde/arts -I/usr/include/arts" +ARTS_MCOPFLAGS=$ARTS_CFLAGS +dnl There's no arts-config script, so we make a guess based on the artsc-config +AC_PATH_PROG(ARTSC_CONFIG, artsc-config, no) +if test x$ARTSC_CONFIG = xyes; then + ARTS_ARTSC_CFLAGS=`artsc-config --cflags | sed 's/artsc/arts/g'` + ARTS_CFLAGS="$ARTS_CFLAGS $ARTS_ARTSC_CFLAGS" + ARTS_MCOPFLAGS="$ARTS_MCOPFLAGS $ARTS_ARTSC_CFLAGS" +fi +AC_SUBST(ARTS_LIBS) +AC_SUBST(ARTS_CFLAGS) +AC_SUBST(ARTS_MCOPFLAGS) + +dnl Now check if it exists +AC_LANG_PUSH(C++) +HAVE_ARTS=yes +dnl FIXME: Can't get this test to pass, so commented it out. Rely on header check. +dnl AC_CHECK_LIB(artsflow, convert_stereo_2float_i16le, :, HAVE_ARTS=no, $LIBS) + +dnl AC_CHECK_HEADER uses CPPFLAGS, but not CFLAGS. +dnl FIXME: ensure only suitable flags result from artsc-config --cflags +AC_CHECK_HEADER(artsflow.h, :, HAVE_ARTS=no) + +AC_LANG_POP(C++) +dnl Check for the idl generator +AC_CHECK_PROG(HAVE_MCOPIDL, mcopidl, yes, no) +if test x$HAVE_MCOPIDL = xno; then + HAVE_ARTS=no +fi +]) + +dnl ========================================================================== +dnl ========================= End macro definitions ========================== +dnl ========================================================================== + + +dnl Next, check for the optional libraries: +dnl These are all libraries used in building plugins +dnl ================================================ +dnl let's try and sort them alphabetically, shall we ? + +echo +echo +AC_MSG_NOTICE(Checking for plugin libraries) + +dnl *** a52dec *** +translit(dnm, m, l) AM_CONDITIONAL(USE_A52DEC, true) +GST_CHECK_FEATURE(A52DEC, [a52dec], a52dec, [ +GST_CHECK_LIBHEADER(A52DEC, a52, a52_init, -lm, a52dec/a52.h, A52DEC_LIBS="-la52") +]) + +dnl *** aalib *** +translit(dnm, m, l) AM_CONDITIONAL(USE_AALIB, true) +GST_CHECK_FEATURE(AALIB, [aasink plugin], aasink, [ + AM_PATH_AALIB(, HAVE_AALIB=yes, HAVE_AALIB=no) +]) + +dnl *** alsa *** +translit(dnm, m, l) AM_CONDITIONAL(USE_ALSA, true) +GST_CHECK_FEATURE(ALSA, [alsa plugins], gstalsa, [ +AM_PATH_ALSA(0.9.0, HAVE_ALSA=yes, HAVE_ALSA=no) +]) + +dnl *** arts *** +dnl translit(dnm, m, l) AM_CONDITIONAL(USE_ARTS, true) +dnl GST_CHECK_FEATURE(ARTS, [arts plugins], arts, [GST_CHECK_ARTS()]) + +dnl *** artsc *** +dnl translit(dnm, m, l) AM_CONDITIONAL(USE_ARTSC, true) +dnl GST_CHECK_FEATURE(ARTSC, [artsd plugins], artsdsink, [GST_CHECK_ARTSC()]) + +dnl *** audiofile *** +dnl this check uses the GST_CHECK_CONFIGPROG macro +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBAUDIOFILE, true) +GST_CHECK_FEATURE(LIBAUDIOFILE, [audiofile], afsink afsrc, [ +translit(dnm, m, l) AC_SUBST(LIBAUDIOFILE_LIBS) +translit(dnm, m, l) AC_SUBST(LIBAUDIOFILE_CFLAGS) +GST_CHECK_CONFIGPROG(LIBAUDIOFILE, audiofile-config) +]) + +dnl *** avifile *** +dnl this check uses the GST_CHECK_CONFIGPROG macro +translit(dnm, m, l) AM_CONDITIONAL(USE_AVIFILE, true) +GST_CHECK_FEATURE(AVIFILE, [avifile], windec winenc, [ +translit(dnm, m, l) AC_SUBST(AVIFILE_LIBS) +translit(dnm, m, l) AC_SUBST(AVIFILE_CFLAGS) +GST_CHECK_CONFIGPROG(AVIFILE, avifile-config) +]) + +dnl *** CDParanoia *** +translit(dnm, m, l) AM_CONDITIONAL(USE_CDPARANOIA, true) +GST_CHECK_FEATURE(CDPARANOIA, [CDParanoia], cdparanoia, [ + GST_CHECK_LIBHEADER(CDPARANOIA, cdda_interface, cdda_open, , cdda_interface.h, CDPARANOIA_LIBS="-lcdda_interface -lcdda_paranoia") +]) +dnl FIXME : add second check somehow if that is necessary +dnl AC_CHECK_LIB(cdda_paranoia, paranoia_init, : , HAVE_CDPARANOIA=no, -lcdda_interface ) +dnl AC_CHECK_HEADER(cdda_paranoia.h, :, HAVE_CDPARANOIA=no) + +dnl *** dvdread *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDVDREAD, true) +GST_CHECK_FEATURE(LIBDVDREAD, [dvdread library], libdvdread, [ + GST_CHECK_LIBHEADER(LIBDVDREAD, dvdread, DVDOpen, , dvdread/dvd_reader.h, LIBDVDREAD_LIBS="-ldvdread") +]) + +dnl **** ESound **** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBESD, true) +GST_CHECK_FEATURE(LIBESD, [esound plugins], esdsrc esdsink, [ + AM_PATH_ESD(0.2.12, HAVE_LIBESD=yes, HAVE_LIBESD=no) +]) + +dnl *** FLAC *** +dnl thomas : checking for compile with main instead of actual function, +dnl since that made autoconf break (for version 2.13) +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBFLAC, true) +GST_CHECK_FEATURE(FLACLIB, [FLAC lossless audio], flacenc flacdec, [ + GST_CHECK_LIBHEADER(FLACLIB, FLAC, main, -lm, FLAC/all.h, LIBFLAC_LIBS="-lFLAC") +]) + +dnl +dnl *** Gnome VFS *** +dnl this check uses the GST_CHECK_CONFIGPROG macro with gnome-config vfs +translit(dnm, m, l) AM_CONDITIONAL(USE_GNOME_VFS, true) +GST_CHECK_FEATURE(GNOME_VFS, [Gnome VFS], gnomevfssrc, [ +translit(dnm, m, l) AC_SUBST(GNOME_VFS_LIBS) +translit(dnm, m, l) AC_SUBST(GNOME_VFS_CFLAGS) +GST_CHECK_CONFIGPROG(GNOME_VFS, gnome-config vfs) +]) + +dnl *** gsm *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBGSM, true) +GST_CHECK_FEATURE(LIBGSM, [GSM library], gsmenc gsmdec, [ +GST_CHECK_LIBHEADER(LIBGSM, gsm, gsm_create, , gsm/gsm.h, LIBGSM_LIBS="-lgsm") +]) + +dnl *** Hermes *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBHERMES, true) +GST_CHECK_FEATURE(LIBHERMES, [Hermes library], colorspace, [ +GST_CHECK_LIBHEADER(LIBHERMES, Hermes, Hermes_ConverterInstance, , Hermes/Hermes.h, LIBHERMES_LIBS="-lHermes") +], AC_SUBST(LIBHERMES_LIBS)) + +dnl *** lame *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBLAME, true) +GST_CHECK_FEATURE(LIBLAME, [lame mp3 encoder library], lame, [ +GST_CHECK_LIBHEADER(LIBLAME, mp3lame, lame_init, -lm, lame/lame.h, LIBLAME_LIBS="-lmp3lame") +]) + +dnl AC_SUBST(HAVE_LIBLAME) + +dnl *** libdv *** +dnl FIXME : check if those GLIB thingies are ok +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBDV, true) +GST_CHECK_FEATURE(LIBDV, [dv library], dv, [ +GST_CHECK_LIBHEADER(LIBDV, dv, dv_init, -lm $GLIB_LIBS $GLIB_CFLAGS, libdv/dv.h, LIBDV_LIBS="-ldv") +]) +dnl FIXME : check if these CPP flags can be dealt with otherwise +dnl libdvcheck_save_CPPFLAGS="$CPPFLAGS" +dnl CPPFLAGS="$CPPFLAGS $GLIB_CFLAGS" +dnl AC_CHECK_HEADER(libdv/dv.h, :, HAVE_LIBDV=no) +dnl CPPFLAGS="$libdvcheck_save_CPPFLAGS" + +dnl *** libjpeg *** +dnl FIXME: we could use header checks here as well IMO +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBJPEG, true) +GST_CHECK_FEATURE(LIBJPEG, [libjpeg], jpegenc jpegdec, [ + AC_CHECK_LIB(jpeg, jpeg_set_defaults, HAVE_LIBJPEG="yes", HAVE_LIBJPEG="no") +]) + +dnl *** mad *** +dnl FIXME: we could use header checks here as well IMO +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMAD, true) +GST_CHECK_FEATURE(LIBMAD, [mad], mad, [ +AC_CHECK_LIB(mad, mad_decoder_finish, HAVE_LIBMAD="yes") +]) + +dnl *** mikmod *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBMIKMOD, true) +GST_CHECK_FEATURE(LIBMIKMOD, [mikmod plugin], mikmod, [ + AM_PATH_LIBMIKMOD(, HAVE_LIBMIKMOD=yes, HAVE_LIBMIKMOD=no) +]) + +dnl *** mpeg2dec *** +translit(dnm, m, l) AM_CONDITIONAL(USE_MPEG2DEC, true) +GST_CHECK_FEATURE(MPEG2DEC, [mpeg2dec], mpeg2dec, [ + GST_CHECK_LIBHEADER(MPEG2DEC, mpeg2, mpeg2_init,, mpeg2dec/mpeg2.h, MPEG2DEC_LIBS="-lmpeg2") +]) + +dnl *** OSS audio *** +translit(dnm, m, l) AM_CONDITIONAL(USE_OSS, true) +GST_CHECK_FEATURE(OSS, [OSS audio], osssrc osssink, [ + AC_CHECK_HEADER(sys/soundcard.h, HAVE_OSS="yes", HAVE_OSS="no") +]) + +dnl *** quicktime *** +dnl FIXME: make this be called openquicktime +translit(dnm, m, l) AM_CONDITIONAL(USE_QUICKTIME, true) +GST_CHECK_FEATURE(QUICKTIME, [Open Quicktime], quicktime_parser quicktime_decoder quicktime_demux,[ + GST_CHECK_LIBHEADER(QUICKTIME, openquicktime, quicktime_init,, openquicktime/openquicktime.h, QUICKTIME_LIBS="-lopenquicktime") +]) + +dnl *** raw1394 *** +translit(dnm, m, l) AM_CONDITIONAL(USE_RAW1394, true) +GST_CHECK_FEATURE(RAW1394, [raw1394 library], dv1394src, [ + GST_CHECK_LIBHEADER(RAW1394, raw1934, raw1934_get_handle,, libraw1394/raw1394.h, RAW1394_LIBS="-raw1394") +]) + +dnl Check for librtp +dnl FIXME : adapt and make it work +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBRTP, true) +GST_CHECK_FEATURE(LIBRTP, [RTP library], rtpenc rtpdec,[ + AC_CHECK_LIB(rtp, rtp_packet_new_take_data, HAVE_LIBRTP=yes, HAVE_LIBRTP=no, $GLIB_LIBS $GLIB_CFLAGS) +]) +dnl FIXME header check needs to use GLIB_CFLAGS in order to succeed for rtp +dnl AC_CHECK_HEADERS(rtp/rtp.h, HAVE_LIBRTP=yes, HAVE_LIBRTP=no) +dnl AC_CHECK_HEADERS(rtp/rtp-packet.h, :, HAVE_LIBRTP=no) +dnl AC_CHECK_HEADERS(rtp/rtcp-packet.h, :, HAVE_LIBRTP=no) +dnl AC_CHECK_HEADERS(rtp/rtp-audio.h, :, HAVE_LIBRTP=no) + + +dnl *** SDL *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBSDL, true) +GST_CHECK_FEATURE(LIBSDL, [SDL plugin], sdlvideosink, [ + AM_PATH_SDL(, HAVE_LIBSDL=yes, HAVE_LIBSDL=no) +]) + +dnl *** shout *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBSHOUT, true) +GST_CHECK_FEATURE(LIBSHOUT, [shout plugin], icecastsend, [ + GST_CHECK_LIBHEADER(LIBSHOUT, shout, shout_init_connection,, shout/shout.h, LIBSHOUT_LIBS="-lshout") +]) + +dnl for sidplay +dnl FIXME : make this work +dnl AC_PATH_LIBSIDPLAY + + +dnl *** vorbis *** +dnl AM_PATH_VORBIS only takes two options +translit(dnm, m, l) AM_CONDITIONAL(USE_VORBIS, true) +GST_CHECK_FEATURE(VORBIS, [vorbis plugin], vorbisenc vorbisdec, [ + AM_PATH_VORBIS(HAVE_VORBIS=yes, HAVE_VORBIS=no) +]) + +dnl *** xmms *** +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBXMMS, true) +GST_CHECK_FEATURE(LIBXMMS, [xmms plugin], xmms, [ + AM_PATH_XMMS(0.1.0, HAVE_LIBXMMS=yes, HAVE_LIBXMMS=no) +]) + +dnl Check for libgdk-pixbuf +dnl FIXME: not sure that this is still used anywhere. +dnl DELETEME +dnl translit(dnm, m, l) AM_CONDITIONAL(USE_GDK_PIXBUF, true) +dnl GST_CHECK_FEATURE(GDK_PIXBUF, [use gdk pixbuf], , [ +dnl translit(dnm, m, l) AC_SUBST(GDK_PIXBUF_LIBS) +dnl translit(dnm, m, l) AC_SUBST(GDK_PIXBUF_CFLAGS) +dnl GST_CHECK_CONFIGPROG(GDK_PIXBUF, gdk-pixbuf-config) +dnl ]) +dnl + + +if test x$USE_GLIB2 = xyes; then + dnl we don't support gnome/gtk with glib2.0 yet + GNOME_LIBS= + GNOME_CFLAGS= + HAVE_GNOME=no + AC_MSG_WARN(gnome disabled for glib2.0) +else + dnl Check for libgnome + GST_CHECK_CONFIGPROG(GNOME, gnome-config, gnome gnomeui) +fi +AC_SUBST(GNOME_LIBS) +AC_SUBST(GNOME_CFLAGS) +AC_SUBST(HAVE_GNOME) + +dnl Check for libghttp +translit(dnm, m, l) AM_CONDITIONAL(USE_LIBGHTTP, true) +GST_CHECK_FEATURE(LIBGHTTP, [libghttp plugins], gsthttpsrc, [ + dnl FIXME: need to check for header + GHTTP_LIBS= + GST_HTTPSRC_GET_TYPE= + if test x$USE_GLIB2 = xyes; then + AC_MSG_WARN(ghttp disabled for glib2.0) + else + AC_CHECK_LIB(ghttp, ghttp_request_new, + [GHTTP_LIBS="-lghttp" + GST_HTTPSRC_GET_TYPE="gst_httpsrc_get_type" + HAVE_LIBGHTTP=yes + ], :, $LIBS) + fi + AC_SUBST(GHTTP_LIBS) + AC_SUBST(GST_HTTPSRC_GET_TYPE) +]) + + +dnl thomas : adding an arts check taken from xine with it's own .m4 +dnl FIXME: put this higher up +dnl AM_PATH_ARTS(, HAVE_ARTS=yes, HAVE_ARTS=no) + +dnl also define ARTS_MCOPFLAGS +dnl ARTS_MCOPFLAGS="$ARTS_CFLAGS" +dnl AC_SUBST(ARTS_MCOPFLAGS) + +dnl Check for libglade with gnome support; no libglade for glib2.0 +HAVE_LIBGLADE_GNOME="no" +if test x$USE_GLIB2 = xyes; then + AC_MSG_WARN(libglade disabled for glib2.0) + PKG_CHECK_MODULES(LIBGLADE_GNOME, libglade-2.0 libgnomeui-2.0, HAVE_LIBGLADE_GNOME=yes, HAVE_LIBGLADE_GNOME=no) + if test x$HAVE_LIBGLADE_GNOME = xno; then + AC_MSG_WARN(Couldn't find libglade-2.0 - Can't build gstplay) + LIBGLADE_GNOME_LIBS= + LIBGLADE_GNOME_CFLAGS= + fi; +else + AM_PATH_LIBGLADE(HAVE_LIBGLADE_GNOME="yes", HAVE_LIBGLADE_GNOME="no", gnome) + if test x$HAVE_LIBGLADE_GNOME = xno; then + AC_MSG_WARN(Couldn't find libglade-config - Can't build gstplay) + else + LIBGLADE_GNOME_LIBS=$LIBGLADE_LIBS + LIBGLADE_GNOME_CFLAGS=$LIBGLADE_CFLAGS + AC_TRY_LINK([#include ],[glade_gnome_init();], + HAVE_LIBGLADE_GNOME="yes" + AC_MSG_WARN( + [Couldn't find gnome libraries for libglade - Can't build gstmediaplay and gsteditor]) + ) + fi +fi +AC_SUBST(HAVE_LIBGLADE_GNOME) +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, + HAVE_LIBXV=no, + $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS +) +LIBS=${xvsave_LIBS} +AC_CHECK_HEADER(X11/extensions/Xv.h, :, HAVE_LIBXV=no) +AC_CHECK_HEADER(X11/extensions/Xvlib.h, :, HAVE_LIBXV=no) + +dnl Check for linux/cdrom.h +AC_CHECK_HEADER(linux/cdrom.h, + HAVE_LINUX_CDROM=yes, HAVE_LINUX_CDROM=no +) + +dnl Check for linux/videodev.h +AC_CHECK_HEADER(linux/videodev.h, + HAVE_LINUX_VIDEODEV=yes, HAVE_LINUX_VIDEODEV=no +) + + +dnl ###################################################################### +dnl # Check command line parameters, and set shell variables accordingly # +dnl ###################################################################### + +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-builddir, +[ --enable-plugin-builddir allow tests/demos to use non-installed plugins ], +[case "${enableval}" in + yes) PLUGINS_USE_BUILDDIR=yes ;; + no) PLUGINS_USE_BUILDDIR=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-builddir) ;; +esac], +[PLUGINS_USE_BUILDDIR=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, +[ --enable-DEBUG compiles in a large number of debugging messages], +[case "${enableval}" in + yes) ENABLE_DEBUG=yes ;; + no) ENABLE_DEBUG=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-DEBUG) ;; +esac], +[ENABLE_DEBUG=no]) dnl Default value +if test x$ENABLE_DEBUG = xyes; then + AC_DEFINE(GST_DEBUG_ENABLED, 1, [Define if DEBUG statements should be compiled in]) +fi + +AC_ARG_ENABLE(INFO, +[ --disable-INFO disables compilation of informational messages], +[case "${enableval}" in + yes) ENABLE_INFO=yes ;; + no) ENABLE_INFO=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-INFO) ;; +esac], +[ENABLE_INFO=yes]) dnl Default value +if test x$ENABLE_INFO = xyes; then + AC_DEFINE(GST_INFO_ENABLED, 1, [Define if INFO statements should be compiled in]) +fi + +AC_ARG_ENABLE(debug-color, +[ --disable-debug-color disables color output of DEBUG and INFO output], +[case "${enableval}" in + yes) ENABLE_DEBUG_COLOR=yes ;; + no) ENABLE_DEBUG_COLOR=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug-color) ;; +esac], +[ENABLE_DEBUG_COLOR=yes]) dnl Default value +if test "x$ENABLE_DEBUG_COLOR" = xyes; then + AC_DEFINE(GST_DEBUG_COLOR, 1, [Define if debugging messages should be colorized]) +fi + +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 to building registry in the source tree if we are enabling plugin build dir +if test "x$PLUGINS_USE_BUILDDIR"="xyes"; then + GST_CONFIG_DIR=`pwd` +else + GST_CONFIG_DIR=/etc/gstreamer +fi +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 building of documentation], +[case "${enableval}" in + yes) if $HAVE_GTK_DOC; then BUILD_DOCS=yes; else AC_MSG_ERROR([you don't have gtk-doc, so don't use --docs-build]); fi; ;; + no) BUILD_DOCS=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-docs-build) ;; +esac], +[BUILD_DOCS=no]) dnl Default value + +AC_ARG_ENABLE(plugin-docs, +[ --enable-plugin-docs enable the building of plugin documentation + (this is currently broken, so off by default)], +[case "${enableval}" in + yes) BUILD_PLUGIN_DOCS=yes ;; + no) BUILD_PLUGIN_DOCS=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-plugin-docs) ;; +esac], +[BUILD_PLUGIN_DOCS=no]) dnl Default value + +AC_ARG_ENABLE(tests, +[ --disable-tests disable building test apps], +[case "${enableval}" in + yes) BUILD_TESTS=yes ;; + no) BUILD_TESTS=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;; +esac], +[BUILD_TESTS=yes]) dnl Default value + +AC_ARG_ENABLE(examples, +[ --disable-examples disable building examples], +[case "${enableval}" in + yes) BUILD_EXAMPLES=yes ;; + no) BUILD_EXAMPLES=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --disable-examples) ;; +esac], +[BUILD_EXAMPLES=yes]) dnl Default value + +dnl Next, check for the optional components: +dnl ======================================== + + +AC_DEFUN(GST_SUBSYSTEM_DISABLE, +[dnl +dnl Add a subsystem --disable flag and all the necessary symbols and substitions +dnl +AC_ARG_ENABLE(translit([$1], A-Z, a-z), +[ ]builtin(format, --disable-%-17s disable %s, translit([$1], A-Z, a-z), $2), +[ case "${enableval}" in + yes) GST_DISABLE_[$1]=no ;; + no) GST_DISABLE_[$1]=yes ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-translit([$1], A-Z, a-z)) ;; + esac], +[GST_DISABLE_[$1]=no]) dnl Default value +if test x$GST_DISABLE_[$1] = xyes; then + AC_DEFINE(GST_DISABLE_[$1], 1, [Disable $2]) + GST_DISABLE_[$1]_DEFINE=-DGST_DISABLE_[$1] +fi +AM_CONDITIONAL(GST_DISABLE_[$1], test x$GST_DISABLE_[$1] = xyes) +AC_SUBST(GST_DISABLE_[$1]_DEFINE) +GST_SUBSYSTEM_DISABLE_DEFINES="$GST_SUBSYTEM_DISABLE_DEFINES $GST_DISABLE_[$1]_DEFINE" +]) + +translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_LOADSAVE, true) +GST_SUBSYSTEM_DISABLE(LOADSAVE,[pipeline XML load/save]) +translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TYPEFIND, true) +GST_SUBSYSTEM_DISABLE(TYPEFIND,[typefind plugin],) +translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_AUTOPLUG, true) +GST_SUBSYSTEM_DISABLE(AUTOPLUG,[autoplugger subsystem]) +translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_PARSE, true) +GST_SUBSYSTEM_DISABLE(PARSE,[command-line parser]) +translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_TRACE, true) +GST_SUBSYSTEM_DISABLE(TRACE,[tracing subsystem]) +translit(dnm, m, l) AM_CONDITIONAL(GST_DISABLE_REGISTRY, true) +GST_SUBSYSTEM_DISABLE(REGISTRY,[plugin registry]) + +GST_CFLAGS="$GST_CFLAGS $GST_SUBSYSTEM_DISABLE_DEFINES" + + +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_LIBGHTTP" = xyes; then + AC_DEFINE(HAVE_LIBGHTTP, 1, [Define if ghttp library is available]) +fi + +if test "x$USE_LIBMMX" = xyes; then + AC_DEFINE(HAVE_LIBMMX, 1, [Define if libmmx is available]) +fi + +if test "x$USE_ATOMIC_H" = xyes; then + AC_DEFINE(HAVE_ATOMIC_H, 1, [Define if atomic.h header file is available]) +fi + +if test "x$PLUGINS_USE_BUILDDIR" = xyes; then + AC_DEFINE(PLUGINS_USE_BUILDDIR, 1, [Define if plugins should be loaded from the build tree - only developers should use this]) +fi + +dnl if test "x$USE_DEBUG" = xyes; then +dnl CFLAGS="$CFLAGS -g" +dnl fi + +if test "x$USE_PROFILING" = xyes; then +dnl CFLAGS="$CFLAGS -pg -fprofile-arcs" + FOMIT_FRAME_POINTER="" +else + FOMIT_FRAME_POINTER="-fomit-frame-pointer" +fi + +dnl +dnl AC_SUBST(FOMIT_FRAME_POINTER) +dnl + +if test "x$HAVE_LIBXV" = xyes; then + AC_DEFINE(HAVE_LIBXV) +fi + +if test "x$HAVE_OSS" = xyes; then + AC_DEFINE(HAVE_OSS) +fi + +if test "x$HAVE_XAUDIO" = xyes; then + AC_DEFINE(HAVE_XAUDIO) +fi + +if test "x$HAVE_LIBMAD" = xyes; then + AC_DEFINE(HAVE_LIBMAD) +fi + +if test "x$HAVE_LIBMIKMOD" = xyes; then + AC_DEFINE(HAVE_LIBMIKMOD) +fi + +if test "x$HAVE_VORBIS" = xyes; then + AC_DEFINE(HAVE_VORBIS) +fi + +if test "x$HAVE_AALIB" = "xyes"; then + AC_DEFINE(HAVE_AALIB) +fi + +if test "x$HAVE_LIBJPEG" = xyes; then + AC_DEFINE(HAVE_LIBJPEG) +fi + +if test "x$HAVE_LIBSDL" = xyes; then + AC_DEFINE(HAVE_LIBSDL) +fi + +if test "x$HAVE_LIBHERMES" = "xyes"; then + AC_DEFINE(HAVE_LIBHERMES) +fi + +if test "x$HAVE_LIBDVDREAD" = xyes; then + AC_DEFINE(HAVE_LIBDVDREAD) +fi + +if test "x$HAVE_LINUX_CDROM" = xyes; then + AC_DEFINE(HAVE_LINUX_CDROM) +fi + +if test "x$HAVE_LINUX_VIDEODEV" = xyes; then + AC_DEFINE(HAVE_LINUX_VIDEODEV) +fi + +if test "x$HAVE_MPEG2DEC" = xyes; then + AC_DEFINE(HAVE_MPEG2DEC) +fi + +if test "x$HAVE_A52DEC" = xyes; then + AC_DEFINE(HAVE_A52DEC) +fi + +if test "x$HAVE_FLACLIB" = xyes; then + AC_DEFINE(HAVE_FLACLIB) +fi + +if test "x$HAVE_LIBGSM" = xyes; then + AC_DEFINE(HAVE_LIBGSM) +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_LIBMMX, test "x$USE_LIBMMX" = "xyes") + +AM_CONDITIONAL(HAVE_ATOMIC_H, test "x$USE_ATOMIC_H" = "xyes") + +AM_CONDITIONAL(EXPERIMENTAL, test "$EXPERIMENTAL" = "$xyes") +AM_CONDITIONAL(BROKEN, test "$BROKEN" = "$xyes") + +AM_CONDITIONAL(HAVE_OSS, test "x$HAVE_OSS" = "xyes") +AM_CONDITIONAL(HAVE_XAUDIO, test "x$HAVE_XAUDIO" = "xyes") +AM_CONDITIONAL(HAVE_LIBMAD, test "x$HAVE_LIBMAD" = "xyes") +AM_CONDITIONAL(HAVE_LIBMIKMOD, test "x$HAVE_LIBMIKMOD" = "xyes") +AM_CONDITIONAL(HAVE_LINUX_CDROM, test "x$HAVE_LINUX_CDROM" = "xyes") +AM_CONDITIONAL(HAVE_LINUX_VIDEODEV, test "x$HAVE_LINUX_VIDEODEV" = "xyes") +AM_CONDITIONAL(HAVE_LIBDVDREAD, test "x$HAVE_LIBDVDREAD" = "xyes") +AM_CONDITIONAL(HAVE_VORBIS, test "x$HAVE_VORBIS" = "xyes") +AM_CONDITIONAL(HAVE_LIBJPEG, test "x$HAVE_LIBJPEG" = "xyes") +AM_CONDITIONAL(HAVE_LIBSDL, test "x$HAVE_LIBSDL" = "xyes") +AM_CONDITIONAL(HAVE_LIBHERMES, test "x$HAVE_LIBHERMES" = "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, test "x$HAVE_GTK" = "xyes") +AM_CONDITIONAL(HAVE_GTK_DOC, $HAVE_GTK_DOC) +AM_CONDITIONAL(BUILD_DOCS, test "x$BUILD_DOCS" = "xyes") +AM_CONDITIONAL(BUILD_TESTS, test "x$BUILD_TESTS" = "xyes") +AM_CONDITIONAL(BUILD_EXAMPLES, test "x$BUILD_EXAMPLES" = "xyes") +AM_CONDITIONAL(BUILD_PLUGIN_DOCS, test "x$BUILD_PLUGIN_DOCS" = "xyes") +AM_CONDITIONAL(HAVE_PDFXMLTEX, $HAVE_PDFXMLTEX) +AM_CONDITIONAL(HAVE_PDFTOPS, $HAVE_PDFTOPS) +AM_CONDITIONAL(HAVE_XSLTPROC, $HAVE_XSLTPROC) +AM_CONDITIONAL(HAVE_FIG2DEV_PNG, $HAVE_FIG2DEV_PNG) +AM_CONDITIONAL(HAVE_FIG2DEV_PDF, $HAVE_FIG2DEV_PDF) +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_MPEG2DEC, test "x$HAVE_MPEG2DEC" = "xyes") +AM_CONDITIONAL(HAVE_A52DEC, test "x$HAVE_A52DEC" = "xyes") +dnl thomas : the next line gives errors, this is how it is in CVS +dnl AM_CONDITIONAL(HAVE_FLAC, test "x$HAVE_FLAC" = "xyes") +dnl thomas : the next line gives errors as well, I commented it +dnl AM_CONDITIONAL(HAVE_LAC, test "x$HAVE_FAC" = "xyes") +dnl thomas: the next line doesn't give errors +AM_CONDITIONAL(HAVE_FLACLIB, test "x$HAVE_FLACLIB" = "xyes") +AM_CONDITIONAL(HAVE_LIBRTP, test "x$HAVE_LIBRTP" = "xyes") +AM_CONDITIONAL(HAVE_ARTS, test "x$HAVE_ARTS" = "xyes") +AM_CONDITIONAL(HAVE_XMMS, test "x$HAVE_XMMS" = "xyes") +AM_CONDITIONAL(HAVE_RAW1394, test "x$HAVE_RAW1394" = "xyes") +AM_CONDITIONAL(HAVE_LIBDV, test "x$HAVE_LIBDV" = "xyes") +AM_CONDITIONAL(HAVE_AALIB, test "x$HAVE_AALIB" = "xyes") +AM_CONDITIONAL(HAVE_GNOME_VFS, test "x$HAVE_GNOME_VFS" = "xyes") +AM_CONDITIONAL(HAVE_AVIFILE, test "x$HAVE_AVIFILE" = "xyes") +AM_CONDITIONAL(HAVE_LIBOPENQUICKTIME, test "x$HAVE_LIBOPENQUICKTIME" = "xyes") +AM_CONDITIONAL(HAVE_LIBGSM, test "x$HAVE_LIBGSM" = "xyes") +AM_CONDITIONAL(PLUGINS_USE_BUILDDIR, test "x$PLUGINS_USE_BUILDDIR" = "xyes") +AM_CONDITIONAL(HAVE_SIDPLAY, test "x$have_sidplay" = "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_BUILDDIR=`pwd` +AC_DEFINE_UNQUOTED(PLUGINS_BUILDDIR,"$PLUGINS_BUILDDIR") +AC_SUBST(PLUGINS_BUILDDIR) + +dnl Private vars for libgst only +LIBGST_LIBS="$GST_LIBS $XML_LIBS $GLIB_LIBS" +LIBGST_CFLAGS="$GST_CFLAGS $XML_CFLAGS $GLIB_CFLAGS" +AC_SUBST(LIBGST_LIBS) +AC_SUBST(LIBGST_CFLAGS) + +dnl Vars for everyone else +GST_LIBS="\$(top_builddir)/gst/libgst.la $LIBGST_LIBS" +GST_CFLAGS="-I\$(top_srcdir) -I\$(top_srcdir)/include $LIBGST_CFLAGS" +AC_SUBST(GST_LIBS) +AC_SUBST(GST_CFLAGS) + +dnl ############################# +dnl # Configure the subpackages # +dnl ############################# + +dnl AC_CONFIG_SUBDIRS(gist) +dnl AC_CONFIG_SUBDIRS(plugins/mp3decode/xing/libxing) + +dnl ################################################## +dnl # Prepare informative messages to display at end # +dnl ################################################## + +infomessages= + +if test "x$PLUGINS_USE_BUILDDIR" = xyes; then + infomessages="$infomessages +*** Warning: You have configured using the --enable-plugin-builddir option. + +This option is for development purposes only: binaries built with +it should be used with code in the build tree only. To build an +installable version, use ./configure without the --enable-plugin-builddir +option. Note that the autogen.sh script supplies the plugin builddir +option automatically - it cannot be used to configure installable builds. + +" +fi + +dnl ######################### +dnl # Make the output files # +dnl ######################### + +dnl gstreamer.pc +dnl gstreamer-uninstalled.pc +dnl gstreamer.spec, +dnl until ffmpeg is handled by configure plugins/ffmpeg/Makefile +dnl components/bonobo-gstmediaplay/Makefile +dnl someone should fix this test/misc/Makefile +dnl wtay fix this: testsuite/threads/Makefile +dnl testsuite/refcounting/Makefile +AC_OUTPUT( +Makefile +sys/vgasink/Makefile +sys/vcdsrc/Makefile +sys/xvideosink/Makefile +sys/v4l/Makefile +sys/qcam/Makefile +sys/Makefile +libs/Makefile +libs/riff/Makefile +libs/getbits/Makefile +libs/putbits/Makefile +libs/idct/Makefile +libs/audio/Makefile +libs/bytestream/Makefile +libs/control/Makefile +libs/resample/Makefile +stamp.h +echo "$infomessages", infomessages="$infomessages" +) + +echo -e "configure: *** Plugins that will be built : $GST_PLUGINS_YES" +echo +echo -e "configure: *** Plugins that will not be built : $GST_PLUGINS_NO" +echo -- cgit