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