140dd5a57Smrg#! /bin/sh
240dd5a57Smrg# Common stub for a few missing GNU programs while installing.
340dd5a57Smrg
440dd5a57Smrgscriptversion=2009-04-28.21; # UTC
540dd5a57Smrg
640dd5a57Smrg# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
740dd5a57Smrg# 2008, 2009 Free Software Foundation, Inc.
840dd5a57Smrg# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
940dd5a57Smrg
1040dd5a57Smrg# This program is free software; you can redistribute it and/or modify
1140dd5a57Smrg# it under the terms of the GNU General Public License as published by
1240dd5a57Smrg# the Free Software Foundation; either version 2, or (at your option)
1340dd5a57Smrg# any later version.
1440dd5a57Smrg
1540dd5a57Smrg# This program is distributed in the hope that it will be useful,
1640dd5a57Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of
1740dd5a57Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1840dd5a57Smrg# GNU General Public License for more details.
1940dd5a57Smrg
2040dd5a57Smrg# You should have received a copy of the GNU General Public License
2140dd5a57Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
2240dd5a57Smrg
2340dd5a57Smrg# As a special exception to the GNU General Public License, if you
2440dd5a57Smrg# distribute this file as part of a program that contains a
2540dd5a57Smrg# configuration script generated by Autoconf, you may include it under
2640dd5a57Smrg# the same distribution terms that you use for the rest of that program.
2740dd5a57Smrg
2840dd5a57Smrgif test $# -eq 0; then
2940dd5a57Smrg  echo 1>&2 "Try \`$0 --help' for more information"
3040dd5a57Smrg  exit 1
3140dd5a57Smrgfi
3240dd5a57Smrg
3340dd5a57Smrgrun=:
3440dd5a57Smrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
3540dd5a57Smrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
3640dd5a57Smrg
3740dd5a57Smrg# In the cases where this matters, `missing' is being run in the
3840dd5a57Smrg# srcdir already.
3940dd5a57Smrgif test -f configure.ac; then
4040dd5a57Smrg  configure_ac=configure.ac
4140dd5a57Smrgelse
4240dd5a57Smrg  configure_ac=configure.in
4340dd5a57Smrgfi
4440dd5a57Smrg
4540dd5a57Smrgmsg="missing on your system"
4640dd5a57Smrg
4740dd5a57Smrgcase $1 in
4840dd5a57Smrg--run)
4940dd5a57Smrg  # Try to run requested program, and just exit if it succeeds.
5040dd5a57Smrg  run=
5140dd5a57Smrg  shift
5240dd5a57Smrg  "$@" && exit 0
5340dd5a57Smrg  # Exit code 63 means version mismatch.  This often happens
5440dd5a57Smrg  # when the user try to use an ancient version of a tool on
5540dd5a57Smrg  # a file that requires a minimum version.  In this case we
5640dd5a57Smrg  # we should proceed has if the program had been absent, or
5740dd5a57Smrg  # if --run hadn't been passed.
5840dd5a57Smrg  if test $? = 63; then
5940dd5a57Smrg    run=:
6040dd5a57Smrg    msg="probably too old"
6140dd5a57Smrg  fi
6240dd5a57Smrg  ;;
6340dd5a57Smrg
6440dd5a57Smrg  -h|--h|--he|--hel|--help)
6540dd5a57Smrg    echo "\
6640dd5a57Smrg$0 [OPTION]... PROGRAM [ARGUMENT]...
6740dd5a57Smrg
6840dd5a57SmrgHandle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
6940dd5a57Smrgerror status if there is no known handling for PROGRAM.
7040dd5a57Smrg
7140dd5a57SmrgOptions:
7240dd5a57Smrg  -h, --help      display this help and exit
7340dd5a57Smrg  -v, --version   output version information and exit
7440dd5a57Smrg  --run           try to run the given command, and emulate it if it fails
7540dd5a57Smrg
7640dd5a57SmrgSupported PROGRAM values:
7740dd5a57Smrg  aclocal      touch file \`aclocal.m4'
7840dd5a57Smrg  autoconf     touch file \`configure'
7940dd5a57Smrg  autoheader   touch file \`config.h.in'
8040dd5a57Smrg  autom4te     touch the output file, or create a stub one
8140dd5a57Smrg  automake     touch all \`Makefile.in' files
8240dd5a57Smrg  bison        create \`y.tab.[ch]', if possible, from existing .[ch]
8340dd5a57Smrg  flex         create \`lex.yy.c', if possible, from existing .c
8440dd5a57Smrg  help2man     touch the output file
8540dd5a57Smrg  lex          create \`lex.yy.c', if possible, from existing .c
8640dd5a57Smrg  makeinfo     touch the output file
8740dd5a57Smrg  tar          try tar, gnutar, gtar, then tar without non-portable flags
8840dd5a57Smrg  yacc         create \`y.tab.[ch]', if possible, from existing .[ch]
8940dd5a57Smrg
9040dd5a57SmrgVersion suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
9140dd5a57Smrg\`g' are ignored when checking the name.
9240dd5a57Smrg
9340dd5a57SmrgSend bug reports to <bug-automake@gnu.org>."
9440dd5a57Smrg    exit $?
9540dd5a57Smrg    ;;
9640dd5a57Smrg
9740dd5a57Smrg  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
9840dd5a57Smrg    echo "missing $scriptversion (GNU Automake)"
9940dd5a57Smrg    exit $?
10040dd5a57Smrg    ;;
10140dd5a57Smrg
10240dd5a57Smrg  -*)
10340dd5a57Smrg    echo 1>&2 "$0: Unknown \`$1' option"
10440dd5a57Smrg    echo 1>&2 "Try \`$0 --help' for more information"
10540dd5a57Smrg    exit 1
10640dd5a57Smrg    ;;
10740dd5a57Smrg
10840dd5a57Smrgesac
10940dd5a57Smrg
11040dd5a57Smrg# normalize program name to check for.
11140dd5a57Smrgprogram=`echo "$1" | sed '
11240dd5a57Smrg  s/^gnu-//; t
11340dd5a57Smrg  s/^gnu//; t
11440dd5a57Smrg  s/^g//; t'`
11540dd5a57Smrg
11640dd5a57Smrg# Now exit if we have it, but it failed.  Also exit now if we
11740dd5a57Smrg# don't have it and --version was passed (most likely to detect
11840dd5a57Smrg# the program).  This is about non-GNU programs, so use $1 not
11940dd5a57Smrg# $program.
12040dd5a57Smrgcase $1 in
12140dd5a57Smrg  lex*|yacc*)
12240dd5a57Smrg    # Not GNU programs, they don't have --version.
12340dd5a57Smrg    ;;
12440dd5a57Smrg
12540dd5a57Smrg  tar*)
12640dd5a57Smrg    if test -n "$run"; then
12740dd5a57Smrg       echo 1>&2 "ERROR: \`tar' requires --run"
12840dd5a57Smrg       exit 1
12940dd5a57Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
13040dd5a57Smrg       exit 1
13140dd5a57Smrg    fi
13240dd5a57Smrg    ;;
13340dd5a57Smrg
13440dd5a57Smrg  *)
13540dd5a57Smrg    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
13640dd5a57Smrg       # We have it, but it failed.
13740dd5a57Smrg       exit 1
13840dd5a57Smrg    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
13940dd5a57Smrg       # Could not run --version or --help.  This is probably someone
14040dd5a57Smrg       # running `$TOOL --version' or `$TOOL --help' to check whether
14140dd5a57Smrg       # $TOOL exists and not knowing $TOOL uses missing.
14240dd5a57Smrg       exit 1
14340dd5a57Smrg    fi
14440dd5a57Smrg    ;;
14540dd5a57Smrgesac
14640dd5a57Smrg
14740dd5a57Smrg# If it does not exist, or fails to run (possibly an outdated version),
14840dd5a57Smrg# try to emulate it.
14940dd5a57Smrgcase $program in
15040dd5a57Smrg  aclocal*)
15140dd5a57Smrg    echo 1>&2 "\
15240dd5a57SmrgWARNING: \`$1' is $msg.  You should only need it if
15340dd5a57Smrg         you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
15440dd5a57Smrg         to install the \`Automake' and \`Perl' packages.  Grab them from
15540dd5a57Smrg         any GNU archive site."
15640dd5a57Smrg    touch aclocal.m4
15740dd5a57Smrg    ;;
15840dd5a57Smrg
15940dd5a57Smrg  autoconf*)
16040dd5a57Smrg    echo 1>&2 "\
16140dd5a57SmrgWARNING: \`$1' is $msg.  You should only need it if
16240dd5a57Smrg         you modified \`${configure_ac}'.  You might want to install the
16340dd5a57Smrg         \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
16440dd5a57Smrg         archive site."
16540dd5a57Smrg    touch configure
16640dd5a57Smrg    ;;
16740dd5a57Smrg
16840dd5a57Smrg  autoheader*)
16940dd5a57Smrg    echo 1>&2 "\
17040dd5a57SmrgWARNING: \`$1' is $msg.  You should only need it if
17140dd5a57Smrg         you modified \`acconfig.h' or \`${configure_ac}'.  You might want
17240dd5a57Smrg         to install the \`Autoconf' and \`GNU m4' packages.  Grab them
17340dd5a57Smrg         from any GNU archive site."
17440dd5a57Smrg    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
17540dd5a57Smrg    test -z "$files" && files="config.h"
17640dd5a57Smrg    touch_files=
17740dd5a57Smrg    for f in $files; do
17840dd5a57Smrg      case $f in
17940dd5a57Smrg      *:*) touch_files="$touch_files "`echo "$f" |
18040dd5a57Smrg				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
18140dd5a57Smrg      *) touch_files="$touch_files $f.in";;
18240dd5a57Smrg      esac
18340dd5a57Smrg    done
18440dd5a57Smrg    touch $touch_files
18540dd5a57Smrg    ;;
18640dd5a57Smrg
18740dd5a57Smrg  automake*)
18840dd5a57Smrg    echo 1>&2 "\
18940dd5a57SmrgWARNING: \`$1' is $msg.  You should only need it if
19040dd5a57Smrg         you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
19140dd5a57Smrg         You might want to install the \`Automake' and \`Perl' packages.
19240dd5a57Smrg         Grab them from any GNU archive site."
19340dd5a57Smrg    find . -type f -name Makefile.am -print |
19440dd5a57Smrg	   sed 's/\.am$/.in/' |
19540dd5a57Smrg	   while read f; do touch "$f"; done
19640dd5a57Smrg    ;;
19740dd5a57Smrg
19840dd5a57Smrg  autom4te*)
19940dd5a57Smrg    echo 1>&2 "\
20040dd5a57SmrgWARNING: \`$1' is needed, but is $msg.
20140dd5a57Smrg         You might have modified some files without having the
20240dd5a57Smrg         proper tools for further handling them.
20340dd5a57Smrg         You can get \`$1' as part of \`Autoconf' from any GNU
20440dd5a57Smrg         archive site."
20540dd5a57Smrg
20640dd5a57Smrg    file=`echo "$*" | sed -n "$sed_output"`
20740dd5a57Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
20840dd5a57Smrg    if test -f "$file"; then
20940dd5a57Smrg	touch $file
21040dd5a57Smrg    else
21140dd5a57Smrg	test -z "$file" || exec >$file
21240dd5a57Smrg	echo "#! /bin/sh"
21340dd5a57Smrg	echo "# Created by GNU Automake missing as a replacement of"
21440dd5a57Smrg	echo "#  $ $@"
21540dd5a57Smrg	echo "exit 0"
21640dd5a57Smrg	chmod +x $file
21740dd5a57Smrg	exit 1
21840dd5a57Smrg    fi
21940dd5a57Smrg    ;;
22040dd5a57Smrg
22140dd5a57Smrg  bison*|yacc*)
22240dd5a57Smrg    echo 1>&2 "\
22340dd5a57SmrgWARNING: \`$1' $msg.  You should only need it if
22440dd5a57Smrg         you modified a \`.y' file.  You may need the \`Bison' package
22540dd5a57Smrg         in order for those modifications to take effect.  You can get
22640dd5a57Smrg         \`Bison' from any GNU archive site."
22740dd5a57Smrg    rm -f y.tab.c y.tab.h
22840dd5a57Smrg    if test $# -ne 1; then
22940dd5a57Smrg        eval LASTARG="\${$#}"
23040dd5a57Smrg	case $LASTARG in
23140dd5a57Smrg	*.y)
23240dd5a57Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
23340dd5a57Smrg	    if test -f "$SRCFILE"; then
23440dd5a57Smrg	         cp "$SRCFILE" y.tab.c
23540dd5a57Smrg	    fi
23640dd5a57Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
23740dd5a57Smrg	    if test -f "$SRCFILE"; then
23840dd5a57Smrg	         cp "$SRCFILE" y.tab.h
23940dd5a57Smrg	    fi
24040dd5a57Smrg	  ;;
24140dd5a57Smrg	esac
24240dd5a57Smrg    fi
24340dd5a57Smrg    if test ! -f y.tab.h; then
24440dd5a57Smrg	echo >y.tab.h
24540dd5a57Smrg    fi
24640dd5a57Smrg    if test ! -f y.tab.c; then
24740dd5a57Smrg	echo 'main() { return 0; }' >y.tab.c
24840dd5a57Smrg    fi
24940dd5a57Smrg    ;;
25040dd5a57Smrg
25140dd5a57Smrg  lex*|flex*)
25240dd5a57Smrg    echo 1>&2 "\
25340dd5a57SmrgWARNING: \`$1' is $msg.  You should only need it if
25440dd5a57Smrg         you modified a \`.l' file.  You may need the \`Flex' package
25540dd5a57Smrg         in order for those modifications to take effect.  You can get
25640dd5a57Smrg         \`Flex' from any GNU archive site."
25740dd5a57Smrg    rm -f lex.yy.c
25840dd5a57Smrg    if test $# -ne 1; then
25940dd5a57Smrg        eval LASTARG="\${$#}"
26040dd5a57Smrg	case $LASTARG in
26140dd5a57Smrg	*.l)
26240dd5a57Smrg	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
26340dd5a57Smrg	    if test -f "$SRCFILE"; then
26440dd5a57Smrg	         cp "$SRCFILE" lex.yy.c
26540dd5a57Smrg	    fi
26640dd5a57Smrg	  ;;
26740dd5a57Smrg	esac
26840dd5a57Smrg    fi
26940dd5a57Smrg    if test ! -f lex.yy.c; then
27040dd5a57Smrg	echo 'main() { return 0; }' >lex.yy.c
27140dd5a57Smrg    fi
27240dd5a57Smrg    ;;
27340dd5a57Smrg
27440dd5a57Smrg  help2man*)
27540dd5a57Smrg    echo 1>&2 "\
27640dd5a57SmrgWARNING: \`$1' is $msg.  You should only need it if
27740dd5a57Smrg	 you modified a dependency of a manual page.  You may need the
27840dd5a57Smrg	 \`Help2man' package in order for those modifications to take
27940dd5a57Smrg	 effect.  You can get \`Help2man' from any GNU archive site."
28040dd5a57Smrg
28140dd5a57Smrg    file=`echo "$*" | sed -n "$sed_output"`
28240dd5a57Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
28340dd5a57Smrg    if test -f "$file"; then
28440dd5a57Smrg	touch $file
28540dd5a57Smrg    else
28640dd5a57Smrg	test -z "$file" || exec >$file
28740dd5a57Smrg	echo ".ab help2man is required to generate this page"
28840dd5a57Smrg	exit $?
28940dd5a57Smrg    fi
29040dd5a57Smrg    ;;
29140dd5a57Smrg
29240dd5a57Smrg  makeinfo*)
29340dd5a57Smrg    echo 1>&2 "\
29440dd5a57SmrgWARNING: \`$1' is $msg.  You should only need it if
29540dd5a57Smrg         you modified a \`.texi' or \`.texinfo' file, or any other file
29640dd5a57Smrg         indirectly affecting the aspect of the manual.  The spurious
29740dd5a57Smrg         call might also be the consequence of using a buggy \`make' (AIX,
29840dd5a57Smrg         DU, IRIX).  You might want to install the \`Texinfo' package or
29940dd5a57Smrg         the \`GNU make' package.  Grab either from any GNU archive site."
30040dd5a57Smrg    # The file to touch is that specified with -o ...
30140dd5a57Smrg    file=`echo "$*" | sed -n "$sed_output"`
30240dd5a57Smrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
30340dd5a57Smrg    if test -z "$file"; then
30440dd5a57Smrg      # ... or it is the one specified with @setfilename ...
30540dd5a57Smrg      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
30640dd5a57Smrg      file=`sed -n '
30740dd5a57Smrg	/^@setfilename/{
30840dd5a57Smrg	  s/.* \([^ ]*\) *$/\1/
30940dd5a57Smrg	  p
31040dd5a57Smrg	  q
31140dd5a57Smrg	}' $infile`
31240dd5a57Smrg      # ... or it is derived from the source name (dir/f.texi becomes f.info)
31340dd5a57Smrg      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
31440dd5a57Smrg    fi
31540dd5a57Smrg    # If the file does not exist, the user really needs makeinfo;
31640dd5a57Smrg    # let's fail without touching anything.
31740dd5a57Smrg    test -f $file || exit 1
31840dd5a57Smrg    touch $file
31940dd5a57Smrg    ;;
32040dd5a57Smrg
32140dd5a57Smrg  tar*)
32240dd5a57Smrg    shift
32340dd5a57Smrg
32440dd5a57Smrg    # We have already tried tar in the generic part.
32540dd5a57Smrg    # Look for gnutar/gtar before invocation to avoid ugly error
32640dd5a57Smrg    # messages.
32740dd5a57Smrg    if (gnutar --version > /dev/null 2>&1); then
32840dd5a57Smrg       gnutar "$@" && exit 0
32940dd5a57Smrg    fi
33040dd5a57Smrg    if (gtar --version > /dev/null 2>&1); then
33140dd5a57Smrg       gtar "$@" && exit 0
33240dd5a57Smrg    fi
33340dd5a57Smrg    firstarg="$1"
33440dd5a57Smrg    if shift; then
33540dd5a57Smrg	case $firstarg in
33640dd5a57Smrg	*o*)
33740dd5a57Smrg	    firstarg=`echo "$firstarg" | sed s/o//`
33840dd5a57Smrg	    tar "$firstarg" "$@" && exit 0
33940dd5a57Smrg	    ;;
34040dd5a57Smrg	esac
34140dd5a57Smrg	case $firstarg in
34240dd5a57Smrg	*h*)
34340dd5a57Smrg	    firstarg=`echo "$firstarg" | sed s/h//`
34440dd5a57Smrg	    tar "$firstarg" "$@" && exit 0
34540dd5a57Smrg	    ;;
34640dd5a57Smrg	esac
34740dd5a57Smrg    fi
34840dd5a57Smrg
34940dd5a57Smrg    echo 1>&2 "\
35040dd5a57SmrgWARNING: I can't seem to be able to run \`tar' with the given arguments.
35140dd5a57Smrg         You may want to install GNU tar or Free paxutils, or check the
35240dd5a57Smrg         command line arguments."
35340dd5a57Smrg    exit 1
35440dd5a57Smrg    ;;
35540dd5a57Smrg
35640dd5a57Smrg  *)
35740dd5a57Smrg    echo 1>&2 "\
35840dd5a57SmrgWARNING: \`$1' is needed, and is $msg.
35940dd5a57Smrg         You might have modified some files without having the
36040dd5a57Smrg         proper tools for further handling them.  Check the \`README' file,
36140dd5a57Smrg         it often tells you about the needed prerequisites for installing
36240dd5a57Smrg         this package.  You may also peek at any GNU archive site, in case
36340dd5a57Smrg         some other package would contain this missing \`$1' program."
36440dd5a57Smrg    exit 1
36540dd5a57Smrg    ;;
36640dd5a57Smrgesac
36740dd5a57Smrg
36840dd5a57Smrgexit 0
36940dd5a57Smrg
37040dd5a57Smrg# Local variables:
37140dd5a57Smrg# eval: (add-hook 'write-file-hooks 'time-stamp)
37240dd5a57Smrg# time-stamp-start: "scriptversion="
37340dd5a57Smrg# time-stamp-format: "%:y-%02m-%02d.%02H"
37440dd5a57Smrg# time-stamp-time-zone: "UTC"
37540dd5a57Smrg# time-stamp-end: "; # UTC"
37640dd5a57Smrg# End:
377