diff options
author | Tim-Philipp Müller <tim.muller@collabora.co.uk> | 2010-03-23 23:41:16 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim.muller@collabora.co.uk> | 2010-03-23 23:41:16 +0000 |
commit | 7ef8b710b736d763813641ce5e961fe34fd99338 (patch) | |
tree | 3d10882bedefe33c059cd556327261c990a28b38 | |
parent | 3fbab315ebe58701b0c3b2519d1e8b33fcbbb663 (diff) |
gst-app: use minimal configure.ac
Get rid of all the custom GStreamer autogen.sh and configure.ac
cruft, turn configure.ac into a minimal example, so people have
a chance to make sense of it. Use autoreconf in autogen.sh.
-rw-r--r-- | gst-app/.gitignore | 19 | ||||
-rw-r--r-- | gst-app/Makefile.am | 2 | ||||
-rwxr-xr-x | gst-app/autogen.sh | 97 | ||||
-rw-r--r-- | gst-app/configure.ac | 164 | ||||
-rw-r--r-- | gst-app/gst-autogen.sh | 308 | ||||
-rw-r--r-- | gst-app/src/Makefile.am | 4 |
6 files changed, 93 insertions, 501 deletions
diff --git a/gst-app/.gitignore b/gst-app/.gitignore new file mode 100644 index 0000000..6fa734f --- /dev/null +++ b/gst-app/.gitignore @@ -0,0 +1,19 @@ +aclocal.m4 +autom4te.cache +autoregen.sh +config.* +configure +libtool +INSTALL +Makefile.in +depcomp +install-sh +ltmain.sh +missing +stamp-* +compile +my-app-*.tar.* +*~ + +src/gst-app + diff --git a/gst-app/Makefile.am b/gst-app/Makefile.am index a181a88..acdcc2a 100644 --- a/gst-app/Makefile.am +++ b/gst-app/Makefile.am @@ -1,3 +1,3 @@ SUBDIRS=src -EXTRA_DIST=depcomp autogen.sh gst-autogen.sh +EXTRA_DIST=autogen.sh diff --git a/gst-app/autogen.sh b/gst-app/autogen.sh index ad4bd47..9df38d3 100755 --- a/gst-app/autogen.sh +++ b/gst-app/autogen.sh @@ -1,91 +1,18 @@ #!/bin/sh -# you can either set the environment variables AUTOCONF and AUTOMAKE -# to the right versions, or leave them unset and get the RedHat 7.3 defaults +# you can either set the environment variables AUTOCONF, AUTOHEADER, AUTOMAKE, +# ACLOCAL, AUTOPOINT and/or LIBTOOLIZE to the right versions, or leave them +# unset and get the defaults -DIE=0 -package=gst-app -srcfile=src/main.c - -# autogen.sh helper functions (copied from GStreamer's common/ CVS module) -if test ! -f ./gst-autogen.sh; -then - echo There is something wrong with your source tree. - echo You are either missing ./gst-autogen.sh or not - echo running autogen.sh from the top-level source - echo directory. - exit 1 -fi -. ./gst-autogen.sh - -CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-debug' - -autogen_options $@ - -echo -n "+ check for build tools" -if test ! -z "$NOCHECK"; then echo " skipped"; else echo; fi -version_check "autoconf" "$AUTOCONF autoconf autoconf259 autoconf257 autoconf-2.54 autoconf-2.53 autoconf-2.52" \ - "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 52 || DIE=1 -version_check "automake" "$AUTOMAKE automake automake-1.9 automake19 automake-1.7 automake-1.6 automake-1.5" \ - "ftp://ftp.gnu.org/pub/gnu/automake/" 1 7 || DIE=1 -###version_check "autopoint" "autopoint" \ -### "ftp://ftp.gnu.org/pub/gnu/gettext/" 0 11 5 || DIE=1 -version_check "libtoolize" "$LIBTOOLIZE libtoolize glibtoolize" \ - "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1 -version_check "pkg-config" "" \ - "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1 - -die_check $DIE - -autoconf_2_52d_check || DIE=1 -aclocal_check || DIE=1 -autoheader_check || DIE=1 - -die_check $DIE - -# if no arguments specified then this will be printed -if test -z "$*"; then - echo "+ checking for autogen.sh options" - echo " This autogen script will automatically run ./configure as:" - echo " ./configure $CONFIGURE_DEF_OPT" - echo " To pass any additional options, please specify them on the $0" - echo " command line." -fi - -tool_run "$aclocal" "$ACLOCAL_FLAGS" -tool_run "$libtoolize" "--copy --force" -tool_run "$autoheader" -tool_run "$autoconf" -tool_run "$automake" "-a -c" - -# if enable exists, add an -enable option for each of the lines in that file -if test -f enable; then - for a in `cat enable`; do - CONFIGURE_FILE_OPT="--enable-$a" - done -fi - -# if disable exists, add an -disable option for each of the lines in that file -if test -f disable; then - for a in `cat disable`; do - CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a" - done -fi - -test -n "$NOCONFIGURE" && { - echo "+ skipping configure stage for package $package, as requested." - echo "+ autogen.sh done." - exit 0 +autoreconf --verbose --force --install --make || { + echo 'autogen.sh failed'; + exit 1; } -echo "+ running configure ... " -test ! -z "$CONFIGURE_DEF_OPT" && echo " ./configure default flags: $CONFIGURE_DEF_OPT" -test ! -z "$CONFIGURE_EXT_OPT" && echo " ./configure external flags: $CONFIGURE_EXT_OPT" -test ! -z "$CONFIGURE_FILE_OPT" && echo " ./configure enable/disable flags: $CONFIGURE_FILE_OPT" -echo - -./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || { - echo " configure failed" - exit 1 +./configure || { + echo 'configure failed'; + exit 1; } -echo "Now type 'make' to compile $package." +echo +echo "Now type 'make' to compile this module." +echo diff --git a/gst-app/configure.ac b/gst-app/configure.ac index 00b1cca..a172c18 100644 --- a/gst-app/configure.ac +++ b/gst-app/configure.ac @@ -1,140 +1,94 @@ -AC_INIT +dnl required version of autoconf +AC_PREREQ([2.53]) -dnl Fill in your package name and version here -PACKAGE=gst-app -VERSION=0.1.1 +dnl TODO: fill in your package name and package version here +AC_INIT([my-app],[0.1.1]) -dnl these AC_DEFINE_UNQUOTED's are necessary for make dist to work -AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE") -AC_DEFINE_UNQUOTED(VERSION, "$VERSION") -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) +dnl required version of gstreamer and gst-plugins-base +GST_REQUIRED=0.10.16 -AM_INIT_AUTOMAKE($PACKAGE, $VERSION) +AC_CONFIG_SRCDIR([src/main.c]) +AC_CONFIG_HEADERS([config.h]) -AM_CONFIG_HEADER(config.h) +dnl required version of automake +AM_INIT_AUTOMAKE([1.10]) -AC_PROG_CC -AC_PROG_LIBTOOL +dnl enable mainainer mode by default +AM_MAINTAINER_MODE([enable]) -dnl Check for pkgconfig first -AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, yes, no) +dnl check for tools (compiler etc.) +AM_PROG_CC_C_O -dnl Give error and exit if we don't have pkgconfig -if test "x$HAVE_PKGCONFIG" = "xno"; then - AC_MSG_ERROR(you need to have pkgconfig installed !) -fi +dnl required version of libtool +LT_PREREQ([2.2.6]) +LT_INIT -dnl Now we're ready to ask for gstreamer libs and cflags -dnl And we can also ask for the right version of gstreamer - -GST_MAJORMINOR=0.10 - -GSTCORE_REQUIRED=0.10.0 -GSTBASE_REQUIRED=0.10.0 +dnl error out if we can't find pkg-config +AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, [ ], [ + AC_MSG_ERROR([You need to have pkg-config installed or set the PATH.]) +]) dnl ======================================================================= -dnl We are checking for a lot of things from the GStreamer core that -dnl an app might possibly be interested in here. Your app might not need -dnl all of these, but it can't hurt to check for them either (and they -dnl should all be installed on development systems anyway) +dnl Check for the required version of GStreamer core (and gst-plugins-base) +dnl +dnl This will export GST_CFLAGS and GST_LIBS variables for use in Makefile.am +dnl +dnl If you need libraries from gst-plugins-base here, also add: +dnl for libgstaudio-0.10: gstreamer-audio-0.10 >= $GST_REQUIRED +dnl for libgstvideo-0.10: gstreamer-video-0.10 >= $GST_REQUIRED +dnl for libgsttag-0.10: gstreamer-tag-0.10 >= $GST_REQUIRED +dnl for libgstpbutils-0.10: gstreamer-pbutils-0.10 >= $GST_REQUIRED +dnl for libgstfft-0.10: gstreamer-fft-0.10 >= $GST_REQUIRED +dnl for libgstinterfaces-0.10: gstreamer-interfaces-0.10 >= $GST_REQUIRED +dnl for libgstrtp-0.10: gstreamer-rtp-0.10 >= $GST_REQUIRED +dnl for libgstrtsp-0.10: gstreamer-rtsp-0.10 >= $GST_REQUIRED +dnl etc. dnl ======================================================================= PKG_CHECK_MODULES(GST, [ - gstreamer-$GST_MAJORMINOR >= $GSTCORE_REQUIRED - gstreamer-base-$GST_MAJORMINOR >= $GSTCORE_REQUIRED - gstreamer-controller-$GST_MAJORMINOR >= $GSTCORE_REQUIRED + gstreamer-0.10 >= $GST_REQUIRED + gstreamer-base-0.10 >= $GST_REQUIRED + gstreamer-controller-0.10 >= $GST_REQUIRED ], [ - HAVE_GST=yes + AC_SUBST(GST_CFLAGS) + AC_SUBST(GST_LIBS) ], [ - HAVE_GST=no - ]) - -dnl ======================================================================= -dnl Give error and exit if couldn't find gstreamer development files -dnl ======================================================================= -if test "x$HAVE_GST" = "xno"; -then AC_MSG_ERROR([ Can't find the following GStreamer development packages: - gstreamer-$GST_MAJORMINOR >= $GSTCORE_REQUIRED - gstreamer-base-$GST_MAJORMINOR >= $GSTCORE_REQUIRED - gstreamer-controller-$GST_MAJORMINOR >= $GSTCORE_REQUIRED + gstreamer-0.10 >= $GST_REQUIRED + gstreamer-base-0.10 >= $GST_REQUIRED + gstreamer-controller-0.10 >= $GST_REQUIRED - Please make sure you have the necessary GStreamer-$GST_MAJORMINOR + Please make sure you have the necessary GStreamer-0.10 development headers installed. On debian/Ubuntu systems you will probably need to install the - the 'libgstreamer$GST_MAJORMINOR-dev' package. + 'libgstreamer0.10-dev' and 'libgstreamer-plugins-base0.10-dev' packages. On RPM-based systems you will probably need to install the - 'gstreamer-devel-$GST_MAJORMINOR' package. + 'gstreamer-devel-0.10' package. ]) -fi - -dnl ======================================================================= -dnl Make GST_CFLAGS and GST_LIBS available for use in Makefile.am files -dnl ======================================================================= - -AC_SUBST(GST_CFLAGS) -AC_SUBST(GST_LIBS) - - - - - -dnl ======================================================================= -dnl OPTIONAL: -dnl Also check for extra stuff that is in gst-plugins-base, like additional -dnl tags for example. You might not need this. -dnl ======================================================================= +]) -PKG_CHECK_MODULES(GST_PLUGINS_BASE, [ - gstreamer-plugins-base-$GST_MAJORMINOR >= $GSTBASE_REQUIRED - ], [ - HAVE_GST_PLUGINS_BASE=yes - ], [ - HAVE_GST_PLUGINS_BASE=no - ]) +dnl check if compiler understands -Wall (if yes, add -Wall to GST_CFLAGS) +AC_MSG_CHECKING([to see if compiler understands -Wall]) +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -Wall" +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ ], [ ])], [ + GST_CFLAGS="$GST_CFLAGS -Wall" + AC_MSG_RESULT([yes]) +], [ + AC_MSG_RESULT([no]) +]) dnl ======================================================================= -dnl Give a warning only if we don't find the gstreamer plugins base stuff -dnl ======================================================================= - -if test "x$HAVE_GST_PLUGINS_BASE" = "xno" -then - AC_MSG_NOTICE([ - Can't find the following GStreamer development packages: - - gstreamer-plugins-base-$GST_MAJORMINOR >= $GSTBASE_REQUIRED - - Please make sure you have the necessary GStreamer-$GST_MAJORMINOR - development headers installed. - - On debian/Ubuntu systems you will probably need to install the - the 'libgstreamer-plugins-base$GST_MAJORMINOR-dev' package. - - On RPM-based systems you will probably need to install the - 'gstreamer-plugins-base-devel-$GST_MAJORMINOR' package. - ]) - sleep 3 -fi - -dnl ======================================================================= -dnl Make GST_CFLAGS and GST_LIBS available for use in Makefile.am files -dnl ======================================================================= - -AC_SUBST(GST_PLUGINS_BASE_CFLAGS) -AC_SUBST(GST_PLUGINS_BASE_LIBS) - - -dnl ======================================================================= dnl Finally, create Makefiles in all directories dnl ======================================================================= -AC_OUTPUT([ +AC_CONFIG_FILES([ Makefile src/Makefile ]) +AC_OUTPUT diff --git a/gst-app/gst-autogen.sh b/gst-app/gst-autogen.sh deleted file mode 100644 index 7b31212..0000000 --- a/gst-app/gst-autogen.sh +++ /dev/null @@ -1,308 +0,0 @@ -# a silly hack that generates autoregen.sh but it's handy -# Remove the old autoregen.sh first to create a new file, -# as the current one may be being read by the shell executing -# this script. -if [ -f "autoregen.sh" ]; then - rm autoregen.sh -fi -echo "#!/bin/sh" > autoregen.sh -echo "./autogen.sh $@ \$@" >> autoregen.sh -chmod +x autoregen.sh - -# helper functions for autogen.sh - -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 : optional path where to look for it instead -# third argument : source download url -# rest of arguments : major, minor, micro version -# all consecutive ones : suggestions for binaries to use -# (if not specified in second argument) -{ - PACKAGE=$1 - PKG_PATH=$2 - URL=$3 - MAJOR=$4 - MINOR=$5 - MICRO=$6 - - # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null - if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi - 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" - - for SUGGESTION in $PKG_PATH; do - COMMAND="$SUGGESTION" - - # don't check if asked not to - test -z "$NOCHECK" && { - echo -n " checking for $COMMAND >= $VERSION ... " - } || { - # we set a var with the same name as the package, but stripped of - # unwanted chars - VAR=`echo $PACKAGE | sed 's/-//g'` - debug "setting $VAR" - eval $VAR="$COMMAND" - return 0 - } - - debug "checking version with $COMMAND" - ($COMMAND --version) < /dev/null > /dev/null 2>&1 || - { - echo "not found." - continue - } - # strip everything that's not a digit, then use cut to get the first field - pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*)[^0-9]*//'|cut -d' ' -f1` - debug "pkg_version $pkg_version" - # remove any non-digit characters from the version numbers to permit numeric - # comparison - pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g` - pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g` - pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g` - test -z "$pkg_major" && pkg_major=0 - 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" - - # reset check - WRONG= - - if [ ! "$pkg_major" -gt "$MAJOR" ]; then - debug "major: $pkg_major <= $MAJOR" - if [ "$pkg_major" -lt "$MAJOR" ]; then - debug "major: $pkg_major < $MAJOR" - WRONG=1 - elif [ ! "$pkg_minor" -gt "$MINOR" ]; then - debug "minor: $pkg_minor <= $MINOR" - if [ "$pkg_minor" -lt "$MINOR" ]; then - debug "minor: $pkg_minor < $MINOR" - WRONG=1 - elif [ "$pkg_micro" -lt "$MICRO" ]; then - debug "micro: $pkg_micro < $MICRO" - WRONG=1 - fi - fi - fi - - if test ! -z "$WRONG"; then - echo "found $pkg_version, not ok !" - continue - else - echo "found $pkg_version, ok." - # we set a var with the same name as the package, but stripped of - # unwanted chars - VAR=`echo $PACKAGE | sed 's/-//g'` - debug "setting $VAR" - eval $VAR="$COMMAND" - return 0 - fi - done - - echo "not found !" - 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; -} - -aclocal_check () -{ - # normally aclocal is part of automake - # so we expect it to be in the same place as automake - # so if a different automake is supplied, we need to adapt as well - # so how's about replacing automake with aclocal in the set var, - # and saving that in $aclocal ? - # note, this will fail if the actual automake isn't called automake* - # or if part of the path before it contains it - if [ -z "$automake" ]; then - echo "Error: no automake variable set !" - return 1 - else - aclocal=`echo $automake | sed s/automake/aclocal/` - debug "aclocal: $aclocal" - if [ "$aclocal" != "aclocal" ]; - then - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal" - fi - if [ ! -x `which $aclocal` ]; then - echo "Error: cannot execute $aclocal !" - return 1 - fi - fi -} - -autoheader_check () -{ - # same here - autoheader is part of autoconf - # use the same voodoo - if [ -z "$autoconf" ]; then - echo "Error: no autoconf variable set !" - return 1 - else - autoheader=`echo $autoconf | sed s/autoconf/autoheader/` - debug "autoheader: $autoheader" - if [ "$autoheader" != "autoheader" ]; - then - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader" - fi - if [ ! -x `which $autoheader` ]; then - echo "Error: cannot execute $autoheader !" - return 1 - fi - fi - -} -autoconf_2_52d_check () -{ - # autoconf 2.52d has a weird issue involving a yes:no error - # so don't allow it's use - test -z "$NOCHECK" && { - 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 - } - return 0 -} - -die_check () -{ - # call with $DIE - # if set to 1, we need to print something helpful then die - DIE=$1 - if test "x$DIE" = "x1"; - then - echo - echo "- Please get the right tools before proceeding." - echo "- Alternatively, if you're sure we're wrong, run with --nocheck." - exit 1 - fi -} - -autogen_options () -{ - if test "x$1" = "x"; then - return 0 - fi - - while test "x$1" != "x" ; do - optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - case "$1" in - --noconfigure) - NOCONFIGURE=defined - AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure" - echo "+ configure run disabled" - shift - ;; - --nocheck) - AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck" - NOCHECK=defined - echo "+ autotools version check disabled" - shift - ;; - --debug) - DEBUG=defined - AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug" - echo "+ debug output enabled" - shift - ;; - --prefix=*) - CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$optarg" - echo "+ passing --prefix=$optarg to configure" - shift - ;; - --prefix) - shift - echo "DEBUG: $1" - CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$1" - echo "+ passing --prefix=$1 to configure" - shift - ;; - - -h|--help) - echo "autogen.sh (autogen options) -- (configure options)" - echo "autogen.sh help options: " - echo " --noconfigure don't run the configure script" - echo " --nocheck don't do version checks" - echo " --debug debug the autogen process" - echo " --prefix will be passed on to configure" - echo - echo " --with-autoconf PATH use autoconf in PATH" - echo " --with-automake PATH use automake in PATH" - echo - echo "to pass options to configure, put them as arguments after -- " - exit 1 - ;; - --with-automake=*) - AUTOMAKE=$optarg - echo "+ using alternate automake in $optarg" - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE" - shift - ;; - --with-autoconf=*) - AUTOCONF=$optarg - echo "+ using alternate autoconf in $optarg" - CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF" - shift - ;; - --disable*|--enable*|--with*) - echo "+ passing option $1 to configure" - CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $1" - shift - ;; - --) shift ; break ;; - *) echo "- ignoring unknown autogen.sh argument $1"; shift ;; - esac - done - - for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done - if test ! -z "$CONFIGURE_EXT_OPT" - then - echo "+ options passed to configure: $CONFIGURE_EXT_OPT" - fi -} - -toplevel_check () -{ - srcfile=$1 - test -f $srcfile || { - echo "You must run this script in the top-level $package directory" - exit 1 - } -} - - -tool_run () -{ - tool=$1 - options=$2 - run_if_fail=$3 - echo "+ running $tool $options..." - $tool $options || { - echo - echo $tool failed - eval $run_if_fail - exit 1 - } -} diff --git a/gst-app/src/Makefile.am b/gst-app/src/Makefile.am index f5a4d6d..28e69a3 100644 --- a/gst-app/src/Makefile.am +++ b/gst-app/src/Makefile.am @@ -10,5 +10,5 @@ noinst_HEADERS = gst-app.h play.h # our CFLAGS and LDFLAGS used for compiling and linking # make sure you prefix these with the name of your binary -gst_app_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) -Wall -g -O2 -gst_app_LDFLAGS = $(GST_LIBS) $(GST_PLUGINS_BASE_LIBS) +gst_app_CFLAGS = $(GST_CFLAGS) +gst_app_LDFLAGS = $(GST_LIBS) |