blob: 1c8ff7049d8f3aaa9741c53e7f3145d9b76a77d8 [file] [log] [blame]
Lev Walkinf15320b2004-06-03 03:38:44 +00001#! /bin/sh
2# Common stub for a few missing GNU programs while installing.
Lev Walkine7c4b962010-11-09 03:10:36 -08003
4scriptversion=2006-05-10.23
5
6# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
7# Free Software Foundation, Inc.
Lev Walkinf15320b2004-06-03 03:38:44 +00008# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
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
21# along with this program; if not, write to the Free Software
Lev Walkine7c4b962010-11-09 03:10:36 -080022# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
23# 02110-1301, USA.
Lev Walkinf15320b2004-06-03 03:38:44 +000024
25# As a special exception to the GNU General Public License, if you
26# distribute this file as part of a program that contains a
27# configuration script generated by Autoconf, you may include it under
28# the same distribution terms that you use for the rest of that program.
29
30if test $# -eq 0; then
31 echo 1>&2 "Try \`$0 --help' for more information"
32 exit 1
33fi
34
35run=:
Lev Walkine7c4b962010-11-09 03:10:36 -080036sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
37sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
Lev Walkinf15320b2004-06-03 03:38:44 +000038
39# In the cases where this matters, `missing' is being run in the
40# srcdir already.
41if test -f configure.ac; then
42 configure_ac=configure.ac
43else
44 configure_ac=configure.in
45fi
46
Lev Walkine7c4b962010-11-09 03:10:36 -080047msg="missing on your system"
48
49case $1 in
Lev Walkinf15320b2004-06-03 03:38:44 +000050--run)
51 # Try to run requested program, and just exit if it succeeds.
52 run=
53 shift
54 "$@" && exit 0
Lev Walkine7c4b962010-11-09 03:10:36 -080055 # Exit code 63 means version mismatch. This often happens
56 # when the user try to use an ancient version of a tool on
57 # a file that requires a minimum version. In this case we
58 # we should proceed has if the program had been absent, or
59 # if --run hadn't been passed.
60 if test $? = 63; then
61 run=:
62 msg="probably too old"
63 fi
Lev Walkinf15320b2004-06-03 03:38:44 +000064 ;;
Lev Walkinf15320b2004-06-03 03:38:44 +000065
66 -h|--h|--he|--hel|--help)
67 echo "\
68$0 [OPTION]... PROGRAM [ARGUMENT]...
69
70Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
71error status if there is no known handling for PROGRAM.
72
73Options:
74 -h, --help display this help and exit
75 -v, --version output version information and exit
76 --run try to run the given command, and emulate it if it fails
77
78Supported PROGRAM values:
79 aclocal touch file \`aclocal.m4'
80 autoconf touch file \`configure'
81 autoheader touch file \`config.h.in'
Lev Walkine7c4b962010-11-09 03:10:36 -080082 autom4te touch the output file, or create a stub one
Lev Walkinf15320b2004-06-03 03:38:44 +000083 automake touch all \`Makefile.in' files
84 bison create \`y.tab.[ch]', if possible, from existing .[ch]
85 flex create \`lex.yy.c', if possible, from existing .c
86 help2man touch the output file
87 lex create \`lex.yy.c', if possible, from existing .c
88 makeinfo touch the output file
89 tar try tar, gnutar, gtar, then tar without non-portable flags
Lev Walkine7c4b962010-11-09 03:10:36 -080090 yacc create \`y.tab.[ch]', if possible, from existing .[ch]
91
92Send bug reports to <bug-automake@gnu.org>."
93 exit $?
Lev Walkinf15320b2004-06-03 03:38:44 +000094 ;;
95
96 -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
Lev Walkine7c4b962010-11-09 03:10:36 -080097 echo "missing $scriptversion (GNU Automake)"
98 exit $?
Lev Walkinf15320b2004-06-03 03:38:44 +000099 ;;
100
101 -*)
102 echo 1>&2 "$0: Unknown \`$1' option"
103 echo 1>&2 "Try \`$0 --help' for more information"
104 exit 1
105 ;;
106
Lev Walkine7c4b962010-11-09 03:10:36 -0800107esac
108
109# Now exit if we have it, but it failed. Also exit now if we
110# don't have it and --version was passed (most likely to detect
111# the program).
112case $1 in
113 lex|yacc)
114 # Not GNU programs, they don't have --version.
115 ;;
116
117 tar)
118 if test -n "$run"; then
119 echo 1>&2 "ERROR: \`tar' requires --run"
120 exit 1
121 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
122 exit 1
123 fi
124 ;;
125
126 *)
127 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
128 # We have it, but it failed.
129 exit 1
130 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
131 # Could not run --version or --help. This is probably someone
132 # running `$TOOL --version' or `$TOOL --help' to check whether
133 # $TOOL exists and not knowing $TOOL uses missing.
134 exit 1
135 fi
136 ;;
137esac
138
139# If it does not exist, or fails to run (possibly an outdated version),
140# try to emulate it.
141case $1 in
142 aclocal*)
Lev Walkinf15320b2004-06-03 03:38:44 +0000143 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800144WARNING: \`$1' is $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000145 you modified \`acinclude.m4' or \`${configure_ac}'. You might want
146 to install the \`Automake' and \`Perl' packages. Grab them from
147 any GNU archive site."
148 touch aclocal.m4
149 ;;
150
151 autoconf)
152 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800153WARNING: \`$1' is $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000154 you modified \`${configure_ac}'. You might want to install the
155 \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
156 archive site."
157 touch configure
158 ;;
159
160 autoheader)
161 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800162WARNING: \`$1' is $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000163 you modified \`acconfig.h' or \`${configure_ac}'. You might want
164 to install the \`Autoconf' and \`GNU m4' packages. Grab them
165 from any GNU archive site."
166 files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
167 test -z "$files" && files="config.h"
168 touch_files=
169 for f in $files; do
Lev Walkine7c4b962010-11-09 03:10:36 -0800170 case $f in
Lev Walkinf15320b2004-06-03 03:38:44 +0000171 *:*) touch_files="$touch_files "`echo "$f" |
172 sed -e 's/^[^:]*://' -e 's/:.*//'`;;
173 *) touch_files="$touch_files $f.in";;
174 esac
175 done
176 touch $touch_files
177 ;;
178
Lev Walkine7c4b962010-11-09 03:10:36 -0800179 automake*)
Lev Walkinf15320b2004-06-03 03:38:44 +0000180 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800181WARNING: \`$1' is $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000182 you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
183 You might want to install the \`Automake' and \`Perl' packages.
184 Grab them from any GNU archive site."
185 find . -type f -name Makefile.am -print |
186 sed 's/\.am$/.in/' |
187 while read f; do touch "$f"; done
188 ;;
189
Lev Walkine7c4b962010-11-09 03:10:36 -0800190 autom4te)
191 echo 1>&2 "\
192WARNING: \`$1' is needed, but is $msg.
193 You might have modified some files without having the
194 proper tools for further handling them.
195 You can get \`$1' as part of \`Autoconf' from any GNU
196 archive site."
197
198 file=`echo "$*" | sed -n "$sed_output"`
199 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
200 if test -f "$file"; then
201 touch $file
202 else
203 test -z "$file" || exec >$file
204 echo "#! /bin/sh"
205 echo "# Created by GNU Automake missing as a replacement of"
206 echo "# $ $@"
207 echo "exit 0"
208 chmod +x $file
209 exit 1
210 fi
211 ;;
212
Lev Walkinf15320b2004-06-03 03:38:44 +0000213 bison|yacc)
214 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800215WARNING: \`$1' $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000216 you modified a \`.y' file. You may need the \`Bison' package
217 in order for those modifications to take effect. You can get
218 \`Bison' from any GNU archive site."
219 rm -f y.tab.c y.tab.h
Lev Walkine7c4b962010-11-09 03:10:36 -0800220 if test $# -ne 1; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000221 eval LASTARG="\${$#}"
Lev Walkine7c4b962010-11-09 03:10:36 -0800222 case $LASTARG in
Lev Walkinf15320b2004-06-03 03:38:44 +0000223 *.y)
224 SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
Lev Walkine7c4b962010-11-09 03:10:36 -0800225 if test -f "$SRCFILE"; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000226 cp "$SRCFILE" y.tab.c
227 fi
228 SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
Lev Walkine7c4b962010-11-09 03:10:36 -0800229 if test -f "$SRCFILE"; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000230 cp "$SRCFILE" y.tab.h
231 fi
232 ;;
233 esac
234 fi
Lev Walkine7c4b962010-11-09 03:10:36 -0800235 if test ! -f y.tab.h; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000236 echo >y.tab.h
237 fi
Lev Walkine7c4b962010-11-09 03:10:36 -0800238 if test ! -f y.tab.c; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000239 echo 'main() { return 0; }' >y.tab.c
240 fi
241 ;;
242
243 lex|flex)
244 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800245WARNING: \`$1' is $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000246 you modified a \`.l' file. You may need the \`Flex' package
247 in order for those modifications to take effect. You can get
248 \`Flex' from any GNU archive site."
249 rm -f lex.yy.c
Lev Walkine7c4b962010-11-09 03:10:36 -0800250 if test $# -ne 1; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000251 eval LASTARG="\${$#}"
Lev Walkine7c4b962010-11-09 03:10:36 -0800252 case $LASTARG in
Lev Walkinf15320b2004-06-03 03:38:44 +0000253 *.l)
254 SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
Lev Walkine7c4b962010-11-09 03:10:36 -0800255 if test -f "$SRCFILE"; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000256 cp "$SRCFILE" lex.yy.c
257 fi
258 ;;
259 esac
260 fi
Lev Walkine7c4b962010-11-09 03:10:36 -0800261 if test ! -f lex.yy.c; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000262 echo 'main() { return 0; }' >lex.yy.c
263 fi
264 ;;
265
266 help2man)
267 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800268WARNING: \`$1' is $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000269 you modified a dependency of a manual page. You may need the
270 \`Help2man' package in order for those modifications to take
271 effect. You can get \`Help2man' from any GNU archive site."
272
Lev Walkine7c4b962010-11-09 03:10:36 -0800273 file=`echo "$*" | sed -n "$sed_output"`
274 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
275 if test -f "$file"; then
Lev Walkinf15320b2004-06-03 03:38:44 +0000276 touch $file
277 else
278 test -z "$file" || exec >$file
279 echo ".ab help2man is required to generate this page"
280 exit 1
281 fi
282 ;;
283
284 makeinfo)
Lev Walkinf15320b2004-06-03 03:38:44 +0000285 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800286WARNING: \`$1' is $msg. You should only need it if
Lev Walkinf15320b2004-06-03 03:38:44 +0000287 you modified a \`.texi' or \`.texinfo' file, or any other file
288 indirectly affecting the aspect of the manual. The spurious
289 call might also be the consequence of using a buggy \`make' (AIX,
290 DU, IRIX). You might want to install the \`Texinfo' package or
291 the \`GNU make' package. Grab either from any GNU archive site."
Lev Walkine7c4b962010-11-09 03:10:36 -0800292 # The file to touch is that specified with -o ...
293 file=`echo "$*" | sed -n "$sed_output"`
294 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
Lev Walkinf15320b2004-06-03 03:38:44 +0000295 if test -z "$file"; then
Lev Walkine7c4b962010-11-09 03:10:36 -0800296 # ... or it is the one specified with @setfilename ...
297 infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
298 file=`sed -n '
299 /^@setfilename/{
300 s/.* \([^ ]*\) *$/\1/
301 p
302 q
303 }' $infile`
304 # ... or it is derived from the source name (dir/f.texi becomes f.info)
305 test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
Lev Walkinf15320b2004-06-03 03:38:44 +0000306 fi
Lev Walkine7c4b962010-11-09 03:10:36 -0800307 # If the file does not exist, the user really needs makeinfo;
308 # let's fail without touching anything.
309 test -f $file || exit 1
Lev Walkinf15320b2004-06-03 03:38:44 +0000310 touch $file
311 ;;
312
313 tar)
314 shift
Lev Walkinf15320b2004-06-03 03:38:44 +0000315
316 # We have already tried tar in the generic part.
317 # Look for gnutar/gtar before invocation to avoid ugly error
318 # messages.
319 if (gnutar --version > /dev/null 2>&1); then
Lev Walkine7c4b962010-11-09 03:10:36 -0800320 gnutar "$@" && exit 0
Lev Walkinf15320b2004-06-03 03:38:44 +0000321 fi
322 if (gtar --version > /dev/null 2>&1); then
Lev Walkine7c4b962010-11-09 03:10:36 -0800323 gtar "$@" && exit 0
Lev Walkinf15320b2004-06-03 03:38:44 +0000324 fi
325 firstarg="$1"
326 if shift; then
Lev Walkine7c4b962010-11-09 03:10:36 -0800327 case $firstarg in
Lev Walkinf15320b2004-06-03 03:38:44 +0000328 *o*)
329 firstarg=`echo "$firstarg" | sed s/o//`
Lev Walkine7c4b962010-11-09 03:10:36 -0800330 tar "$firstarg" "$@" && exit 0
Lev Walkinf15320b2004-06-03 03:38:44 +0000331 ;;
332 esac
Lev Walkine7c4b962010-11-09 03:10:36 -0800333 case $firstarg in
Lev Walkinf15320b2004-06-03 03:38:44 +0000334 *h*)
335 firstarg=`echo "$firstarg" | sed s/h//`
Lev Walkine7c4b962010-11-09 03:10:36 -0800336 tar "$firstarg" "$@" && exit 0
Lev Walkinf15320b2004-06-03 03:38:44 +0000337 ;;
338 esac
339 fi
340
341 echo 1>&2 "\
342WARNING: I can't seem to be able to run \`tar' with the given arguments.
343 You may want to install GNU tar or Free paxutils, or check the
344 command line arguments."
345 exit 1
346 ;;
347
348 *)
349 echo 1>&2 "\
Lev Walkine7c4b962010-11-09 03:10:36 -0800350WARNING: \`$1' is needed, and is $msg.
351 You might have modified some files without having the
Lev Walkinf15320b2004-06-03 03:38:44 +0000352 proper tools for further handling them. Check the \`README' file,
Lev Walkine7c4b962010-11-09 03:10:36 -0800353 it often tells you about the needed prerequisites for installing
Lev Walkinf15320b2004-06-03 03:38:44 +0000354 this package. You may also peek at any GNU archive site, in case
355 some other package would contain this missing \`$1' program."
356 exit 1
357 ;;
358esac
359
360exit 0
Lev Walkine7c4b962010-11-09 03:10:36 -0800361
362# Local variables:
363# eval: (add-hook 'write-file-hooks 'time-stamp)
364# time-stamp-start: "scriptversion="
365# time-stamp-format: "%:y-%02m-%02d.%02H"
366# time-stamp-end: "$"
367# End: