1#! /bin/sh
2# Common stub for a few missing GNU programs while installing.
3# Copyright (C) 1996, 1997, 1999 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
21if test $# -eq 0; then
22  echo 1>&2 "Try \`$0 --help' for more information"
23  exit 1
24fi
25
26run=:
27
28case "$1" in
29--run)
30  # Try to run requested program, and just exit if it succeeds.
31  run=
32  shift
33  "$@" && exit 0
34  ;;
35esac
36
37# If it does not exist, or fails to run (possibly an outdated version),
38# try to emulate it.
39case "$1" in
40
41  -h|--h|--he|--hel|--help)
42    echo "\
43$0 [OPTION]... PROGRAM [ARGUMENT]...
44
45Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
46error status if there is no known handling for PROGRAM.
47
48Options:
49  -h, --help      display this help and exit
50  -v, --version   output version information and exit
51  --run           try to run the given command, and emulate it if it fails
52
53Supported PROGRAM values:
54  aclocal      touch file \`aclocal.m4'
55  autoconf     touch file \`configure'
56  autoheader   touch file \`config.h.in'
57  automake     touch all \`Makefile.in' files
58  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
59  flex         create \`lex.yy.c', if possible, from existing .c
60  lex          create \`lex.yy.c', if possible, from existing .c
61  makeinfo     touch the output file
62  tar          try tar, gnutar, gtar, then tar without non-portable flags
63  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
64    ;;
65
66  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
67    echo "missing 0.2 - GNU automake"
68    ;;
69
70  -*)
71    echo 1>&2 "$0: Unknown \`$1' option"
72    echo 1>&2 "Try \`$0 --help' for more information"
73    exit 1
74    ;;
75
76  aclocal)
77    echo 1>&2 "\
78WARNING: \`$1' is missing on your system.  You should only need it if
79         you modified \`acinclude.m4' or \`configure.in'.  You might want
80         to install the \`Automake' and \`Perl' packages.  Grab them from
81         any GNU archive site."
82    touch aclocal.m4
83    ;;
84
85  autoconf)
86    echo 1>&2 "\
87WARNING: \`$1' is missing on your system.  You should only need it if
88         you modified \`configure.in'.  You might want to install the
89         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
90         archive site."
91    touch configure
92    ;;
93
94  autoheader)
95    echo 1>&2 "\
96WARNING: \`$1' is missing on your system.  You should only need it if
97         you modified \`acconfig.h' or \`configure.in'.  You might want
98         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
99         from any GNU archive site."
100    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.in`
101    test -z "$files" && files="config.h"
102    touch_files=
103    for f in $files; do
104      case "$f" in
105      *:*) touch_files="$touch_files "`echo "$f" |
106				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
107      *) touch_files="$touch_files $f.in";;
108      esac
109    done
110    touch $touch_files
111    ;;
112
113  automake)
114    echo 1>&2 "\
115WARNING: \`$1' is missing on your system.  You should only need it if
116         you modified \`Makefile.am', \`acinclude.m4' or \`configure.in'.
117         You might want to install the \`Automake' and \`Perl' packages.
118         Grab them from any GNU archive site."
119    find . -type f -name Makefile.am -print |
120	   sed 's/\.am$/.in/' |
121	   while read f; do touch "$f"; done
122    ;;
123
124  bison|yacc)
125    echo 1>&2 "\
126WARNING: \`$1' is missing on your system.  You should only need it if
127         you modified a \`.y' file.  You may need the \`Bison' package
128         in order for those modifications to take effect.  You can get
129         \`Bison' from any GNU archive site."
130    rm -f y.tab.c y.tab.h
131    if [ $# -ne 1 ]; then
132        eval LASTARG="\${$#}"
133	case "$LASTARG" in
134	*.y)
135	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
136	    if [ -f "$SRCFILE" ]; then
137	         cp "$SRCFILE" y.tab.c
138	    fi
139	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
140	    if [ -f "$SRCFILE" ]; then
141	         cp "$SRCFILE" y.tab.h
142	    fi
143	  ;;
144	esac
145    fi
146    if [ ! -f y.tab.h ]; then
147	echo >y.tab.h
148    fi
149    if [ ! -f y.tab.c ]; then
150	echo 'main() { return 0; }' >y.tab.c
151    fi
152    ;;
153
154  lex|flex)
155    echo 1>&2 "\
156WARNING: \`$1' is missing on your system.  You should only need it if
157         you modified a \`.l' file.  You may need the \`Flex' package
158         in order for those modifications to take effect.  You can get
159         \`Flex' from any GNU archive site."
160    rm -f lex.yy.c
161    if [ $# -ne 1 ]; then
162        eval LASTARG="\${$#}"
163	case "$LASTARG" in
164	*.l)
165	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
166	    if [ -f "$SRCFILE" ]; then
167	         cp "$SRCFILE" lex.yy.c
168	    fi
169	  ;;
170	esac
171    fi
172    if [ ! -f lex.yy.c ]; then
173	echo 'main() { return 0; }' >lex.yy.c
174    fi
175    ;;
176
177  makeinfo)
178    echo 1>&2 "\
179WARNING: \`$1' is missing on your system.  You should only need it if
180         you modified a \`.texi' or \`.texinfo' file, or any other file
181         indirectly affecting the aspect of the manual.  The spurious
182         call might also be the consequence of using a buggy \`make' (AIX,
183         DU, IRIX).  You might want to install the \`Texinfo' package or
184         the \`GNU make' package.  Grab either from any GNU archive site."
185    file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
186    if test -z "$file"; then
187      file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
188      file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
189    fi
190    touch $file
191    ;;
192
193  tar)
194    shift
195    if test -n "$run"; then
196      echo 1>&2 "ERROR: \`tar' requires --run"
197      exit 1
198    fi
199
200    # we have already tried tar in the generic part
201    gnutar ${1+"$@"} && exit 0
202    gtar ${1+"$@"} && exit 0
203    firstarg="$1"
204    if shift; then
205	case "$firstarg" in
206	*o*)
207	    firstarg=`echo "$firstarg" | sed s/o//`
208	    tar "$firstarg" ${1+"$@"} && exit 0
209	    ;;
210	esac
211	case "$firstarg" in
212	*h*)
213	    firstarg=`echo "$firstarg" | sed s/h//`
214	    tar "$firstarg" ${1+"$@"} && exit 0
215	    ;;
216	esac
217    fi
218
219    echo 1>&2 "\
220WARNING: I can't seem to be able to run \`tar' with the given arguments.
221         You may want to install GNU tar or Free paxutils, or check the
222         command line arguments."
223    exit 1
224    ;;
225
226  *)
227    echo 1>&2 "\
228WARNING: \`$1' is needed, and you do not seem to have it handy on your
229         system.  You might have modified some files without having the
230         proper tools for further handling them.  Check the \`README' file,
231         it often tells you about the needed prerequirements for installing
232         this package.  You may also peek at any GNU archive site, in case
233         some other package would contain this missing \`$1' program."
234    exit 1
235    ;;
236esac
237
238exit 0
239