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
23 # all consecutive ones : suggestions for binaries to use
24 # (if not specified in second argument)
33 # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null
34 if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi
35 debug "major $MAJOR minor $MINOR micro $MICRO"
37 if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
38 if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
40 debug "major $MAJOR minor $MINOR micro $MICRO"
42 for SUGGESTION in $PKG_PATH; do
45 # don't check if asked not to
46 test -z "$NOCHECK" && {
47 echo -n " checking for $COMMAND >= $VERSION ... "
49 # we set a var with the same name as the package, but stripped of
51 VAR=`echo $PACKAGE | sed 's/-//g'`
57 debug "checking version with $COMMAND"
58 ($COMMAND --version) < /dev/null > /dev/null 2>&1 ||
63 # the following line is carefully crafted sed magic
64 # you don't want to mess with it
65 #pkg_version=`$COMMAND --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
66 pkg_version=`$COMMAND --version|head -n 1|sed 's/^.*) //'|sed 's/ (.*)//'`
67 debug "pkg_version $pkg_version"
68 # remove any non-digit characters from the version numbers to permit numeric
70 pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
71 pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
72 pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
73 test -z "$pkg_major" && pkg_major=0
74 test -z "$pkg_minor" && pkg_minor=0
75 test -z "$pkg_micro" && pkg_micro=0
76 debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
78 #start checking the version
84 if [ ! "$pkg_major" -gt "$MAJOR" ]; then
85 debug "major: $pkg_major <= $MAJOR"
86 if [ "$pkg_major" -lt "$MAJOR" ]; then
87 debug "major: $pkg_major < $MAJOR"
89 elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
90 debug "minor: $pkg_minor <= $MINOR"
91 if [ "$pkg_minor" -lt "$MINOR" ]; then
92 debug "minor: $pkg_minor < $MINOR"
94 elif [ "$pkg_micro" -lt "$MICRO" ]; then
95 debug "micro: $pkg_micro < $MICRO"
101 if test ! -z "$WRONG"; then
102 echo "found $pkg_version, not ok !"
105 echo "found $pkg_version, ok."
106 # we set a var with the same name as the package, but stripped of
108 VAR=`echo $PACKAGE | sed 's/-//g'`
116 echo "You must have $PACKAGE installed to compile $package."
117 echo "Download the appropriate package for your distribution,"
118 echo "or get the source tarball at $URL"
124 # normally aclocal is part of automake
125 # so we expect it to be in the same place as automake
126 # so if a different automake is supplied, we need to adapt as well
127 # so how's about replacing automake with aclocal in the set var,
128 # and saving that in $aclocal ?
129 # note, this will fail if the actual automake isn't called automake*
130 # or if part of the path before it contains it
131 if [ -z "$automake" ]; then
132 echo "Error: no automake variable set !"
135 aclocal=`echo $automake | sed s/automake/aclocal/`
136 debug "aclocal: $aclocal"
137 if [ "$aclocal" != "aclocal" ];
139 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
141 if [ ! -x `which $aclocal` ]; then
142 echo "Error: cannot execute $aclocal !"
150 # same here - autoheader is part of autoconf
151 # use the same voodoo
152 if [ -z "$autoconf" ]; then
153 echo "Error: no autoconf variable set !"
156 autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
157 debug "autoheader: $autoheader"
158 if [ "$autoheader" != "autoheader" ];
160 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
162 if [ ! -x `which $autoheader` ]; then
163 echo "Error: cannot execute $autoheader !"
169 autoconf_2.52d_check ()
171 # autoconf 2.52d has a weird issue involving a yes:no error
172 # so don't allow it's use
173 test -z "$NOCHECK" && {
174 ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
175 if test "$ac_version" = "2.52d"; then
176 echo "autoconf 2.52d has an issue with our current build."
177 echo "We don't know who's to blame however. So until we do, get a"
178 echo "regular version. RPM's of a working version are on the gstreamer site."
188 # if set to 1, we need to print something helpful then die
190 if test "x$DIE" = "x1";
193 echo "- Please get the right tools before proceeding."
194 echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
201 if test `getopt --version | cut -d' ' -f2` != "(enhanced)"; then
202 echo "- non-gnu getopt(1) detected, not running getopt on autogen command-line options"
206 # we use getopt stuff here, copied things from the example example.bash
207 # prefix is explicitly carried over to configure by request of jdahlin
208 TEMP=`getopt -o h --long noconfigure,nocheck,debug,help,with-automake:,with-autoconf:,prefix:\
217 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
218 echo "+ configure run disabled"
222 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
224 echo "+ autotools version check disabled"
229 AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
230 echo "+ debug output enabled"
234 CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$2"
235 echo "+ passing --prefix=$2 to configure"
239 echo "autogen.sh (autogen options) -- (configure options)"
240 echo "autogen.sh help options: "
241 echo " --noconfigure don't run the configure script"
242 echo " --nocheck don't do version checks"
243 echo " --debug debug the autogen process"
244 echo " --prefix will be passed on to configure"
246 echo " --with-autoconf PATH use autoconf in PATH"
247 echo " --with-automake PATH use automake in PATH"
249 echo "to pass options to configure, put them as arguments after -- "
254 echo "+ using alternate automake in $2"
255 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE"
260 echo "+ using alternate autoconf in $2"
261 CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF"
265 *) echo "Internal error !" ; exit 1 ;;
269 for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
270 if test ! -z "$CONFIGURE_EXT_OPT"
272 echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
279 test -f $srcfile || {
280 echo "You must run this script in the top-level $package directory"
290 echo "+ running $tool $options..."