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