missing revision e531b1a7
13da7aff1Smrg#! /bin/sh
23da7aff1Smrg# Common stub for a few missing GNU programs while installing.
3e531b1a7Smrg
4e531b1a7Smrgscriptversion=2009-04-28.21; # UTC
5e531b1a7Smrg
6e531b1a7Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
7e531b1a7Smrg# 2008, 2009 Free Software Foundation, Inc.
83da7aff1Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
93da7aff1Smrg
103da7aff1Smrg# This program is free software; you can redistribute it and/or modify
113da7aff1Smrg# it under the terms of the GNU General Public License as published by
123da7aff1Smrg# the Free Software Foundation; either version 2, or (at your option)
133da7aff1Smrg# any later version.
143da7aff1Smrg
153da7aff1Smrg# This program is distributed in the hope that it will be useful,
163da7aff1Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
173da7aff1Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
183da7aff1Smrg# GNU General Public License for more details.
193da7aff1Smrg
203da7aff1Smrg# You should have received a copy of the GNU General Public License
21e531b1a7Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
223da7aff1Smrg
233da7aff1Smrg# As a special exception to the GNU General Public License, if you
243da7aff1Smrg# distribute this file as part of a program that contains a
253da7aff1Smrg# configuration script generated by Autoconf, you may include it under
263da7aff1Smrg# the same distribution terms that you use for the rest of that program.
273da7aff1Smrg
283da7aff1Smrgif test $# -eq 0; then
293da7aff1Smrg  echo 1>&2 "Try \`$0 --help' for more information"
303da7aff1Smrg  exit 1
313da7aff1Smrgfi
323da7aff1Smrg
333da7aff1Smrgrun=:
34e531b1a7Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
35e531b1a7Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
363da7aff1Smrg
373da7aff1Smrg# In the cases where this matters, `missing' is being run in the
383da7aff1Smrg# srcdir already.
393da7aff1Smrgif test -f configure.ac; then
403da7aff1Smrg  configure_ac=configure.ac
413da7aff1Smrgelse
423da7aff1Smrg  configure_ac=configure.in
433da7aff1Smrgfi
443da7aff1Smrg
45e531b1a7Smrgmsg="missing on your system"
46e531b1a7Smrg
47e531b1a7Smrgcase $1 in
483da7aff1Smrg--run)
493da7aff1Smrg  # Try to run requested program, and just exit if it succeeds.
503da7aff1Smrg  run=
513da7aff1Smrg  shift
523da7aff1Smrg  "$@" && exit 0
53e531b1a7Smrg  # Exit code 63 means version mismatch.  This often happens
54e531b1a7Smrg  # when the user try to use an ancient version of a tool on
55e531b1a7Smrg  # a file that requires a minimum version.  In this case we
56e531b1a7Smrg  # we should proceed has if the program had been absent, or
57e531b1a7Smrg  # if --run hadn't been passed.
58e531b1a7Smrg  if test $? = 63; then
59e531b1a7Smrg    run=:
60e531b1a7Smrg    msg="probably too old"
61e531b1a7Smrg  fi
623da7aff1Smrg  ;;
633da7aff1Smrg
643da7aff1Smrg  -h|--h|--he|--hel|--help)
653da7aff1Smrg    echo "\
663da7aff1Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
673da7aff1Smrg
683da7aff1SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
693da7aff1Smrgerror status if there is no known handling for PROGRAM.
703da7aff1Smrg
713da7aff1SmrgOptions:
723da7aff1Smrg  -h, --help      display this help and exit
733da7aff1Smrg  -v, --version   output version information and exit
743da7aff1Smrg  --run           try to run the given command, and emulate it if it fails
753da7aff1Smrg
763da7aff1SmrgSupported PROGRAM values:
773da7aff1Smrg  aclocal      touch file \`aclocal.m4'
783da7aff1Smrg  autoconf     touch file \`configure'
793da7aff1Smrg  autoheader   touch file \`config.h.in'
80e531b1a7Smrg  autom4te     touch the output file, or create a stub one
813da7aff1Smrg  automake     touch all \`Makefile.in' files
823da7aff1Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
833da7aff1Smrg  flex         create \`lex.yy.c', if possible, from existing .c
843da7aff1Smrg  help2man     touch the output file
853da7aff1Smrg  lex          create \`lex.yy.c', if possible, from existing .c
863da7aff1Smrg  makeinfo     touch the output file
873da7aff1Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
88e531b1a7Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
89e531b1a7Smrg
90e531b1a7SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
91e531b1a7Smrg\`g' are ignored when checking the name.
92e531b1a7Smrg
93e531b1a7SmrgSend bug reports to <bug-automake@gnu.org>."
94e531b1a7Smrg    exit $?
953da7aff1Smrg    ;;
963da7aff1Smrg
973da7aff1Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
98e531b1a7Smrg    echo "missing $scriptversion (GNU Automake)"
99e531b1a7Smrg    exit $?
1003da7aff1Smrg    ;;
1013da7aff1Smrg
1023da7aff1Smrg  -*)
1033da7aff1Smrg    echo 1>&2 "$0: Unknown \`$1' option"
1043da7aff1Smrg    echo 1>&2 "Try \`$0 --help' for more information"
1053da7aff1Smrg    exit 1
1063da7aff1Smrg    ;;
1073da7aff1Smrg
108e531b1a7Smrgesac
109e531b1a7Smrg
110e531b1a7Smrg# normalize program name to check for.
111e531b1a7Smrgprogram=`echo "$1" | sed '
112e531b1a7Smrg  s/^gnu-//; t
113e531b1a7Smrg  s/^gnu//; t
114e531b1a7Smrg  s/^g//; t'`
115e531b1a7Smrg
116e531b1a7Smrg# Now exit if we have it, but it failed.  Also exit now if we
117e531b1a7Smrg# don't have it and --version was passed (most likely to detect
118e531b1a7Smrg# the program).  This is about non-GNU programs, so use $1 not
119e531b1a7Smrg# $program.
120e531b1a7Smrgcase $1 in
121e531b1a7Smrg  lex*|yacc*)
122e531b1a7Smrg    # Not GNU programs, they don't have --version.
123e531b1a7Smrg    ;;
124e531b1a7Smrg
125e531b1a7Smrg  tar*)
126e531b1a7Smrg    if test -n "$run"; then
127e531b1a7Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
128e531b1a7Smrg       exit 1
129e531b1a7Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
130e531b1a7Smrg       exit 1
131e531b1a7Smrg    fi
132e531b1a7Smrg    ;;
133e531b1a7Smrg
134e531b1a7Smrg  *)
1353da7aff1Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1363da7aff1Smrg       # We have it, but it failed.
1373da7aff1Smrg       exit 1
138e531b1a7Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
139e531b1a7Smrg       # Could not run --version or --help.  This is probably someone
140e531b1a7Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
141e531b1a7Smrg       # $TOOL exists and not knowing $TOOL uses missing.
142e531b1a7Smrg       exit 1
1433da7aff1Smrg    fi
144e531b1a7Smrg    ;;
145e531b1a7Smrgesac
1463da7aff1Smrg
147e531b1a7Smrg# If it does not exist, or fails to run (possibly an outdated version),
148e531b1a7Smrg# try to emulate it.
149e531b1a7Smrgcase $program in
150e531b1a7Smrg  aclocal*)
1513da7aff1Smrg    echo 1>&2 "\
152e531b1a7SmrgWARNING: \`$1' is $msg.  You should only need it if
1533da7aff1Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
1543da7aff1Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
1553da7aff1Smrg         any GNU archive site."
1563da7aff1Smrg    touch aclocal.m4
1573da7aff1Smrg    ;;
1583da7aff1Smrg
159e531b1a7Smrg  autoconf*)
1603da7aff1Smrg    echo 1>&2 "\
161e531b1a7SmrgWARNING: \`$1' is $msg.  You should only need it if
1623da7aff1Smrg         you modified \`${configure_ac}'.  You might want to install the
1633da7aff1Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
1643da7aff1Smrg         archive site."
1653da7aff1Smrg    touch configure
1663da7aff1Smrg    ;;
1673da7aff1Smrg
168e531b1a7Smrg  autoheader*)
1693da7aff1Smrg    echo 1>&2 "\
170e531b1a7SmrgWARNING: \`$1' is $msg.  You should only need it if
1713da7aff1Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
1723da7aff1Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
1733da7aff1Smrg         from any GNU archive site."
1743da7aff1Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1753da7aff1Smrg    test -z "$files" && files="config.h"
1763da7aff1Smrg    touch_files=
1773da7aff1Smrg    for f in $files; do
178e531b1a7Smrg      case $f in
1793da7aff1Smrg      *:*) touch_files="$touch_files "`echo "$f" |
1803da7aff1Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1813da7aff1Smrg      *) touch_files="$touch_files $f.in";;
1823da7aff1Smrg      esac
1833da7aff1Smrg    done
1843da7aff1Smrg    touch $touch_files
1853da7aff1Smrg    ;;
1863da7aff1Smrg
1873da7aff1Smrg  automake*)
1883da7aff1Smrg    echo 1>&2 "\
189e531b1a7SmrgWARNING: \`$1' is $msg.  You should only need it if
1903da7aff1Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
1913da7aff1Smrg         You might want to install the \`Automake' and \`Perl' packages.
1923da7aff1Smrg         Grab them from any GNU archive site."
1933da7aff1Smrg    find . -type f -name Makefile.am -print |
1943da7aff1Smrg	   sed 's/\.am$/.in/' |
1953da7aff1Smrg	   while read f; do touch "$f"; done
1963da7aff1Smrg    ;;
1973da7aff1Smrg
198e531b1a7Smrg  autom4te*)
1993da7aff1Smrg    echo 1>&2 "\
200e531b1a7SmrgWARNING: \`$1' is needed, but is $msg.
201e531b1a7Smrg         You might have modified some files without having the
2023da7aff1Smrg         proper tools for further handling them.
2033da7aff1Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
2043da7aff1Smrg         archive site."
2053da7aff1Smrg
206e531b1a7Smrg    file=`echo "$*" | sed -n "$sed_output"`
207e531b1a7Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2083da7aff1Smrg    if test -f "$file"; then
2093da7aff1Smrg	touch $file
2103da7aff1Smrg    else
2113da7aff1Smrg	test -z "$file" || exec >$file
2123da7aff1Smrg	echo "#! /bin/sh"
2133da7aff1Smrg	echo "# Created by GNU Automake missing as a replacement of"
2143da7aff1Smrg	echo "#  $ $@"
2153da7aff1Smrg	echo "exit 0"
2163da7aff1Smrg	chmod +x $file
2173da7aff1Smrg	exit 1
2183da7aff1Smrg    fi
2193da7aff1Smrg    ;;
2203da7aff1Smrg
221e531b1a7Smrg  bison*|yacc*)
2223da7aff1Smrg    echo 1>&2 "\
223e531b1a7SmrgWARNING: \`$1' $msg.  You should only need it if
2243da7aff1Smrg         you modified a \`.y' file.  You may need the \`Bison' package
2253da7aff1Smrg         in order for those modifications to take effect.  You can get
2263da7aff1Smrg         \`Bison' from any GNU archive site."
2273da7aff1Smrg    rm -f y.tab.c y.tab.h
228e531b1a7Smrg    if test $# -ne 1; then
2293da7aff1Smrg        eval LASTARG="\${$#}"
230e531b1a7Smrg	case $LASTARG in
2313da7aff1Smrg	*.y)
2323da7aff1Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
233e531b1a7Smrg	    if test -f "$SRCFILE"; then
2343da7aff1Smrg	         cp "$SRCFILE" y.tab.c
2353da7aff1Smrg	    fi
2363da7aff1Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
237e531b1a7Smrg	    if test -f "$SRCFILE"; then
2383da7aff1Smrg	         cp "$SRCFILE" y.tab.h
2393da7aff1Smrg	    fi
2403da7aff1Smrg	  ;;
2413da7aff1Smrg	esac
2423da7aff1Smrg    fi
243e531b1a7Smrg    if test ! -f y.tab.h; then
2443da7aff1Smrg	echo >y.tab.h
2453da7aff1Smrg    fi
246e531b1a7Smrg    if test ! -f y.tab.c; then
2473da7aff1Smrg	echo 'main() { return 0; }' >y.tab.c
2483da7aff1Smrg    fi
2493da7aff1Smrg    ;;
2503da7aff1Smrg
251e531b1a7Smrg  lex*|flex*)
2523da7aff1Smrg    echo 1>&2 "\
253e531b1a7SmrgWARNING: \`$1' is $msg.  You should only need it if
2543da7aff1Smrg         you modified a \`.l' file.  You may need the \`Flex' package
2553da7aff1Smrg         in order for those modifications to take effect.  You can get
2563da7aff1Smrg         \`Flex' from any GNU archive site."
2573da7aff1Smrg    rm -f lex.yy.c
258e531b1a7Smrg    if test $# -ne 1; then
2593da7aff1Smrg        eval LASTARG="\${$#}"
260e531b1a7Smrg	case $LASTARG in
2613da7aff1Smrg	*.l)
2623da7aff1Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
263e531b1a7Smrg	    if test -f "$SRCFILE"; then
2643da7aff1Smrg	         cp "$SRCFILE" lex.yy.c
2653da7aff1Smrg	    fi
2663da7aff1Smrg	  ;;
2673da7aff1Smrg	esac
2683da7aff1Smrg    fi
269e531b1a7Smrg    if test ! -f lex.yy.c; then
2703da7aff1Smrg	echo 'main() { return 0; }' >lex.yy.c
2713da7aff1Smrg    fi
2723da7aff1Smrg    ;;
2733da7aff1Smrg
274e531b1a7Smrg  help2man*)
2753da7aff1Smrg    echo 1>&2 "\
276e531b1a7SmrgWARNING: \`$1' is $msg.  You should only need it if
2773da7aff1Smrg	 you modified a dependency of a manual page.  You may need the
2783da7aff1Smrg	 \`Help2man' package in order for those modifications to take
2793da7aff1Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
2803da7aff1Smrg
281e531b1a7Smrg    file=`echo "$*" | sed -n "$sed_output"`
282e531b1a7Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
283e531b1a7Smrg    if test -f "$file"; then
2843da7aff1Smrg	touch $file
2853da7aff1Smrg    else
2863da7aff1Smrg	test -z "$file" || exec >$file
2873da7aff1Smrg	echo ".ab help2man is required to generate this page"
288e531b1a7Smrg	exit $?
2893da7aff1Smrg    fi
2903da7aff1Smrg    ;;
2913da7aff1Smrg
292e531b1a7Smrg  makeinfo*)
2933da7aff1Smrg    echo 1>&2 "\
294e531b1a7SmrgWARNING: \`$1' is $msg.  You should only need it if
2953da7aff1Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
2963da7aff1Smrg         indirectly affecting the aspect of the manual.  The spurious
2973da7aff1Smrg         call might also be the consequence of using a buggy \`make' (AIX,
2983da7aff1Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
2993da7aff1Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
300e531b1a7Smrg    # The file to touch is that specified with -o ...
301e531b1a7Smrg    file=`echo "$*" | sed -n "$sed_output"`
302e531b1a7Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
3033da7aff1Smrg    if test -z "$file"; then
304e531b1a7Smrg      # ... or it is the one specified with @setfilename ...
305e531b1a7Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
306e531b1a7Smrg      file=`sed -n '
307e531b1a7Smrg	/^@setfilename/{
308e531b1a7Smrg	  s/.* \([^ ]*\) *$/\1/
309e531b1a7Smrg	  p
310e531b1a7Smrg	  q
311e531b1a7Smrg	}' $infile`
312e531b1a7Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
313e531b1a7Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
3143da7aff1Smrg    fi
315e531b1a7Smrg    # If the file does not exist, the user really needs makeinfo;
316e531b1a7Smrg    # let's fail without touching anything.
317e531b1a7Smrg    test -f $file || exit 1
3183da7aff1Smrg    touch $file
3193da7aff1Smrg    ;;
3203da7aff1Smrg
321e531b1a7Smrg  tar*)
3223da7aff1Smrg    shift
3233da7aff1Smrg
3243da7aff1Smrg    # We have already tried tar in the generic part.
3253da7aff1Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
3263da7aff1Smrg    # messages.
3273da7aff1Smrg    if (gnutar --version > /dev/null 2>&1); then
3283da7aff1Smrg       gnutar "$@" && exit 0
3293da7aff1Smrg    fi
3303da7aff1Smrg    if (gtar --version > /dev/null 2>&1); then
3313da7aff1Smrg       gtar "$@" && exit 0
3323da7aff1Smrg    fi
3333da7aff1Smrg    firstarg="$1"
3343da7aff1Smrg    if shift; then
335e531b1a7Smrg	case $firstarg in
3363da7aff1Smrg	*o*)
3373da7aff1Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
3383da7aff1Smrg	    tar "$firstarg" "$@" && exit 0
3393da7aff1Smrg	    ;;
3403da7aff1Smrg	esac
341e531b1a7Smrg	case $firstarg in
3423da7aff1Smrg	*h*)
3433da7aff1Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
3443da7aff1Smrg	    tar "$firstarg" "$@" && exit 0
3453da7aff1Smrg	    ;;
3463da7aff1Smrg	esac
3473da7aff1Smrg    fi
3483da7aff1Smrg
3493da7aff1Smrg    echo 1>&2 "\
3503da7aff1SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
3513da7aff1Smrg         You may want to install GNU tar or Free paxutils, or check the
3523da7aff1Smrg         command line arguments."
3533da7aff1Smrg    exit 1
3543da7aff1Smrg    ;;
3553da7aff1Smrg
3563da7aff1Smrg  *)
3573da7aff1Smrg    echo 1>&2 "\
358e531b1a7SmrgWARNING: \`$1' is needed, and is $msg.
359e531b1a7Smrg         You might have modified some files without having the
3603da7aff1Smrg         proper tools for further handling them.  Check the \`README' file,
3613da7aff1Smrg         it often tells you about the needed prerequisites for installing
3623da7aff1Smrg         this package.  You may also peek at any GNU archive site, in case
3633da7aff1Smrg         some other package would contain this missing \`$1' program."
3643da7aff1Smrg    exit 1
3653da7aff1Smrg    ;;
3663da7aff1Smrgesac
3673da7aff1Smrg
3683da7aff1Smrgexit 0
369e531b1a7Smrg
370e531b1a7Smrg# Local variables:
371e531b1a7Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
372e531b1a7Smrg# time-stamp-start: "scriptversion="
373e531b1a7Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
374e531b1a7Smrg# time-stamp-time-zone: "UTC"
375e531b1a7Smrg# time-stamp-end: "; # UTC"
376e531b1a7Smrg# End:
377