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