]> git.ipfire.org Git - thirdparty/gcc.git/blame - missing
sh.c: Do not include algorithm.
[thirdparty/gcc.git] / missing
CommitLineData
6599da04
JM
1#! /bin/sh
2# Common stub for a few missing GNU programs while installing.
32b2511f 3
0539cb2c 4scriptversion=2009-04-28.21; # UTC
32b2511f 5
0539cb2c
RW
6# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
7# 2008, 2009 Free Software Foundation, Inc.
8a199ff6 8# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
6599da04
JM
9
10# This program is free software; you can redistribute it and/or modify
11# it under the terms of the GNU General Public License as published by
12# the Free Software Foundation; either version 2, or (at your option)
13# any later version.
14
15# This program is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18# GNU General Public License for more details.
19
20# You should have received a copy of the GNU General Public License
0539cb2c 21# along with this program. If not, see <http://www.gnu.org/licenses/>.
6599da04 22
8a199ff6
PE
23# As a special exception to the GNU General Public License, if you
24# distribute this file as part of a program that contains a
25# configuration script generated by Autoconf, you may include it under
26# the same distribution terms that you use for the rest of that program.
27
6599da04
JM
28if test $# -eq 0; then
29 echo 1>&2 "Try \`$0 --help' for more information"
30 exit 1
31fi
32
8a199ff6 33run=:
0539cb2c
RW
34sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
35sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
8a199ff6
PE
36
37# In the cases where this matters, `missing' is being run in the
38# srcdir already.
39if test -f configure.ac; then
40 configure_ac=configure.ac
41else
42 configure_ac=configure.in
43fi
44
32b2511f
PB
45msg="missing on your system"
46
0539cb2c 47case $1 in
8a199ff6
PE
48--run)
49 # Try to run requested program, and just exit if it succeeds.
50 run=
51 shift
52 "$@" && exit 0
32b2511f
PB
53 # Exit code 63 means version mismatch. This often happens
54 # when the user try to use an ancient version of a tool on
55 # a file that requires a minimum version. In this case we
56 # we should proceed has if the program had been absent, or
57 # if --run hadn't been passed.
58 if test $? = 63; then
59 run=:
60 msg="probably too old"
61 fi
8a199ff6 62 ;;
6599da04
JM
63
64 -h|--h|--he|--hel|--help)
65 echo "\
66$0 [OPTION]... PROGRAM [ARGUMENT]...
67
68Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
69error status if there is no known handling for PROGRAM.
70
71Options:
72 -h, --help display this help and exit
73 -v, --version output version information and exit
8a199ff6 74 --run try to run the given command, and emulate it if it fails
6599da04
JM
75
76Supported PROGRAM values:
77 aclocal touch file \`aclocal.m4'
78 autoconf touch file \`configure'
79 autoheader touch file \`config.h.in'
0539cb2c 80 autom4te touch the output file, or create a stub one
6599da04 81 automake touch all \`Makefile.in' files
8af14275
ILT
82 bison create \`y.tab.[ch]', if possible, from existing .[ch]
83 flex create \`lex.yy.c', if possible, from existing .c
8a199ff6 84 help2man touch the output file
8af14275 85 lex create \`lex.yy.c', if possible, from existing .c
6599da04 86 makeinfo touch the output file
8a199ff6 87 tar try tar, gnutar, gtar, then tar without non-portable flags
32b2511f
PB
88 yacc create \`y.tab.[ch]', if possible, from existing .[ch]
89
0539cb2c
RW
90Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
91\`g' are ignored when checking the name.
92
32b2511f 93Send bug reports to <bug-automake@gnu.org>."
0063a823 94 exit $?
6599da04
JM
95 ;;
96
97 -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
32b2511f 98 echo "missing $scriptversion (GNU Automake)"
0063a823 99 exit $?
6599da04
JM
100 ;;
101
102 -*)
103 echo 1>&2 "$0: Unknown \`$1' option"
104 echo 1>&2 "Try \`$0 --help' for more information"
105 exit 1
106 ;;
107
32b2511f
PB
108esac
109
0539cb2c
RW
110# normalize program name to check for.
111program=`echo "$1" | sed '
112 s/^gnu-//; t
113 s/^gnu//; t
114 s/^g//; t'`
115
32b2511f
PB
116# Now exit if we have it, but it failed. Also exit now if we
117# don't have it and --version was passed (most likely to detect
0539cb2c
RW
118# the program). This is about non-GNU programs, so use $1 not
119# $program.
120case $1 in
121 lex*|yacc*)
32b2511f
PB
122 # Not GNU programs, they don't have --version.
123 ;;
124
0539cb2c 125 tar*)
32b2511f
PB
126 if test -n "$run"; then
127 echo 1>&2 "ERROR: \`tar' requires --run"
128 exit 1
129 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
130 exit 1
131 fi
132 ;;
133
134 *)
8a199ff6
PE
135 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
136 # We have it, but it failed.
137 exit 1
32b2511f
PB
138 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
139 # Could not run --version or --help. This is probably someone
140 # running `$TOOL --version' or `$TOOL --help' to check whether
141 # $TOOL exists and not knowing $TOOL uses missing.
142 exit 1
8a199ff6 143 fi
32b2511f
PB
144 ;;
145esac
8a199ff6 146
32b2511f
PB
147# If it does not exist, or fails to run (possibly an outdated version),
148# try to emulate it.
0539cb2c 149case $program in
32b2511f 150 aclocal*)
6599da04 151 echo 1>&2 "\
32b2511f 152WARNING: \`$1' is $msg. You should only need it if
8a199ff6 153 you modified \`acinclude.m4' or \`${configure_ac}'. You might want
6599da04
JM
154 to install the \`Automake' and \`Perl' packages. Grab them from
155 any GNU archive site."
156 touch aclocal.m4
157 ;;
158
0539cb2c 159 autoconf*)
6599da04 160 echo 1>&2 "\
32b2511f 161WARNING: \`$1' is $msg. You should only need it if
8a199ff6 162 you modified \`${configure_ac}'. You might want to install the
6599da04
JM
163 \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
164 archive site."
165 touch configure
166 ;;
167
0539cb2c 168 autoheader*)
6599da04 169 echo 1>&2 "\
32b2511f 170WARNING: \`$1' is $msg. You should only need it if
8a199ff6 171 you modified \`acconfig.h' or \`${configure_ac}'. You might want
6599da04
JM
172 to install the \`Autoconf' and \`GNU m4' packages. Grab them
173 from any GNU archive site."
8a199ff6 174 files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
d207ebef
JM
175 test -z "$files" && files="config.h"
176 touch_files=
177 for f in $files; do
0539cb2c 178 case $f in
d207ebef
JM
179 *:*) touch_files="$touch_files "`echo "$f" |
180 sed -e 's/^[^:]*://' -e 's/:.*//'`;;
181 *) touch_files="$touch_files $f.in";;
182 esac
183 done
184 touch $touch_files
6599da04
JM
185 ;;
186
8a199ff6 187 automake*)
6599da04 188 echo 1>&2 "\
32b2511f 189WARNING: \`$1' is $msg. You should only need it if
8a199ff6 190 you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
6599da04
JM
191 You might want to install the \`Automake' and \`Perl' packages.
192 Grab them from any GNU archive site."
d207ebef
JM
193 find . -type f -name Makefile.am -print |
194 sed 's/\.am$/.in/' |
195 while read f; do touch "$f"; done
6599da04
JM
196 ;;
197
0539cb2c 198 autom4te*)
8a199ff6 199 echo 1>&2 "\
32b2511f
PB
200WARNING: \`$1' is needed, but is $msg.
201 You might have modified some files without having the
8a199ff6
PE
202 proper tools for further handling them.
203 You can get \`$1' as part of \`Autoconf' from any GNU
204 archive site."
205
0539cb2c
RW
206 file=`echo "$*" | sed -n "$sed_output"`
207 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
8a199ff6
PE
208 if test -f "$file"; then
209 touch $file
210 else
211 test -z "$file" || exec >$file
212 echo "#! /bin/sh"
213 echo "# Created by GNU Automake missing as a replacement of"
214 echo "# $ $@"
215 echo "exit 0"
216 chmod +x $file
217 exit 1
218 fi
219 ;;
220
0539cb2c 221 bison*|yacc*)
6599da04 222 echo 1>&2 "\
32b2511f 223WARNING: \`$1' $msg. You should only need it if
6599da04
JM
224 you modified a \`.y' file. You may need the \`Bison' package
225 in order for those modifications to take effect. You can get
226 \`Bison' from any GNU archive site."
8af14275 227 rm -f y.tab.c y.tab.h
0539cb2c 228 if test $# -ne 1; then
8af14275 229 eval LASTARG="\${$#}"
0539cb2c 230 case $LASTARG in
8af14275
ILT
231 *.y)
232 SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
0539cb2c 233 if test -f "$SRCFILE"; then
8af14275
ILT
234 cp "$SRCFILE" y.tab.c
235 fi
236 SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
0539cb2c 237 if test -f "$SRCFILE"; then
8af14275
ILT
238 cp "$SRCFILE" y.tab.h
239 fi
240 ;;
241 esac
242 fi
0539cb2c 243 if test ! -f y.tab.h; then
8af14275
ILT
244 echo >y.tab.h
245 fi
0539cb2c 246 if test ! -f y.tab.c; then
8af14275
ILT
247 echo 'main() { return 0; }' >y.tab.c
248 fi
249 ;;
250
0539cb2c 251 lex*|flex*)
8af14275 252 echo 1>&2 "\
32b2511f 253WARNING: \`$1' is $msg. You should only need it if
8af14275
ILT
254 you modified a \`.l' file. You may need the \`Flex' package
255 in order for those modifications to take effect. You can get
256 \`Flex' from any GNU archive site."
257 rm -f lex.yy.c
0539cb2c 258 if test $# -ne 1; then
8af14275 259 eval LASTARG="\${$#}"
0539cb2c 260 case $LASTARG in
8af14275
ILT
261 *.l)
262 SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
0539cb2c 263 if test -f "$SRCFILE"; then
8af14275
ILT
264 cp "$SRCFILE" lex.yy.c
265 fi
266 ;;
267 esac
268 fi
0539cb2c 269 if test ! -f lex.yy.c; then
8af14275
ILT
270 echo 'main() { return 0; }' >lex.yy.c
271 fi
6599da04
JM
272 ;;
273
0539cb2c 274 help2man*)
8a199ff6 275 echo 1>&2 "\
32b2511f 276WARNING: \`$1' is $msg. You should only need it if
8a199ff6
PE
277 you modified a dependency of a manual page. You may need the
278 \`Help2man' package in order for those modifications to take
279 effect. You can get \`Help2man' from any GNU archive site."
280
0539cb2c
RW
281 file=`echo "$*" | sed -n "$sed_output"`
282 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
283 if test -f "$file"; then
8a199ff6
PE
284 touch $file
285 else
286 test -z "$file" || exec >$file
287 echo ".ab help2man is required to generate this page"
0539cb2c 288 exit $?
8a199ff6
PE
289 fi
290 ;;
291
0539cb2c 292 makeinfo*)
6599da04 293 echo 1>&2 "\
32b2511f 294WARNING: \`$1' is $msg. You should only need it if
6599da04
JM
295 you modified a \`.texi' or \`.texinfo' file, or any other file
296 indirectly affecting the aspect of the manual. The spurious
297 call might also be the consequence of using a buggy \`make' (AIX,
298 DU, IRIX). You might want to install the \`Texinfo' package or
299 the \`GNU make' package. Grab either from any GNU archive site."
0063a823 300 # The file to touch is that specified with -o ...
0539cb2c
RW
301 file=`echo "$*" | sed -n "$sed_output"`
302 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
6599da04 303 if test -z "$file"; then
0063a823
KC
304 # ... or it is the one specified with @setfilename ...
305 infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
0539cb2c
RW
306 file=`sed -n '
307 /^@setfilename/{
308 s/.* \([^ ]*\) *$/\1/
309 p
310 q
311 }' $infile`
0063a823
KC
312 # ... or it is derived from the source name (dir/f.texi becomes f.info)
313 test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
6599da04 314 fi
0063a823
KC
315 # If the file does not exist, the user really needs makeinfo;
316 # let's fail without touching anything.
317 test -f $file || exit 1
6599da04
JM
318 touch $file
319 ;;
320
0539cb2c 321 tar*)
8a199ff6 322 shift
8a199ff6
PE
323
324 # We have already tried tar in the generic part.
325 # Look for gnutar/gtar before invocation to avoid ugly error
326 # messages.
327 if (gnutar --version > /dev/null 2>&1); then
328 gnutar "$@" && exit 0
329 fi
330 if (gtar --version > /dev/null 2>&1); then
331 gtar "$@" && exit 0
332 fi
333 firstarg="$1"
334 if shift; then
0539cb2c 335 case $firstarg in
8a199ff6
PE
336 *o*)
337 firstarg=`echo "$firstarg" | sed s/o//`
338 tar "$firstarg" "$@" && exit 0
339 ;;
340 esac
0539cb2c 341 case $firstarg in
8a199ff6
PE
342 *h*)
343 firstarg=`echo "$firstarg" | sed s/h//`
344 tar "$firstarg" "$@" && exit 0
345 ;;
346 esac
347 fi
348
349 echo 1>&2 "\
350WARNING: I can't seem to be able to run \`tar' with the given arguments.
351 You may want to install GNU tar or Free paxutils, or check the
352 command line arguments."
353 exit 1
354 ;;
355
6599da04
JM
356 *)
357 echo 1>&2 "\
32b2511f
PB
358WARNING: \`$1' is needed, and is $msg.
359 You might have modified some files without having the
6599da04 360 proper tools for further handling them. Check the \`README' file,
32b2511f 361 it often tells you about the needed prerequisites for installing
6599da04
JM
362 this package. You may also peek at any GNU archive site, in case
363 some other package would contain this missing \`$1' program."
364 exit 1
365 ;;
366esac
367
368exit 0
32b2511f
PB
369
370# Local variables:
371# eval: (add-hook 'write-file-hooks 'time-stamp)
372# time-stamp-start: "scriptversion="
373# time-stamp-format: "%:y-%02m-%02d.%02H"
0539cb2c
RW
374# time-stamp-time-zone: "UTC"
375# time-stamp-end: "; # UTC"
32b2511f 376# End: