missing revision f14f4646
15dfecf96Smrg#! /bin/sh
25dfecf96Smrg# Common stub for a few missing GNU programs while installing.
35dfecf96Smrg
4f14f4646Smrgscriptversion=2006-05-10.23
55dfecf96Smrg
6f14f4646Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
75dfecf96Smrg#   Free Software Foundation, Inc.
85dfecf96Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
95dfecf96Smrg
105dfecf96Smrg# This program is free software; you can redistribute it and/or modify
115dfecf96Smrg# it under the terms of the GNU General Public License as published by
125dfecf96Smrg# the Free Software Foundation; either version 2, or (at your option)
135dfecf96Smrg# any later version.
145dfecf96Smrg
155dfecf96Smrg# This program is distributed in the hope that it will be useful,
165dfecf96Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
175dfecf96Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
185dfecf96Smrg# GNU General Public License for more details.
195dfecf96Smrg
205dfecf96Smrg# You should have received a copy of the GNU General Public License
215dfecf96Smrg# along with this program; if not, write to the Free Software
225dfecf96Smrg# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
235dfecf96Smrg# 02110-1301, USA.
245dfecf96Smrg
255dfecf96Smrg# As a special exception to the GNU General Public License, if you
265dfecf96Smrg# distribute this file as part of a program that contains a
275dfecf96Smrg# configuration script generated by Autoconf, you may include it under
285dfecf96Smrg# the same distribution terms that you use for the rest of that program.
295dfecf96Smrg
305dfecf96Smrgif test $# -eq 0; then
315dfecf96Smrg  echo 1>&2 "Try \`$0 --help' for more information"
325dfecf96Smrg  exit 1
335dfecf96Smrgfi
345dfecf96Smrg
355dfecf96Smrgrun=:
36f14f4646Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
37f14f4646Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
385dfecf96Smrg
395dfecf96Smrg# In the cases where this matters, `missing' is being run in the
405dfecf96Smrg# srcdir already.
415dfecf96Smrgif test -f configure.ac; then
425dfecf96Smrg  configure_ac=configure.ac
435dfecf96Smrgelse
445dfecf96Smrg  configure_ac=configure.in
455dfecf96Smrgfi
465dfecf96Smrg
475dfecf96Smrgmsg="missing on your system"
485dfecf96Smrg
49f14f4646Smrgcase $1 in
505dfecf96Smrg--run)
515dfecf96Smrg  # Try to run requested program, and just exit if it succeeds.
525dfecf96Smrg  run=
535dfecf96Smrg  shift
545dfecf96Smrg  "$@" && exit 0
555dfecf96Smrg  # Exit code 63 means version mismatch.  This often happens
565dfecf96Smrg  # when the user try to use an ancient version of a tool on
575dfecf96Smrg  # a file that requires a minimum version.  In this case we
585dfecf96Smrg  # we should proceed has if the program had been absent, or
595dfecf96Smrg  # if --run hadn't been passed.
605dfecf96Smrg  if test $? = 63; then
615dfecf96Smrg    run=:
625dfecf96Smrg    msg="probably too old"
635dfecf96Smrg  fi
645dfecf96Smrg  ;;
655dfecf96Smrg
665dfecf96Smrg  -h|--h|--he|--hel|--help)
675dfecf96Smrg    echo "\
685dfecf96Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
695dfecf96Smrg
705dfecf96SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
715dfecf96Smrgerror status if there is no known handling for PROGRAM.
725dfecf96Smrg
735dfecf96SmrgOptions:
745dfecf96Smrg  -h, --help      display this help and exit
755dfecf96Smrg  -v, --version   output version information and exit
765dfecf96Smrg  --run           try to run the given command, and emulate it if it fails
775dfecf96Smrg
785dfecf96SmrgSupported PROGRAM values:
795dfecf96Smrg  aclocal      touch file \`aclocal.m4'
805dfecf96Smrg  autoconf     touch file \`configure'
815dfecf96Smrg  autoheader   touch file \`config.h.in'
82f14f4646Smrg  autom4te     touch the output file, or create a stub one
835dfecf96Smrg  automake     touch all \`Makefile.in' files
845dfecf96Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
855dfecf96Smrg  flex         create \`lex.yy.c', if possible, from existing .c
865dfecf96Smrg  help2man     touch the output file
875dfecf96Smrg  lex          create \`lex.yy.c', if possible, from existing .c
885dfecf96Smrg  makeinfo     touch the output file
895dfecf96Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
905dfecf96Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
915dfecf96Smrg
925dfecf96SmrgSend bug reports to <bug-automake@gnu.org>."
935dfecf96Smrg    exit $?
945dfecf96Smrg    ;;
955dfecf96Smrg
965dfecf96Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
975dfecf96Smrg    echo "missing $scriptversion (GNU Automake)"
985dfecf96Smrg    exit $?
995dfecf96Smrg    ;;
1005dfecf96Smrg
1015dfecf96Smrg  -*)
1025dfecf96Smrg    echo 1>&2 "$0: Unknown \`$1' option"
1035dfecf96Smrg    echo 1>&2 "Try \`$0 --help' for more information"
1045dfecf96Smrg    exit 1
1055dfecf96Smrg    ;;
1065dfecf96Smrg
1075dfecf96Smrgesac
1085dfecf96Smrg
1095dfecf96Smrg# Now exit if we have it, but it failed.  Also exit now if we
1105dfecf96Smrg# don't have it and --version was passed (most likely to detect
1115dfecf96Smrg# the program).
112f14f4646Smrgcase $1 in
1135dfecf96Smrg  lex|yacc)
1145dfecf96Smrg    # Not GNU programs, they don't have --version.
1155dfecf96Smrg    ;;
1165dfecf96Smrg
1175dfecf96Smrg  tar)
1185dfecf96Smrg    if test -n "$run"; then
1195dfecf96Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
1205dfecf96Smrg       exit 1
1215dfecf96Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1225dfecf96Smrg       exit 1
1235dfecf96Smrg    fi
1245dfecf96Smrg    ;;
1255dfecf96Smrg
1265dfecf96Smrg  *)
1275dfecf96Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1285dfecf96Smrg       # We have it, but it failed.
1295dfecf96Smrg       exit 1
1305dfecf96Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1315dfecf96Smrg       # Could not run --version or --help.  This is probably someone
1325dfecf96Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
1335dfecf96Smrg       # $TOOL exists and not knowing $TOOL uses missing.
1345dfecf96Smrg       exit 1
1355dfecf96Smrg    fi
1365dfecf96Smrg    ;;
1375dfecf96Smrgesac
1385dfecf96Smrg
1395dfecf96Smrg# If it does not exist, or fails to run (possibly an outdated version),
1405dfecf96Smrg# try to emulate it.
141f14f4646Smrgcase $1 in
1425dfecf96Smrg  aclocal*)
1435dfecf96Smrg    echo 1>&2 "\
1445dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1455dfecf96Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
1465dfecf96Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
1475dfecf96Smrg         any GNU archive site."
1485dfecf96Smrg    touch aclocal.m4
1495dfecf96Smrg    ;;
1505dfecf96Smrg
1515dfecf96Smrg  autoconf)
1525dfecf96Smrg    echo 1>&2 "\
1535dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1545dfecf96Smrg         you modified \`${configure_ac}'.  You might want to install the
1555dfecf96Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
1565dfecf96Smrg         archive site."
1575dfecf96Smrg    touch configure
1585dfecf96Smrg    ;;
1595dfecf96Smrg
1605dfecf96Smrg  autoheader)
1615dfecf96Smrg    echo 1>&2 "\
1625dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1635dfecf96Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
1645dfecf96Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
1655dfecf96Smrg         from any GNU archive site."
1665dfecf96Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1675dfecf96Smrg    test -z "$files" && files="config.h"
1685dfecf96Smrg    touch_files=
1695dfecf96Smrg    for f in $files; do
170f14f4646Smrg      case $f in
1715dfecf96Smrg      *:*) touch_files="$touch_files "`echo "$f" |
1725dfecf96Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1735dfecf96Smrg      *) touch_files="$touch_files $f.in";;
1745dfecf96Smrg      esac
1755dfecf96Smrg    done
1765dfecf96Smrg    touch $touch_files
1775dfecf96Smrg    ;;
1785dfecf96Smrg
1795dfecf96Smrg  automake*)
1805dfecf96Smrg    echo 1>&2 "\
1815dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
1825dfecf96Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
1835dfecf96Smrg         You might want to install the \`Automake' and \`Perl' packages.
1845dfecf96Smrg         Grab them from any GNU archive site."
1855dfecf96Smrg    find . -type f -name Makefile.am -print |
1865dfecf96Smrg	   sed 's/\.am$/.in/' |
1875dfecf96Smrg	   while read f; do touch "$f"; done
1885dfecf96Smrg    ;;
1895dfecf96Smrg
1905dfecf96Smrg  autom4te)
1915dfecf96Smrg    echo 1>&2 "\
1925dfecf96SmrgWARNING: \`$1' is needed, but is $msg.
1935dfecf96Smrg         You might have modified some files without having the
1945dfecf96Smrg         proper tools for further handling them.
1955dfecf96Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
1965dfecf96Smrg         archive site."
1975dfecf96Smrg
198f14f4646Smrg    file=`echo "$*" | sed -n "$sed_output"`
199f14f4646Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2005dfecf96Smrg    if test -f "$file"; then
2015dfecf96Smrg	touch $file
2025dfecf96Smrg    else
2035dfecf96Smrg	test -z "$file" || exec >$file
2045dfecf96Smrg	echo "#! /bin/sh"
2055dfecf96Smrg	echo "# Created by GNU Automake missing as a replacement of"
2065dfecf96Smrg	echo "#  $ $@"
2075dfecf96Smrg	echo "exit 0"
2085dfecf96Smrg	chmod +x $file
2095dfecf96Smrg	exit 1
2105dfecf96Smrg    fi
2115dfecf96Smrg    ;;
2125dfecf96Smrg
2135dfecf96Smrg  bison|yacc)
2145dfecf96Smrg    echo 1>&2 "\
2155dfecf96SmrgWARNING: \`$1' $msg.  You should only need it if
2165dfecf96Smrg         you modified a \`.y' file.  You may need the \`Bison' package
2175dfecf96Smrg         in order for those modifications to take effect.  You can get
2185dfecf96Smrg         \`Bison' from any GNU archive site."
2195dfecf96Smrg    rm -f y.tab.c y.tab.h
220f14f4646Smrg    if test $# -ne 1; then
2215dfecf96Smrg        eval LASTARG="\${$#}"
222f14f4646Smrg	case $LASTARG in
2235dfecf96Smrg	*.y)
2245dfecf96Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
225f14f4646Smrg	    if test -f "$SRCFILE"; then
2265dfecf96Smrg	         cp "$SRCFILE" y.tab.c
2275dfecf96Smrg	    fi
2285dfecf96Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
229f14f4646Smrg	    if test -f "$SRCFILE"; then
2305dfecf96Smrg	         cp "$SRCFILE" y.tab.h
2315dfecf96Smrg	    fi
2325dfecf96Smrg	  ;;
2335dfecf96Smrg	esac
2345dfecf96Smrg    fi
235f14f4646Smrg    if test ! -f y.tab.h; then
2365dfecf96Smrg	echo >y.tab.h
2375dfecf96Smrg    fi
238f14f4646Smrg    if test ! -f y.tab.c; then
2395dfecf96Smrg	echo 'main() { return 0; }' >y.tab.c
2405dfecf96Smrg    fi
2415dfecf96Smrg    ;;
2425dfecf96Smrg
2435dfecf96Smrg  lex|flex)
2445dfecf96Smrg    echo 1>&2 "\
2455dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
2465dfecf96Smrg         you modified a \`.l' file.  You may need the \`Flex' package
2475dfecf96Smrg         in order for those modifications to take effect.  You can get
2485dfecf96Smrg         \`Flex' from any GNU archive site."
2495dfecf96Smrg    rm -f lex.yy.c
250f14f4646Smrg    if test $# -ne 1; then
2515dfecf96Smrg        eval LASTARG="\${$#}"
252f14f4646Smrg	case $LASTARG in
2535dfecf96Smrg	*.l)
2545dfecf96Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
255f14f4646Smrg	    if test -f "$SRCFILE"; then
2565dfecf96Smrg	         cp "$SRCFILE" lex.yy.c
2575dfecf96Smrg	    fi
2585dfecf96Smrg	  ;;
2595dfecf96Smrg	esac
2605dfecf96Smrg    fi
261f14f4646Smrg    if test ! -f lex.yy.c; then
2625dfecf96Smrg	echo 'main() { return 0; }' >lex.yy.c
2635dfecf96Smrg    fi
2645dfecf96Smrg    ;;
2655dfecf96Smrg
2665dfecf96Smrg  help2man)
2675dfecf96Smrg    echo 1>&2 "\
2685dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
2695dfecf96Smrg	 you modified a dependency of a manual page.  You may need the
2705dfecf96Smrg	 \`Help2man' package in order for those modifications to take
2715dfecf96Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
2725dfecf96Smrg
273f14f4646Smrg    file=`echo "$*" | sed -n "$sed_output"`
274f14f4646Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
275f14f4646Smrg    if test -f "$file"; then
2765dfecf96Smrg	touch $file
2775dfecf96Smrg    else
2785dfecf96Smrg	test -z "$file" || exec >$file
2795dfecf96Smrg	echo ".ab help2man is required to generate this page"
2805dfecf96Smrg	exit 1
2815dfecf96Smrg    fi
2825dfecf96Smrg    ;;
2835dfecf96Smrg
2845dfecf96Smrg  makeinfo)
2855dfecf96Smrg    echo 1>&2 "\
2865dfecf96SmrgWARNING: \`$1' is $msg.  You should only need it if
2875dfecf96Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
2885dfecf96Smrg         indirectly affecting the aspect of the manual.  The spurious
2895dfecf96Smrg         call might also be the consequence of using a buggy \`make' (AIX,
2905dfecf96Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
2915dfecf96Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
2925dfecf96Smrg    # The file to touch is that specified with -o ...
293f14f4646Smrg    file=`echo "$*" | sed -n "$sed_output"`
294f14f4646Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2955dfecf96Smrg    if test -z "$file"; then
2965dfecf96Smrg      # ... or it is the one specified with @setfilename ...
2975dfecf96Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
298f14f4646Smrg      file=`sed -n '
299f14f4646Smrg	/^@setfilename/{
300f14f4646Smrg	  s/.* \([^ ]*\) *$/\1/
301f14f4646Smrg	  p
302f14f4646Smrg	  q
303f14f4646Smrg	}' $infile`
3045dfecf96Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3055dfecf96Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
3065dfecf96Smrg    fi
3075dfecf96Smrg    # If the file does not exist, the user really needs makeinfo;
3085dfecf96Smrg    # let's fail without touching anything.
3095dfecf96Smrg    test -f $file || exit 1
3105dfecf96Smrg    touch $file
3115dfecf96Smrg    ;;
3125dfecf96Smrg
3135dfecf96Smrg  tar)
3145dfecf96Smrg    shift
3155dfecf96Smrg
3165dfecf96Smrg    # We have already tried tar in the generic part.
3175dfecf96Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
3185dfecf96Smrg    # messages.
3195dfecf96Smrg    if (gnutar --version > /dev/null 2>&1); then
3205dfecf96Smrg       gnutar "$@" && exit 0
3215dfecf96Smrg    fi
3225dfecf96Smrg    if (gtar --version > /dev/null 2>&1); then
3235dfecf96Smrg       gtar "$@" && exit 0
3245dfecf96Smrg    fi
3255dfecf96Smrg    firstarg="$1"
3265dfecf96Smrg    if shift; then
327f14f4646Smrg	case $firstarg in
3285dfecf96Smrg	*o*)
3295dfecf96Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
3305dfecf96Smrg	    tar "$firstarg" "$@" && exit 0
3315dfecf96Smrg	    ;;
3325dfecf96Smrg	esac
333f14f4646Smrg	case $firstarg in
3345dfecf96Smrg	*h*)
3355dfecf96Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
3365dfecf96Smrg	    tar "$firstarg" "$@" && exit 0
3375dfecf96Smrg	    ;;
3385dfecf96Smrg	esac
3395dfecf96Smrg    fi
3405dfecf96Smrg
3415dfecf96Smrg    echo 1>&2 "\
3425dfecf96SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
3435dfecf96Smrg         You may want to install GNU tar or Free paxutils, or check the
3445dfecf96Smrg         command line arguments."
3455dfecf96Smrg    exit 1
3465dfecf96Smrg    ;;
3475dfecf96Smrg
3485dfecf96Smrg  *)
3495dfecf96Smrg    echo 1>&2 "\
3505dfecf96SmrgWARNING: \`$1' is needed, and is $msg.
3515dfecf96Smrg         You might have modified some files without having the
3525dfecf96Smrg         proper tools for further handling them.  Check the \`README' file,
3535dfecf96Smrg         it often tells you about the needed prerequisites for installing
3545dfecf96Smrg         this package.  You may also peek at any GNU archive site, in case
3555dfecf96Smrg         some other package would contain this missing \`$1' program."
3565dfecf96Smrg    exit 1
3575dfecf96Smrg    ;;
3585dfecf96Smrgesac
3595dfecf96Smrg
3605dfecf96Smrgexit 0
3615dfecf96Smrg
3625dfecf96Smrg# Local variables:
3635dfecf96Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
3645dfecf96Smrg# time-stamp-start: "scriptversion="
3655dfecf96Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
3665dfecf96Smrg# time-stamp-end: "$"
3675dfecf96Smrg# End:
368