a slight hack to create autoregen.sh
[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   # we use getopt stuff here, copied things from the example example.bash
166   TEMP=`getopt -o h --long noconfigure,nocheck,debug,help,with-automake:,with-autoconf:,prefix:\
167        -- "$@"`
168
169   eval set -- "$TEMP"
170
171   while true ; do
172     case "$1" in
173       --noconfigure)
174           NOCONFIGURE=defined
175           AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
176           echo "+ configure run disabled"
177           shift
178           ;;
179       --nocheck)
180           AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
181           NOCHECK=defined
182           echo "+ autotools version check disabled"
183           shift
184           ;;
185       --debug)
186           DEBUG=defined
187           AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
188           echo "+ debug output enabled"
189           shift
190           ;;
191       --prefix)
192           CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$2"
193           echo "+ passing --prefix=$2 to configure"
194           shift 2
195           ;;
196       -h|--help)
197           echo "autogen.sh (autogen options) -- (configure options)"
198           echo "autogen.sh help options: "
199           echo " --noconfigure            don't run the configure script"
200           echo " --nocheck                don't do version checks"
201           echo " --debug                  debug the autogen process"
202           echo " --prefix                 will be passed on to configure"
203           echo
204           echo " --with-autoconf PATH     use autoconf in PATH"
205           echo " --with-automake PATH     use automake in PATH"
206           echo
207           echo "to pass options to configure, put them as arguments after -- "
208           exit 1
209           ;;
210       --with-automake)
211           AUTOMAKE=$2
212           echo "+ using alternate automake in $2"
213           shift 2
214           ;;
215       --with-autoconf)
216           AUTOCONF=$2
217           echo "+ using alternate autoconf in $2"
218           shift 2
219           ;;
220        --) shift ; break ;;
221       *) echo "Internal error !" ; exit 1 ;;
222     esac
223   done
224
225   for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
226   if test ! -z "$CONFIGURE_EXT_OPT"
227   then
228     echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
229   fi
230 }
231
232 toplevel_check ()
233 {
234   srcfile=$1
235   test -f $srcfile || {
236         echo "You must run this script in the top-level $package directory"
237         exit 1
238   }
239 }
240
241
242 tool_run ()
243 {
244   tool=$1
245   options=$2
246   echo "+ running $tool $options..."
247   $tool $options || {
248     echo
249     echo $tool failed
250     exit 1
251   }
252 }