xref: /freebsd/crypto/heimdal/missing (revision 1e413cf93298b5b97441a21d9a50fdcd0ee9945e)
1#! /bin/sh
2# Common stub for a few missing GNU programs while installing.
3
4scriptversion=2003-09-02.23
5
6# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003
7#   Free Software Foundation, Inc.
8# 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
22# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
23# 02111-1307, USA.
24
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=:
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
45msg="missing on your system"
46
47case "$1" in
48--run)
49  # Try to run requested program, and just exit if it succeeds.
50  run=
51  shift
52  "$@" && exit 0
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
62  ;;
63esac
64
65# If it does not exist, or fails to run (possibly an outdated version),
66# try to emulate it.
67case "$1" in
68
69  -h|--h|--he|--hel|--help)
70    echo "\
71$0 [OPTION]... PROGRAM [ARGUMENT]...
72
73Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
74error status if there is no known handling for PROGRAM.
75
76Options:
77  -h, --help      display this help and exit
78  -v, --version   output version information and exit
79  --run           try to run the given command, and emulate it if it fails
80
81Supported PROGRAM values:
82  aclocal      touch file \`aclocal.m4'
83  autoconf     touch file \`configure'
84  autoheader   touch file \`config.h.in'
85  automake     touch all \`Makefile.in' files
86  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
87  flex         create \`lex.yy.c', if possible, from existing .c
88  help2man     touch the output file
89  lex          create \`lex.yy.c', if possible, from existing .c
90  makeinfo     touch the output file
91  tar          try tar, gnutar, gtar, then tar without non-portable flags
92  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
93
94Send bug reports to <bug-automake@gnu.org>."
95    ;;
96
97  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
98    echo "missing $scriptversion (GNU Automake)"
99    ;;
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
107  aclocal*)
108    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
109       # We have it, but it failed.
110       exit 1
111    fi
112
113    echo 1>&2 "\
114WARNING: \`$1' is $msg.  You should only need it if
115         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
116         to install the \`Automake' and \`Perl' packages.  Grab them from
117         any GNU archive site."
118    touch aclocal.m4
119    ;;
120
121  autoconf)
122    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
123       # We have it, but it failed.
124       exit 1
125    fi
126
127    echo 1>&2 "\
128WARNING: \`$1' is $msg.  You should only need it if
129         you modified \`${configure_ac}'.  You might want to install the
130         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
131         archive site."
132    touch configure
133    ;;
134
135  autoheader)
136    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
137       # We have it, but it failed.
138       exit 1
139    fi
140
141    echo 1>&2 "\
142WARNING: \`$1' is $msg.  You should only need it if
143         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
144         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
145         from any GNU archive site."
146    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
147    test -z "$files" && files="config.h"
148    touch_files=
149    for f in $files; do
150      case "$f" in
151      *:*) touch_files="$touch_files "`echo "$f" |
152				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
153      *) touch_files="$touch_files $f.in";;
154      esac
155    done
156    touch $touch_files
157    ;;
158
159  automake*)
160    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
161       # We have it, but it failed.
162       exit 1
163    fi
164
165    echo 1>&2 "\
166WARNING: \`$1' is $msg.  You should only need it if
167         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
168         You might want to install the \`Automake' and \`Perl' packages.
169         Grab them from any GNU archive site."
170    find . -type f -name Makefile.am -print |
171	   sed 's/\.am$/.in/' |
172	   while read f; do touch "$f"; done
173    ;;
174
175  autom4te)
176    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
177       # We have it, but it failed.
178       exit 1
179    fi
180
181    echo 1>&2 "\
182WARNING: \`$1' is needed, but is $msg.
183         You might have modified some files without having the
184         proper tools for further handling them.
185         You can get \`$1' as part of \`Autoconf' from any GNU
186         archive site."
187
188    file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
189    test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
190    if test -f "$file"; then
191	touch $file
192    else
193	test -z "$file" || exec >$file
194	echo "#! /bin/sh"
195	echo "# Created by GNU Automake missing as a replacement of"
196	echo "#  $ $@"
197	echo "exit 0"
198	chmod +x $file
199	exit 1
200    fi
201    ;;
202
203  bison|yacc)
204    echo 1>&2 "\
205WARNING: \`$1' $msg.  You should only need it if
206         you modified a \`.y' file.  You may need the \`Bison' package
207         in order for those modifications to take effect.  You can get
208         \`Bison' from any GNU archive site."
209    rm -f y.tab.c y.tab.h
210    if [ $# -ne 1 ]; then
211        eval LASTARG="\${$#}"
212	case "$LASTARG" in
213	*.y)
214	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
215	    if [ -f "$SRCFILE" ]; then
216	         cp "$SRCFILE" y.tab.c
217	    fi
218	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
219	    if [ -f "$SRCFILE" ]; then
220	         cp "$SRCFILE" y.tab.h
221	    fi
222	  ;;
223	esac
224    fi
225    if [ ! -f y.tab.h ]; then
226	echo >y.tab.h
227    fi
228    if [ ! -f y.tab.c ]; then
229	echo 'main() { return 0; }' >y.tab.c
230    fi
231    ;;
232
233  lex|flex)
234    echo 1>&2 "\
235WARNING: \`$1' is $msg.  You should only need it if
236         you modified a \`.l' file.  You may need the \`Flex' package
237         in order for those modifications to take effect.  You can get
238         \`Flex' from any GNU archive site."
239    rm -f lex.yy.c
240    if [ $# -ne 1 ]; then
241        eval LASTARG="\${$#}"
242	case "$LASTARG" in
243	*.l)
244	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
245	    if [ -f "$SRCFILE" ]; then
246	         cp "$SRCFILE" lex.yy.c
247	    fi
248	  ;;
249	esac
250    fi
251    if [ ! -f lex.yy.c ]; then
252	echo 'main() { return 0; }' >lex.yy.c
253    fi
254    ;;
255
256  help2man)
257    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
258       # We have it, but it failed.
259       exit 1
260    fi
261
262    echo 1>&2 "\
263WARNING: \`$1' is $msg.  You should only need it if
264	 you modified a dependency of a manual page.  You may need the
265	 \`Help2man' package in order for those modifications to take
266	 effect.  You can get \`Help2man' from any GNU archive site."
267
268    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
269    if test -z "$file"; then
270	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
271    fi
272    if [ -f "$file" ]; then
273	touch $file
274    else
275	test -z "$file" || exec >$file
276	echo ".ab help2man is required to generate this page"
277	exit 1
278    fi
279    ;;
280
281  makeinfo)
282    if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
283       # We have makeinfo, but it failed.
284       exit 1
285    fi
286
287    echo 1>&2 "\
288WARNING: \`$1' is $msg.  You should only need it if
289         you modified a \`.texi' or \`.texinfo' file, or any other file
290         indirectly affecting the aspect of the manual.  The spurious
291         call might also be the consequence of using a buggy \`make' (AIX,
292         DU, IRIX).  You might want to install the \`Texinfo' package or
293         the \`GNU make' package.  Grab either from any GNU archive site."
294    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
295    if test -z "$file"; then
296      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
297      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
298    fi
299    touch $file
300    ;;
301
302  tar)
303    shift
304    if test -n "$run"; then
305      echo 1>&2 "ERROR: \`tar' requires --run"
306      exit 1
307    fi
308
309    # We have already tried tar in the generic part.
310    # Look for gnutar/gtar before invocation to avoid ugly error
311    # messages.
312    if (gnutar --version > /dev/null 2>&1); then
313       gnutar "$@" && exit 0
314    fi
315    if (gtar --version > /dev/null 2>&1); then
316       gtar "$@" && exit 0
317    fi
318    firstarg="$1"
319    if shift; then
320	case "$firstarg" in
321	*o*)
322	    firstarg=`echo "$firstarg" | sed s/o//`
323	    tar "$firstarg" "$@" && exit 0
324	    ;;
325	esac
326	case "$firstarg" in
327	*h*)
328	    firstarg=`echo "$firstarg" | sed s/h//`
329	    tar "$firstarg" "$@" && exit 0
330	    ;;
331	esac
332    fi
333
334    echo 1>&2 "\
335WARNING: I can't seem to be able to run \`tar' with the given arguments.
336         You may want to install GNU tar or Free paxutils, or check the
337         command line arguments."
338    exit 1
339    ;;
340
341  *)
342    echo 1>&2 "\
343WARNING: \`$1' is needed, and is $msg.
344         You might have modified some files without having the
345         proper tools for further handling them.  Check the \`README' file,
346         it often tells you about the needed prerequisites for installing
347         this package.  You may also peek at any GNU archive site, in case
348         some other package would contain this missing \`$1' program."
349    exit 1
350    ;;
351esac
352
353exit 0
354
355# Local variables:
356# eval: (add-hook 'write-file-hooks 'time-stamp)
357# time-stamp-start: "scriptversion="
358# time-stamp-format: "%:y-%02m-%02d.%02H"
359# time-stamp-end: "$"
360# End:
361