renatofilho@23: # a silly hack that generates autoregen.sh but it's handy renatofilho@23: echo "#!/bin/sh" > autoregen.sh renatofilho@23: echo "./autogen.sh $@ \$@" >> autoregen.sh renatofilho@23: chmod +x autoregen.sh renatofilho@23: renatofilho@23: # helper functions for autogen.sh renatofilho@23: renatofilho@23: debug () renatofilho@23: # print out a debug message if DEBUG is a defined variable renatofilho@23: { renatofilho@23: if test ! -z "$DEBUG" renatofilho@23: then renatofilho@23: echo "DEBUG: $1" renatofilho@23: fi renatofilho@23: } renatofilho@23: renatofilho@23: version_check () renatofilho@23: # check the version of a package renatofilho@23: # first argument : package name (executable) renatofilho@23: # second argument : optional path where to look for it instead renatofilho@23: # third argument : source download url renatofilho@23: # rest of arguments : major, minor, micro version renatofilho@23: # all consecutive ones : suggestions for binaries to use renatofilho@23: # (if not specified in second argument) renatofilho@23: { renatofilho@23: PACKAGE=$1 renatofilho@23: PKG_PATH=$2 renatofilho@23: URL=$3 renatofilho@23: MAJOR=$4 renatofilho@23: MINOR=$5 renatofilho@23: MICRO=$6 renatofilho@23: renatofilho@23: # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null renatofilho@23: if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi renatofilho@23: debug "major $MAJOR minor $MINOR micro $MICRO" renatofilho@23: VERSION=$MAJOR renatofilho@23: if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi renatofilho@23: if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi renatofilho@23: renatofilho@23: debug "major $MAJOR minor $MINOR micro $MICRO" renatofilho@23: renatofilho@23: for SUGGESTION in $PKG_PATH; do renatofilho@23: COMMAND="$SUGGESTION" renatofilho@23: renatofilho@23: # don't check if asked not to renatofilho@23: test -z "$NOCHECK" && { renatofilho@23: echo -n " checking for $COMMAND >= $VERSION ... " renatofilho@23: } || { renatofilho@23: # we set a var with the same name as the package, but stripped of renatofilho@23: # unwanted chars renatofilho@23: VAR=`echo $PACKAGE | sed 's/-//g'` renatofilho@23: debug "setting $VAR" renatofilho@23: eval $VAR="$COMMAND" renatofilho@23: return 0 renatofilho@23: } renatofilho@23: renatofilho@23: debug "checking version with $COMMAND" renatofilho@23: ($COMMAND --version) < /dev/null > /dev/null 2>&1 || renatofilho@23: { renatofilho@23: echo "not found." renatofilho@23: continue renatofilho@23: } renatofilho@23: # strip everything that's not a digit, then use cut to get the first field renatofilho@23: pkg_version=`$COMMAND --version|head -n 1|sed 's/^[^0-9]*//'|cut -d' ' -f1` renatofilho@23: debug "pkg_version $pkg_version" renatofilho@23: # remove any non-digit characters from the version numbers to permit numeric renatofilho@23: # comparison renatofilho@23: pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g` renatofilho@23: pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g` renatofilho@23: pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g` renatofilho@23: test -z "$pkg_major" && pkg_major=0 renatofilho@23: test -z "$pkg_minor" && pkg_minor=0 renatofilho@23: test -z "$pkg_micro" && pkg_micro=0 renatofilho@23: debug "found major $pkg_major minor $pkg_minor micro $pkg_micro" renatofilho@23: renatofilho@23: #start checking the version renatofilho@23: debug "version check" renatofilho@23: renatofilho@23: # reset check renatofilho@23: WRONG= renatofilho@23: renatofilho@23: if [ ! "$pkg_major" -gt "$MAJOR" ]; then renatofilho@23: debug "major: $pkg_major <= $MAJOR" renatofilho@23: if [ "$pkg_major" -lt "$MAJOR" ]; then renatofilho@23: debug "major: $pkg_major < $MAJOR" renatofilho@23: WRONG=1 renatofilho@23: elif [ ! "$pkg_minor" -gt "$MINOR" ]; then renatofilho@23: debug "minor: $pkg_minor <= $MINOR" renatofilho@23: if [ "$pkg_minor" -lt "$MINOR" ]; then renatofilho@23: debug "minor: $pkg_minor < $MINOR" renatofilho@23: WRONG=1 renatofilho@23: elif [ "$pkg_micro" -lt "$MICRO" ]; then renatofilho@23: debug "micro: $pkg_micro < $MICRO" renatofilho@23: WRONG=1 renatofilho@23: fi renatofilho@23: fi renatofilho@23: fi renatofilho@23: renatofilho@23: if test ! -z "$WRONG"; then renatofilho@23: echo "found $pkg_version, not ok !" renatofilho@23: continue renatofilho@23: else renatofilho@23: echo "found $pkg_version, ok." renatofilho@23: # we set a var with the same name as the package, but stripped of renatofilho@23: # unwanted chars renatofilho@23: VAR=`echo $PACKAGE | sed 's/-//g'` renatofilho@23: debug "setting $VAR" renatofilho@23: eval $VAR="$COMMAND" renatofilho@23: return 0 renatofilho@23: fi renatofilho@23: done renatofilho@23: renatofilho@23: echo "not found !" renatofilho@23: echo "You must have $PACKAGE installed to compile $package." renatofilho@23: echo "Download the appropriate package for your distribution," renatofilho@23: echo "or get the source tarball at $URL" renatofilho@23: return 1; renatofilho@23: } renatofilho@23: renatofilho@23: aclocal_check () renatofilho@23: { renatofilho@23: # normally aclocal is part of automake renatofilho@23: # so we expect it to be in the same place as automake renatofilho@23: # so if a different automake is supplied, we need to adapt as well renatofilho@23: # so how's about replacing automake with aclocal in the set var, renatofilho@23: # and saving that in $aclocal ? renatofilho@23: # note, this will fail if the actual automake isn't called automake* renatofilho@23: # or if part of the path before it contains it renatofilho@23: if [ -z "$automake" ]; then renatofilho@23: echo "Error: no automake variable set !" renatofilho@23: return 1 renatofilho@23: else renatofilho@23: aclocal=`echo $automake | sed s/automake/aclocal/` renatofilho@23: debug "aclocal: $aclocal" renatofilho@23: if [ "$aclocal" != "aclocal" ]; renatofilho@23: then renatofilho@23: CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal" renatofilho@23: fi renatofilho@23: if [ ! -x `which $aclocal` ]; then renatofilho@23: echo "Error: cannot execute $aclocal !" renatofilho@23: return 1 renatofilho@23: fi renatofilho@23: fi renatofilho@23: } renatofilho@23: renatofilho@23: autoheader_check () renatofilho@23: { renatofilho@23: # same here - autoheader is part of autoconf renatofilho@23: # use the same voodoo renatofilho@23: if [ -z "$autoconf" ]; then renatofilho@23: echo "Error: no autoconf variable set !" renatofilho@23: return 1 renatofilho@23: else renatofilho@23: autoheader=`echo $autoconf | sed s/autoconf/autoheader/` renatofilho@23: debug "autoheader: $autoheader" renatofilho@23: if [ "$autoheader" != "autoheader" ]; renatofilho@23: then renatofilho@23: CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader" renatofilho@23: fi renatofilho@23: if [ ! -x `which $autoheader` ]; then renatofilho@23: echo "Error: cannot execute $autoheader !" renatofilho@23: return 1 renatofilho@23: fi renatofilho@23: fi renatofilho@23: renatofilho@23: } renatofilho@23: renatofilho@23: autoconf_2_52d_check () renatofilho@23: { renatofilho@23: # autoconf 2.52d has a weird issue involving a yes:no error renatofilho@23: # so don't allow it's use renatofilho@23: test -z "$NOCHECK" && { renatofilho@23: ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-Z\.\ ()]*//;s/ .*$//'` renatofilho@23: if test "$ac_version" = "2.52d"; then renatofilho@23: echo "autoconf 2.52d has an issue with our current build." renatofilho@23: echo "We don't know who's to blame however. So until we do, get a" renatofilho@23: echo "regular version. RPM's of a working version are on the gstreamer site." renatofilho@23: exit 1 renatofilho@23: fi renatofilho@23: } renatofilho@23: return 0 renatofilho@23: } renatofilho@23: renatofilho@23: die_check () renatofilho@23: { renatofilho@23: # call with $DIE renatofilho@23: # if set to 1, we need to print something helpful then die renatofilho@23: DIE=$1 renatofilho@23: if test "x$DIE" = "x1"; renatofilho@23: then renatofilho@23: echo renatofilho@23: echo "- Please get the right tools before proceeding." renatofilho@23: echo "- Alternatively, if you're sure we're wrong, run with --nocheck." renatofilho@23: exit 1 renatofilho@23: fi renatofilho@23: } renatofilho@23: renatofilho@23: autogen_options () renatofilho@23: { renatofilho@23: if test "x$1" = "x"; then renatofilho@23: return 0 renatofilho@23: fi renatofilho@23: renatofilho@23: while test "x$1" != "x" ; do renatofilho@23: optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` renatofilho@23: case "$1" in renatofilho@23: --noconfigure) renatofilho@23: NOCONFIGURE=defined renatofilho@23: AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure" renatofilho@23: echo "+ configure run disabled" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: --nocheck) renatofilho@23: AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck" renatofilho@23: NOCHECK=defined renatofilho@23: echo "+ autotools version check disabled" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: --debug) renatofilho@23: DEBUG=defined renatofilho@23: AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug" renatofilho@23: echo "+ debug output enabled" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: --prefix=*) renatofilho@23: CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$optarg" renatofilho@23: echo "+ passing --prefix=$optarg to configure" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: --prefix) renatofilho@23: shift renatofilho@23: echo "DEBUG: $1" renatofilho@23: CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$1" renatofilho@23: echo "+ passing --prefix=$1 to configure" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: -h|--help) renatofilho@23: echo "autogen.sh (autogen options) -- (configure options)" renatofilho@23: echo "autogen.sh help options: " renatofilho@23: echo " --noconfigure don't run the configure script" renatofilho@23: echo " --nocheck don't do version checks" renatofilho@23: echo " --debug debug the autogen process" renatofilho@23: echo " --prefix will be passed on to configure" renatofilho@23: echo renatofilho@23: echo " --with-autoconf PATH use autoconf in PATH" renatofilho@23: echo " --with-automake PATH use automake in PATH" renatofilho@23: echo renatofilho@23: echo "to pass options to configure, put them as arguments after -- " renatofilho@23: exit 1 renatofilho@23: ;; renatofilho@23: --with-automake=*) renatofilho@23: AUTOMAKE=$optarg renatofilho@23: echo "+ using alternate automake in $optarg" renatofilho@23: CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: --with-autoconf=*) renatofilho@23: AUTOCONF=$optarg renatofilho@23: echo "+ using alternate autoconf in $optarg" renatofilho@23: CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: --disable*|--enable*|--with*) renatofilho@23: echo "+ passing option $1 to configure" renatofilho@23: CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $1" renatofilho@23: shift renatofilho@23: ;; renatofilho@23: --) shift ; break ;; renatofilho@23: *) echo "- ignoring unknown autogen.sh argument $1"; shift ;; renatofilho@23: esac renatofilho@23: done renatofilho@23: renatofilho@23: for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done renatofilho@23: if test ! -z "$CONFIGURE_EXT_OPT" renatofilho@23: then renatofilho@23: echo "+ options passed to configure: $CONFIGURE_EXT_OPT" renatofilho@23: fi renatofilho@23: } renatofilho@23: renatofilho@23: toplevel_check () renatofilho@23: { renatofilho@23: srcfile=$1 renatofilho@23: test -f $srcfile || { renatofilho@23: echo "You must run this script in the top-level $package directory" renatofilho@23: exit 1 renatofilho@23: } renatofilho@23: } renatofilho@23: renatofilho@23: renatofilho@23: tool_run () renatofilho@23: { renatofilho@23: tool=$1 renatofilho@23: options=$2 renatofilho@23: run_if_fail=$3 renatofilho@23: echo "+ running $tool $options..." renatofilho@23: $tool $options || { renatofilho@23: echo renatofilho@23: echo $tool failed renatofilho@23: eval $run_if_fail renatofilho@23: exit 1 renatofilho@23: } renatofilho@23: }