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