* missing: Updated.
[platform/upstream/automake.git] / missing
1 #! /bin/sh
2 # Common stub for a few missing GNU programs while installing.
3 # Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
4 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
9 # any later version.
10
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
19 # 02111-1307, USA.
20
21 if test $# -eq 0; then
22   echo 1>&2 "Try \`$0 --help' for more information"
23   exit 1
24 fi
25
26 run=:
27
28 # In the cases where this matters, `missing' is being run in the
29 # srcdir already.
30 if test -f configure.ac; then
31   configure_ac=configure.ac
32 else
33   configure_ac=configure.in
34 fi
35
36 case "$1" in
37 --run)
38   # Try to run requested program, and just exit if it succeeds.
39   run=
40   shift
41   "$@" && exit 0
42   ;;
43 esac
44
45 # If it does not exist, or fails to run (possibly an outdated version),
46 # try to emulate it.
47 case "$1" in
48
49   -h|--h|--he|--hel|--help)
50     echo "\
51 $0 [OPTION]... PROGRAM [ARGUMENT]...
52
53 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
54 error status if there is no known handling for PROGRAM.
55
56 Options:
57   -h, --help      display this help and exit
58   -v, --version   output version information and exit
59   --run           try to run the given command, and emulate it if it fails
60
61 Supported PROGRAM values:
62   aclocal      touch file \`aclocal.m4'
63   autoconf     touch file \`configure'
64   autoheader   touch file \`config.h.in'
65   automake     touch all \`Makefile.in' files
66   bison        create \`y.tab.[ch]', if possible, from existing .[ch]
67   flex         create \`lex.yy.c', if possible, from existing .c
68   help2man     touch the output file
69   lex          create \`lex.yy.c', if possible, from existing .c
70   makeinfo     touch the output file
71   tar          try tar, gnutar, gtar, then tar without non-portable flags
72   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
73     ;;
74
75   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
76     echo "missing 0.3 - GNU automake"
77     ;;
78
79   -*)
80     echo 1>&2 "$0: Unknown \`$1' option"
81     echo 1>&2 "Try \`$0 --help' for more information"
82     exit 1
83     ;;
84
85   aclocal)
86     echo 1>&2 "\
87 WARNING: \`$1' is missing on your system.  You should only need it if
88          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
89          to install the \`Automake' and \`Perl' packages.  Grab them from
90          any GNU archive site."
91     touch aclocal.m4
92     ;;
93
94   autoconf)
95     echo 1>&2 "\
96 WARNING: \`$1' is missing on your system.  You should only need it if
97          you modified \`${configure_ac}'.  You might want to install the
98          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
99          archive site."
100     touch configure
101     ;;
102
103   autoheader)
104     echo 1>&2 "\
105 WARNING: \`$1' is missing on your system.  You should only need it if
106          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
107          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
108          from any GNU archive site."
109     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
110     test -z "$files" && files="config.h"
111     touch_files=
112     for f in $files; do
113       case "$f" in
114       *:*) touch_files="$touch_files "`echo "$f" |
115                                        sed -e 's/^[^:]*://' -e 's/:.*//'`;;
116       *) touch_files="$touch_files $f.in";;
117       esac
118     done
119     touch $touch_files
120     ;;
121
122   automake)
123     echo 1>&2 "\
124 WARNING: \`$1' is missing on your system.  You should only need it if
125          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
126          You might want to install the \`Automake' and \`Perl' packages.
127          Grab them from any GNU archive site."
128     find . -type f -name Makefile.am -print |
129            sed 's/\.am$/.in/' |
130            while read f; do touch "$f"; done
131     ;;
132
133   bison|yacc)
134     echo 1>&2 "\
135 WARNING: \`$1' is missing on your system.  You should only need it if
136          you modified a \`.y' file.  You may need the \`Bison' package
137          in order for those modifications to take effect.  You can get
138          \`Bison' from any GNU archive site."
139     rm -f y.tab.c y.tab.h
140     if [ $# -ne 1 ]; then
141         eval LASTARG="\${$#}"
142         case "$LASTARG" in
143         *.y)
144             SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
145             if [ -f "$SRCFILE" ]; then
146                  cp "$SRCFILE" y.tab.c
147             fi
148             SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
149             if [ -f "$SRCFILE" ]; then
150                  cp "$SRCFILE" y.tab.h
151             fi
152           ;;
153         esac
154     fi
155     if [ ! -f y.tab.h ]; then
156         echo >y.tab.h
157     fi
158     if [ ! -f y.tab.c ]; then
159         echo 'main() { return 0; }' >y.tab.c
160     fi
161     ;;
162
163   lex|flex)
164     echo 1>&2 "\
165 WARNING: \`$1' is missing on your system.  You should only need it if
166          you modified a \`.l' file.  You may need the \`Flex' package
167          in order for those modifications to take effect.  You can get
168          \`Flex' from any GNU archive site."
169     rm -f lex.yy.c
170     if [ $# -ne 1 ]; then
171         eval LASTARG="\${$#}"
172         case "$LASTARG" in
173         *.l)
174             SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
175             if [ -f "$SRCFILE" ]; then
176                  cp "$SRCFILE" lex.yy.c
177             fi
178           ;;
179         esac
180     fi
181     if [ ! -f lex.yy.c ]; then
182         echo 'main() { return 0; }' >lex.yy.c
183     fi
184     ;;
185
186   help2man)
187     echo 1>&2 "\
188 WARNING: \`$1' is missing on your system.  You should only need it if
189          you modified a dependency of a manual page.  You may need the
190          \`Help2man' package in order for those modifications to take
191          effect.  You can get \`Help2man' from any GNU archive site."
192
193     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
194     if test -z "$file"; then
195         file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
196     fi
197     if [ -f "$file" ]; then
198         touch $file
199     else
200         test -z "$file" || exec >$file
201         echo ".ab help2man is required to generate this page"
202         exit 1
203     fi
204     ;;
205
206   makeinfo)
207     echo 1>&2 "\
208 WARNING: \`$1' is missing on your system.  You should only need it if
209          you modified a \`.texi' or \`.texinfo' file, or any other file
210          indirectly affecting the aspect of the manual.  The spurious
211          call might also be the consequence of using a buggy \`make' (AIX,
212          DU, IRIX).  You might want to install the \`Texinfo' package or
213          the \`GNU make' package.  Grab either from any GNU archive site."
214     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
215     if test -z "$file"; then
216       file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
217       file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
218     fi
219     touch $file
220     ;;
221
222   tar)
223     shift
224     if test -n "$run"; then
225       echo 1>&2 "ERROR: \`tar' requires --run"
226       exit 1
227     fi
228
229     # We have already tried tar in the generic part.
230     # Look for gnutar/gtar before invocation to avoid ugly error
231     # messages.
232     if (gnutar --version > /dev/null 2>&1); then
233        gnutar ${1+"$@"} && exit 0
234     fi
235     if (gtar --version > /dev/null 2>&1); then
236        gtar ${1+"$@"} && exit 0
237     fi
238     firstarg="$1"
239     if shift; then
240         case "$firstarg" in
241         *o*)
242             firstarg=`echo "$firstarg" | sed s/o//`
243             tar "$firstarg" ${1+"$@"} && exit 0
244             ;;
245         esac
246         case "$firstarg" in
247         *h*)
248             firstarg=`echo "$firstarg" | sed s/h//`
249             tar "$firstarg" ${1+"$@"} && exit 0
250             ;;
251         esac
252     fi
253
254     echo 1>&2 "\
255 WARNING: I can't seem to be able to run \`tar' with the given arguments.
256          You may want to install GNU tar or Free paxutils, or check the
257          command line arguments."
258     exit 1
259     ;;
260
261   *)
262     echo 1>&2 "\
263 WARNING: \`$1' is needed, and you do not seem to have it handy on your
264          system.  You might have modified some files without having the
265          proper tools for further handling them.  Check the \`README' file,
266          it often tells you about the needed prerequirements for installing
267          this package.  You may also peek at any GNU archive site, in case
268          some other package would contain this missing \`$1' program."
269     exit 1
270     ;;
271 esac
272
273 exit 0