1 # a silly hack that generates autoregen.sh but it's handy
2 echo "#!/bin/sh" > autoregen.sh
3 echo "./autogen.sh $@ \$@" >> autoregen.sh
6 # helper functions for autogen.sh
9 # print out a debug message if DEBUG is a defined variable
18 # check the version of a package
19 # first argument : package name (executable)
20 # second argument : optional path where to look for it instead
21 # third argument : source download url
22 # rest of arguments : major, minor, micro version
33 if test ! -z "$PKG_PATH"
39 debug "major $MAJOR minor $MINOR micro $MICRO"
41 if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
42 if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
44 debug "major $MAJOR minor $MINOR micro $MICRO"
46 test -z "$NOCHECK" && {
47 echo -n " checking for $1 >= $VERSION"
48 if test ! -z "$PKG_PATH"; then echo; echo -n " (in $PKG_PATH)"; fi
51 # we set a var with the same name as the package, but stripped of
53 VAR=`echo $PACKAGE | sed 's/-//g'`
59 debug "checking version with $COMMAND"
60 ($COMMAND --version) < /dev/null > /dev/null 2>&1 ||
63 echo "You must have $PACKAGE installed to compile $package."
64 echo "Download the appropriate package for your distribution,"
65 echo "or get the source tarball at $URL"
68 # the following line is carefully crafted sed magic
69 #pkg_version=`$COMMAND --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
70 pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*) //'|sed 's/ (.*)//'`
71 debug "pkg_version $pkg_version"
72 # remove any non-digit characters from the version numbers to permit numeric
74 pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
75 pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
76 pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
77 test -z "$pkg_major" && pkg_major=0
78 test -z "$pkg_minor" && pkg_minor=0
79 test -z "$pkg_micro" && pkg_micro=0
81 debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
83 #start checking the version
86 if [ ! "$pkg_major" -gt "$MAJOR" ]; then
87 debug "$pkg_major <= $MAJOR"
88 if [ "$pkg_major" -lt "$MAJOR" ]; then
90 elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
91 if [ "$pkg_minor" -lt "$MINOR" ]; then
93 elif [ "$pkg_micro" -lt "$MICRO" ]; then
99 if test ! -z "$WRONG"; then
100 echo "found $pkg_version, not ok !"
102 echo "You must have $PACKAGE $VERSION or greater to compile $package."
103 echo "Get the latest version from $URL"
107 echo "found $pkg_version, ok."
108 # we set a var with the same name as the package, but stripped of
110 VAR=`echo $PACKAGE | sed 's/-//g'`
118 # normally aclocal is part of automake
119 # so we expect it to be in the same place as automake
120 # so if a different automake is supplied, we need to adapt as well
121 # so how's about replacing automake with aclocal in the set var,
122 # and saving that in $aclocal ?
123 # note, this will fail if the actual automake isn't called automake*
124 # or if part of the path before it contains it
125 if [ -z "$automake" ]; then
126 echo "Error: no automake variable set !"
129 aclocal=`echo $automake | sed s/automake/aclocal/`
130 debug "aclocal: $aclocal"
131 if [ "$aclocal" != "aclocal" ];
133 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
135 if [ ! -x `which $aclocal` ]; then
136 echo "Error: cannot execute $aclocal !"
144 # same here - autoheader is part of autoconf
145 # use the same voodoo
146 if [ -z "$autoconf" ]; then
147 echo "Error: no autoconf variable set !"
150 autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
151 debug "autoheader: $autoheader"
152 if [ "$autoheader" != "autoheader" ];
154 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
156 if [ ! -x `which $autoheader` ]; then
157 echo "Error: cannot execute $autoheader !"
163 autoconf_2.52d_check ()
165 # autoconf 2.52d has a weird issue involving a yes:no error
166 # so don't allow it's use
167 test -z "$NOCHECK" && {
168 ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
169 if test "$ac_version" = "2.52d"; then
170 echo "autoconf 2.52d has an issue with our current build."
171 echo "We don't know who's to blame however. So until we do, get a"
172 echo "regular version. RPM's of a working version are on the gstreamer site."
182 # if set to 1, we need to print something helpful then die
184 if test "x$DIE" = "x1";
187 echo "- Please get the right tools before proceeding."
188 echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
195 if test `getopt --version | cut -d' ' -f2` != "(enhanced)"; then
196 echo "- non-gnu getopt(1) detected, not running getopt on autogen command-line options"
200 # we use getopt stuff here, copied things from the example example.bash
201 # prefix is explicitly carried over to configure by request of jdahlin
202 TEMP=`getopt -o h --long noconfigure,nocheck,debug,help,with-automake:,with-autoconf:,prefix:\
211 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
212 echo "+ configure run disabled"
216 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
218 echo "+ autotools version check disabled"
223 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
224 echo "+ debug output enabled"
228 CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$2"
229 echo "+ passing --prefix=$2 to configure"
233 echo "autogen.sh (autogen options) -- (configure options)"
234 echo "autogen.sh help options: "
235 echo " --noconfigure don't run the configure script"
236 echo " --nocheck don't do version checks"
237 echo " --debug debug the autogen process"
238 echo " --prefix will be passed on to configure"
240 echo " --with-autoconf PATH use autoconf in PATH"
241 echo " --with-automake PATH use automake in PATH"
243 echo "to pass options to configure, put them as arguments after -- "
248 echo "+ using alternate automake in $2"
249 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE"
254 echo "+ using alternate autoconf in $2"
255 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF"
259 *) echo "Internal error !" ; exit 1 ;;
263 for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
264 if test ! -z "$CONFIGURE_EXT_OPT"
266 echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
273 test -f $srcfile || {
274 echo "You must run this script in the top-level $package directory"
284 echo "+ running $tool $options..."