summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2013-04-14 15:17:12 +0100
committerTim-Philipp Müller <tim@centricular.net>2013-04-14 17:12:35 +0100
commit35495dd48fb1d2c529b712ab01d47a8ee8989af8 (patch)
tree76ec23cdfe72eab5a5fbc379caca5653a41f977f
parentaed87ae3f28b85b24eff734937b85473828e297d (diff)
downloadgstreamer-common-35495dd48fb1d2c529b712ab01d47a8ee8989af8.tar.gz
update-autogen: new tool to generate module autogen.sh files from a common template
Maybe one day an autogen.sh consisting of just 'autoreconf' will be enough. Until then, let's try to at least use consistent autogen.sh in the different modules. This tool will hopefully help with that. The autogen.sh.in template is currently based on the autogen.sh from core. There are changes in other modules which should probably be merged into that. One bug has already been fixed: touch gstreamer-1.0.pot not -0.10.pot
-rwxr-xr-xautogen.sh.in118
-rwxr-xr-xupdate-autogen48
2 files changed, 166 insertions, 0 deletions
diff --git a/autogen.sh.in b/autogen.sh.in
new file mode 100755
index 0000000..c303a32
--- /dev/null
+++ b/autogen.sh.in
@@ -0,0 +1,118 @@
+test -n "$srcdir" || srcdir=`dirname "$0"`
+test -n "$srcdir" || srcdir=.
+
+olddir=`pwd`
+cd "$srcdir"
+
+DIE=0
+package=@PACKAGE@
+srcfile=@SRCFILE@
+
+# Make sure we have common
+if test ! -f common/gst-autogen.sh;
+then
+ echo "+ Setting up common submodule"
+ git submodule init
+fi
+git submodule update
+
+# source helper functions
+if test ! -f common/gst-autogen.sh;
+then
+ echo There is something wrong with your source tree.
+ echo You are missing common/gst-autogen.sh
+ exit 1
+fi
+. common/gst-autogen.sh
+
+# install pre-commit hook for doing clean commits
+if test ! \( -x .git/hooks/pre-commit -a -L .git/hooks/pre-commit \);
+then
+ rm -f .git/hooks/pre-commit
+ ln -s ../../common/hooks/pre-commit.hook .git/hooks/pre-commit
+fi
+
+# GNU gettext automake support doesn't get along with git.
+# https://bugzilla.gnome.org/show_bug.cgi?id=661128
+touch -t 200001010000 po/@PACKAGE@-@API_VERSION@.pot
+
+CONFIGURE_DEF_OPT='--enable-maintainer-mode --enable-failing-tests --enable-poisoning --enable-gtk-doc --enable-docbook'
+
+autogen_options $@
+
+printf "+ check for build tools"
+if test ! -z "$NOCHECK"; then echo ": skipped version checks"; else echo; fi
+version_check "autoconf" "$AUTOCONF autoconf autoconf270 autoconf269 autoconf268 autoconf267 autoconf266 autoconf265 autoconf264 autoconf263 autoconf262" \
+ "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 62 || DIE=1
+version_check "automake" "$AUTOMAKE automake automake-1.11" \
+ "ftp://ftp.gnu.org/pub/gnu/automake/" 1 11 || DIE=1
+version_check "autopoint" "autopoint" \
+ "ftp://ftp.gnu.org/pub/gnu/gettext/" 0 17 || DIE=1
+version_check "libtoolize" "libtoolize glibtoolize" \
+ "ftp://ftp.gnu.org/pub/gnu/libtool/" 2 2 6 || DIE=1
+version_check "pkg-config" "" \
+ "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
+
+die_check $DIE
+
+aclocal_check || DIE=1
+autoheader_check || DIE=1
+
+die_check $DIE
+
+# if no arguments specified then this will be printed
+if test -z "$*" && test -z "$NOCONFIGURE"; 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
+
+toplevel_check $srcfile
+
+# autopoint
+# older autopoint (< 0.12) has a tendency to complain about mkinstalldirs
+if test -x mkinstalldirs; then rm mkinstalldirs; fi
+# first remove patch if necessary, then run autopoint, then reapply
+if test -f po/Makefile.in.in;
+then
+ patch -p0 -R --forward < common/gettext.patch
+fi
+tool_run "$autopoint" "--force" "patch -p0 < common/gettext.patch"
+patch -p0 < common/gettext.patch
+
+# aclocal
+if test -f acinclude.m4; then rm acinclude.m4; fi
+
+tool_run "$libtoolize" "--copy --force"
+tool_run "$aclocal" "-I m4 -I common/m4 $ACLOCAL_FLAGS"
+tool_run "$autoheader"
+
+# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode
+echo timestamp > stamp-h.in 2> /dev/null
+
+tool_run "$autoconf"
+debug "automake: $automake"
+tool_run "$automake" "--add-missing --copy"
+
+test -n "$NOCONFIGURE" && {
+ echo "skipping configure stage for package $package, as requested."
+ echo "autogen.sh done."
+ exit 0
+}
+
+cd "$olddir"
+
+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"
+echo
+
+echo "$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT
+"$srcdir/configure" $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT || {
+ echo " configure failed"
+ exit 1
+}
+
+echo "Now type 'make' to compile $package."
diff --git a/update-autogen b/update-autogen
new file mode 100755
index 0000000..d267556
--- /dev/null
+++ b/update-autogen
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+if [ ! -f "common/update-autogen" ]; then
+ echo "Run ./common/update-autogen from the top-level source directory of a GStreamer module";
+ exit 1;
+fi
+
+if ! ls -1 *.doap 2>/dev/null >/dev/null; then
+ echo "Could not find *.doap file";
+ exit 1;
+fi
+
+PACKAGE=`ls -1 *.doap | head -n1 | sed -e 's/.doap$//'`
+
+#echo "Package: $PACKAGE"
+
+DIR=`mktemp -d`
+if [[ $? != 0 ]]; then
+ echo "Could not create temp dir";
+ exit 1;
+fi
+
+TEMP_AUTOGEN_SH="$DIR/autogen.sh"
+echo "\
+#!/bin/sh
+#
+# $PACKAGE autogen.sh
+#
+# Run this to generate all the initial makefiles, etc.
+#
+# This file has been generated from common/autogen.sh.in via common/update-autogen
+
+" > $TEMP_AUTOGEN_SH
+
+sed \
+ -e "s/@API_VERSION@/1.0/g" \
+ -e "s/@PACKAGE@/$PACKAGE/g" \
+ -e "s/@SRCFILE@/$PACKAGE.doap/g" < common/autogen.sh.in >> $TEMP_AUTOGEN_SH
+
+chmod +x $TEMP_AUTOGEN_SH
+
+mv $TEMP_AUTOGEN_SH autogen.sh || {
+ echo "Failed to update autogen.sh"
+ exit 1;
+}
+rmdir $DIR
+
+echo "Updated $PACKAGE autogen.sh"