if gnu getopt is not available, don't bother processing any options
[platform/upstream/gst-common.git] / gst-autogen.sh
1 # a silly hack that generates autoregen.sh but it's handy
2 echo "#!/bin/sh" > autoregen.sh
3 echo "./autogen.sh $@ \$@" >> autoregen.sh
4 chmod +x autoregen.sh
5
6 # helper functions for autogen.sh
7
8 debug ()
9 # print out a debug message if DEBUG is a defined variable
10 {
11   if test ! -z "$DEBUG"
12   then
13     echo "DEBUG: $1"
14   fi
15 }
16
17 version_check ()
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 {
24   PACKAGE=$1
25   PKG_PATH=$2
26   URL=$3
27   MAJOR=$4
28   MINOR=$5
29   MICRO=$6
30
31   WRONG=
32
33   if test ! -z "$PKG_PATH"
34   then
35     COMMAND="$PKG_PATH"
36   else
37     COMMAND="$PACKAGE"  
38   fi
39   debug "major $MAJOR minor $MINOR micro $MICRO"
40   VERSION=$MAJOR
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
43
44   debug "major $MAJOR minor $MINOR micro $MICRO"
45   
46   test -z "$NOCHECK" && {
47       echo -n "  checking for $1 >= $VERSION"
48       if test ! -z "$PKG_PATH"; then echo -n " (in $PKG_PATH)"; fi
49       echo -n "... "
50   } || {
51     # we set a var with the same name as the package, but stripped of
52     # unwanted chars
53     VAR=`echo $PACKAGE | sed 's/-//g'`
54     debug "setting $VAR"
55     eval $VAR="$COMMAND"
56       return 0
57   }
58
59   debug "checking version with $COMMAND"
60   ($COMMAND --version) < /dev/null > /dev/null 2>&1 || 
61   {
62         echo "not found !"
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"
66         return 1
67   }
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
73   # comparison
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
79
80   debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
81
82   #start checking the version
83   debug "version check"
84
85   if [ ! "$pkg_major" -gt "$MAJOR" ]; then
86     debug "$pkg_major <= $MAJOR"
87     if [ "$pkg_major" -lt "$MAJOR" ]; then
88       WRONG=1
89     elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
90       if [ "$pkg_minor" -lt "$MINOR" ]; then
91         WRONG=1
92       elif [ "$pkg_micro" -lt "$MICRO" ]; then
93         WRONG=1
94       fi
95     fi
96   fi
97
98   if test ! -z "$WRONG"; then
99     echo "found $pkg_version, not ok !"
100     echo
101     echo "You must have $PACKAGE $VERSION or greater to compile $package."
102     echo "Get the latest version from $URL"
103     echo
104     return 1
105   else
106     echo "found $pkg_version, ok."
107     # we set a var with the same name as the package, but stripped of
108     # unwanted chars
109     VAR=`echo $PACKAGE | sed 's/-//g'`
110     debug "setting $VAR"
111     eval $VAR="$COMMAND"
112   fi
113 }
114
115 aclocal_check ()
116 {
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 !"
126     return 1
127   else
128     aclocal=`echo $automake | sed s/automake/aclocal/`
129     debug "aclocal: $aclocal"
130   fi
131 }
132
133 autoconf_2.52d_check ()
134 {
135   # autoconf 2.52d has a weird issue involving a yes:no error
136   # so don't allow it's use
137   test -z "$NOCHECK" && {
138     ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-z\.\ ()]*//;s/ .*$//'`
139     if test "$ac_version" = "2.52d"; then
140       echo "autoconf 2.52d has an issue with our current build."
141       echo "We don't know who's to blame however.  So until we do, get a"
142       echo "regular version.  RPM's of a working version are on the gstreamer site."
143       exit 1
144     fi
145   }
146   return 0
147 }
148
149 die_check ()
150 {
151   # call with $DIE
152   # if set to 1, we need to print something helpful then die
153   DIE=$1
154   if test "x$DIE" = "x1";
155   then
156     echo
157     echo "- Please get the right tools before proceeding."
158     echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
159     exit 1
160   fi
161 }
162
163 autogen_options ()
164 {
165   if test `getopt --version | cut -d' ' -f2` != "(enhanced)"; then
166     echo "- non-gnu getopt(1) detected, not running getopt on autogen command-line options"
167     return 0
168   fi
169
170   # we use getopt stuff here, copied things from the example example.bash
171   TEMP=`getopt -o h --long noconfigure,nocheck,debug,help,with-automake:,with-autoconf:,prefix:\
172        -- "$@"`
173
174   eval set -- "$TEMP"
175
176   while true ; do
177     case "$1" in
178       --noconfigure)
179           NOCONFIGURE=defined
180           AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
181           echo "+ configure run disabled"
182           shift
183           ;;
184       --nocheck)
185           AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
186           NOCHECK=defined
187           echo "+ autotools version check disabled"
188           shift
189           ;;
190       --debug)
191           DEBUG=defined
192           AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
193           echo "+ debug output enabled"
194           shift
195           ;;
196       --prefix)
197           CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$2"
198           echo "+ passing --prefix=$2 to configure"
199           shift 2
200           ;;
201       -h|--help)
202           echo "autogen.sh (autogen options) -- (configure options)"
203           echo "autogen.sh help options: "
204           echo " --noconfigure            don't run the configure script"
205           echo " --nocheck                don't do version checks"
206           echo " --debug                  debug the autogen process"
207           echo " --prefix                 will be passed on to configure"
208           echo
209           echo " --with-autoconf PATH     use autoconf in PATH"
210           echo " --with-automake PATH     use automake in PATH"
211           echo
212           echo "to pass options to configure, put them as arguments after -- "
213           exit 1
214           ;;
215       --with-automake)
216           AUTOMAKE=$2
217           echo "+ using alternate automake in $2"
218           shift 2
219           ;;
220       --with-autoconf)
221           AUTOCONF=$2
222           echo "+ using alternate autoconf in $2"
223           shift 2
224           ;;
225        --) shift ; break ;;
226       *) echo "Internal error !" ; exit 1 ;;
227     esac
228   done
229
230   for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
231   if test ! -z "$CONFIGURE_EXT_OPT"
232   then
233     echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
234   fi
235 }
236
237 toplevel_check ()
238 {
239   srcfile=$1
240   test -f $srcfile || {
241         echo "You must run this script in the top-level $package directory"
242         exit 1
243   }
244 }
245
246
247 tool_run ()
248 {
249   tool=$1
250   options=$2
251   echo "+ running $tool $options..."
252   $tool $options || {
253     echo
254     echo $tool failed
255     exit 1
256   }
257 }