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 -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_minor" && pkg_minor=0
78 test -z "$pkg_micro" && pkg_micro=0
80 debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
82 #start checking the version
85 if [ ! "$pkg_major" -gt "$MAJOR" ]; then
86 debug "$pkg_major <= $MAJOR"
87 if [ "$pkg_major" -lt "$MAJOR" ]; then
89 elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
90 if [ "$pkg_minor" -lt "$MINOR" ]; then
92 elif [ "$pkg_micro" -lt "$MICRO" ]; then
98 if test ! -z "$WRONG"; then
99 echo "found $pkg_version, not ok !"
101 echo "You must have $PACKAGE $VERSION or greater to compile $package."
102 echo "Get the latest version from $URL"
106 echo "found $pkg_version, ok."
107 # we set a var with the same name as the package, but stripped of
109 VAR=`echo $PACKAGE | sed 's/-//g'`
117 # normally aclocal is part of automake
118 # so we expect it to be in the same place as automake
119 # so if a different automake is supplied, we need to adapt as well
120 # so how's about replacing automake with aclocal in the set var,
121 # and saving that in $aclocal ?
122 # note, this will fail if the actual automake isn't called automake*
123 # or if part of the path before it contains it
124 if [ -z "$automake" ]; then
125 echo "Error: no automake variable set !"
128 aclocal=`echo $automake | sed s/automake/aclocal/`
129 debug "aclocal: $aclocal"
130 if [ "$aclocal" != "aclocal" ];
132 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
134 if [ ! -x `which $aclocal` ]; then
135 echo "Error: cannot execute $aclocal !"
143 # same here - autoheader is part of autoconf
144 # use the same voodoo
145 if [ -z "$autoconf" ]; then
146 echo "Error: no autoconf variable set !"
149 autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
150 debug "autoheader: $autoheader"
151 if [ "$autoheader" != "autoheader" ];
153 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
155 if [ ! -x `which $autoheader` ]; then
156 echo "Error: cannot execute $autoheader !"
162 autoconf_2.52d_check ()
164 # autoconf 2.52d has a weird issue involving a yes:no error
165 # so don't allow it's use
166 test -z "$NOCHECK" && {
167 ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
168 if test "$ac_version" = "2.52d"; then
169 echo "autoconf 2.52d has an issue with our current build."
170 echo "We don't know who's to blame however. So until we do, get a"
171 echo "regular version. RPM's of a working version are on the gstreamer site."
181 # if set to 1, we need to print something helpful then die
183 if test "x$DIE" = "x1";
186 echo "- Please get the right tools before proceeding."
187 echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
194 if test `getopt --version | cut -d' ' -f2` != "(enhanced)"; then
195 echo "- non-gnu getopt(1) detected, not running getopt on autogen command-line options"
199 # we use getopt stuff here, copied things from the example example.bash
200 TEMP=`getopt -o h --long noconfigure,nocheck,debug,help,with-automake:,with-autoconf:,prefix:\
209 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
210 echo "+ configure run disabled"
214 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
216 echo "+ autotools version check disabled"
221 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
222 echo "+ debug output enabled"
226 CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$2"
227 echo "+ passing --prefix=$2 to configure"
231 echo "autogen.sh (autogen options) -- (configure options)"
232 echo "autogen.sh help options: "
233 echo " --noconfigure don't run the configure script"
234 echo " --nocheck don't do version checks"
235 echo " --debug debug the autogen process"
236 echo " --prefix will be passed on to configure"
238 echo " --with-autoconf PATH use autoconf in PATH"
239 echo " --with-automake PATH use automake in PATH"
241 echo "to pass options to configure, put them as arguments after -- "
246 echo "+ using alternate automake in $2"
247 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE"
252 echo "+ using alternate autoconf in $2"
253 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF"
257 *) echo "Internal error !" ; exit 1 ;;
261 for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
262 if test ! -z "$CONFIGURE_EXT_OPT"
264 echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
271 test -f $srcfile || {
272 echo "You must run this script in the top-level $package directory"
282 echo "+ running $tool $options..."