missing revision dc99b369
15eefee25Smacallan#! /bin/sh
25eefee25Smacallan# Common stub for a few missing GNU programs while installing.
35eefee25Smacallan
4dc99b369Smrgscriptversion=2012-01-06.18; # UTC
55eefee25Smacallan
6dc99b369Smrg# Copyright (C) 1996-2012 Free Software Foundation, Inc.
75eefee25Smacallan# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
85eefee25Smacallan
95eefee25Smacallan# This program is free software; you can redistribute it and/or modify
105eefee25Smacallan# it under the terms of the GNU General Public License as published by
115eefee25Smacallan# the Free Software Foundation; either version 2, or (at your option)
125eefee25Smacallan# any later version.
135eefee25Smacallan
145eefee25Smacallan# This program is distributed in the hope that it will be useful,
155eefee25Smacallan# but WITHOUT ANY WARRANTY; without even the implied warranty of
165eefee25Smacallan# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
175eefee25Smacallan# GNU General Public License for more details.
185eefee25Smacallan
195eefee25Smacallan# You should have received a copy of the GNU General Public License
20dc99b369Smrg# along with this program.  If not, see <http://www.gnu.org/licenses/>.
215eefee25Smacallan
225eefee25Smacallan# As a special exception to the GNU General Public License, if you
235eefee25Smacallan# distribute this file as part of a program that contains a
245eefee25Smacallan# configuration script generated by Autoconf, you may include it under
255eefee25Smacallan# the same distribution terms that you use for the rest of that program.
265eefee25Smacallan
275eefee25Smacallanif test $# -eq 0; then
28dc99b369Smrg  echo 1>&2 "Try '$0 --help' for more information"
295eefee25Smacallan  exit 1
305eefee25Smacallanfi
315eefee25Smacallan
325eefee25Smacallanrun=:
3362ab96baSmrgsed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
3462ab96baSmrgsed_minuso='s/.* -o \([^ ]*\).*/\1/p'
355eefee25Smacallan
36dc99b369Smrg# In the cases where this matters, 'missing' is being run in the
375eefee25Smacallan# srcdir already.
385eefee25Smacallanif test -f configure.ac; then
395eefee25Smacallan  configure_ac=configure.ac
405eefee25Smacallanelse
415eefee25Smacallan  configure_ac=configure.in
425eefee25Smacallanfi
435eefee25Smacallan
445eefee25Smacallanmsg="missing on your system"
455eefee25Smacallan
4662ab96baSmrgcase $1 in
475eefee25Smacallan--run)
485eefee25Smacallan  # Try to run requested program, and just exit if it succeeds.
495eefee25Smacallan  run=
505eefee25Smacallan  shift
515eefee25Smacallan  "$@" && exit 0
525eefee25Smacallan  # Exit code 63 means version mismatch.  This often happens
535eefee25Smacallan  # when the user try to use an ancient version of a tool on
545eefee25Smacallan  # a file that requires a minimum version.  In this case we
555eefee25Smacallan  # we should proceed has if the program had been absent, or
565eefee25Smacallan  # if --run hadn't been passed.
575eefee25Smacallan  if test $? = 63; then
585eefee25Smacallan    run=:
595eefee25Smacallan    msg="probably too old"
605eefee25Smacallan  fi
615eefee25Smacallan  ;;
625eefee25Smacallan
635eefee25Smacallan  -h|--h|--he|--hel|--help)
645eefee25Smacallan    echo "\
655eefee25Smacallan$0 [OPTION]... PROGRAM [ARGUMENT]...
665eefee25Smacallan
67dc99b369SmrgHandle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
685eefee25Smacallanerror status if there is no known handling for PROGRAM.
695eefee25Smacallan
705eefee25SmacallanOptions:
715eefee25Smacallan  -h, --help      display this help and exit
725eefee25Smacallan  -v, --version   output version information and exit
735eefee25Smacallan  --run           try to run the given command, and emulate it if it fails
745eefee25Smacallan
755eefee25SmacallanSupported PROGRAM values:
76dc99b369Smrg  aclocal      touch file 'aclocal.m4'
77dc99b369Smrg  autoconf     touch file 'configure'
78dc99b369Smrg  autoheader   touch file 'config.h.in'
7962ab96baSmrg  autom4te     touch the output file, or create a stub one
80dc99b369Smrg  automake     touch all 'Makefile.in' files
81dc99b369Smrg  bison        create 'y.tab.[ch]', if possible, from existing .[ch]
82dc99b369Smrg  flex         create 'lex.yy.c', if possible, from existing .c
835eefee25Smacallan  help2man     touch the output file
84dc99b369Smrg  lex          create 'lex.yy.c', if possible, from existing .c
855eefee25Smacallan  makeinfo     touch the output file
86dc99b369Smrg  yacc         create 'y.tab.[ch]', if possible, from existing .[ch]
87dc99b369Smrg
88dc99b369SmrgVersion suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
89dc99b369Smrg'g' are ignored when checking the name.
905eefee25Smacallan
915eefee25SmacallanSend bug reports to <bug-automake@gnu.org>."
925eefee25Smacallan    exit $?
935eefee25Smacallan    ;;
945eefee25Smacallan
955eefee25Smacallan  -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
965eefee25Smacallan    echo "missing $scriptversion (GNU Automake)"
975eefee25Smacallan    exit $?
985eefee25Smacallan    ;;
995eefee25Smacallan
1005eefee25Smacallan  -*)
101dc99b369Smrg    echo 1>&2 "$0: Unknown '$1' option"
102dc99b369Smrg    echo 1>&2 "Try '$0 --help' for more information"
1035eefee25Smacallan    exit 1
1045eefee25Smacallan    ;;
1055eefee25Smacallan
1065eefee25Smacallanesac
1075eefee25Smacallan
108dc99b369Smrg# normalize program name to check for.
109dc99b369Smrgprogram=`echo "$1" | sed '
110dc99b369Smrg  s/^gnu-//; t
111dc99b369Smrg  s/^gnu//; t
112dc99b369Smrg  s/^g//; t'`
113dc99b369Smrg
1145eefee25Smacallan# Now exit if we have it, but it failed.  Also exit now if we
1155eefee25Smacallan# don't have it and --version was passed (most likely to detect
116dc99b369Smrg# the program).  This is about non-GNU programs, so use $1 not
117dc99b369Smrg# $program.
11862ab96baSmrgcase $1 in
119dc99b369Smrg  lex*|yacc*)
1205eefee25Smacallan    # Not GNU programs, they don't have --version.
1215eefee25Smacallan    ;;
1225eefee25Smacallan
1235eefee25Smacallan  *)
1245eefee25Smacallan    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
1255eefee25Smacallan       # We have it, but it failed.
1265eefee25Smacallan       exit 1
1275eefee25Smacallan    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
1285eefee25Smacallan       # Could not run --version or --help.  This is probably someone
129dc99b369Smrg       # running '$TOOL --version' or '$TOOL --help' to check whether
1305eefee25Smacallan       # $TOOL exists and not knowing $TOOL uses missing.
1315eefee25Smacallan       exit 1
1325eefee25Smacallan    fi
1335eefee25Smacallan    ;;
1345eefee25Smacallanesac
1355eefee25Smacallan
1365eefee25Smacallan# If it does not exist, or fails to run (possibly an outdated version),
1375eefee25Smacallan# try to emulate it.
138dc99b369Smrgcase $program in
1395eefee25Smacallan  aclocal*)
1405eefee25Smacallan    echo 1>&2 "\
141dc99b369SmrgWARNING: '$1' is $msg.  You should only need it if
142dc99b369Smrg         you modified 'acinclude.m4' or '${configure_ac}'.  You might want
143dc99b369Smrg         to install the Automake and Perl packages.  Grab them from
1445eefee25Smacallan         any GNU archive site."
1455eefee25Smacallan    touch aclocal.m4
1465eefee25Smacallan    ;;
1475eefee25Smacallan
148dc99b369Smrg  autoconf*)
1495eefee25Smacallan    echo 1>&2 "\
150dc99b369SmrgWARNING: '$1' is $msg.  You should only need it if
151dc99b369Smrg         you modified '${configure_ac}'.  You might want to install the
152dc99b369Smrg         Autoconf and GNU m4 packages.  Grab them from any GNU
1535eefee25Smacallan         archive site."
1545eefee25Smacallan    touch configure
1555eefee25Smacallan    ;;
1565eefee25Smacallan
157dc99b369Smrg  autoheader*)
1585eefee25Smacallan    echo 1>&2 "\
159dc99b369SmrgWARNING: '$1' is $msg.  You should only need it if
160dc99b369Smrg         you modified 'acconfig.h' or '${configure_ac}'.  You might want
161dc99b369Smrg         to install the Autoconf and GNU m4 packages.  Grab them
1625eefee25Smacallan         from any GNU archive site."
1635eefee25Smacallan    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
1645eefee25Smacallan    test -z "$files" && files="config.h"
1655eefee25Smacallan    touch_files=
1665eefee25Smacallan    for f in $files; do
16762ab96baSmrg      case $f in
1685eefee25Smacallan      *:*) touch_files="$touch_files "`echo "$f" |
1695eefee25Smacallan				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
1705eefee25Smacallan      *) touch_files="$touch_files $f.in";;
1715eefee25Smacallan      esac
1725eefee25Smacallan    done
1735eefee25Smacallan    touch $touch_files
1745eefee25Smacallan    ;;
1755eefee25Smacallan
1765eefee25Smacallan  automake*)
1775eefee25Smacallan    echo 1>&2 "\
178dc99b369SmrgWARNING: '$1' is $msg.  You should only need it if
179dc99b369Smrg         you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
180dc99b369Smrg         You might want to install the Automake and Perl packages.
1815eefee25Smacallan         Grab them from any GNU archive site."
1825eefee25Smacallan    find . -type f -name Makefile.am -print |
1835eefee25Smacallan	   sed 's/\.am$/.in/' |
1845eefee25Smacallan	   while read f; do touch "$f"; done
1855eefee25Smacallan    ;;
1865eefee25Smacallan
187dc99b369Smrg  autom4te*)
1885eefee25Smacallan    echo 1>&2 "\
189dc99b369SmrgWARNING: '$1' is needed, but is $msg.
1905eefee25Smacallan         You might have modified some files without having the
1915eefee25Smacallan         proper tools for further handling them.
192dc99b369Smrg         You can get '$1' as part of Autoconf from any GNU
1935eefee25Smacallan         archive site."
1945eefee25Smacallan
19562ab96baSmrg    file=`echo "$*" | sed -n "$sed_output"`
19662ab96baSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
1975eefee25Smacallan    if test -f "$file"; then
1985eefee25Smacallan	touch $file
1995eefee25Smacallan    else
2005eefee25Smacallan	test -z "$file" || exec >$file
2015eefee25Smacallan	echo "#! /bin/sh"
2025eefee25Smacallan	echo "# Created by GNU Automake missing as a replacement of"
2035eefee25Smacallan	echo "#  $ $@"
2045eefee25Smacallan	echo "exit 0"
2055eefee25Smacallan	chmod +x $file
2065eefee25Smacallan	exit 1
2075eefee25Smacallan    fi
2085eefee25Smacallan    ;;
2095eefee25Smacallan
210dc99b369Smrg  bison*|yacc*)
2115eefee25Smacallan    echo 1>&2 "\
212dc99b369SmrgWARNING: '$1' $msg.  You should only need it if
213dc99b369Smrg         you modified a '.y' file.  You may need the Bison package
2145eefee25Smacallan         in order for those modifications to take effect.  You can get
215dc99b369Smrg         Bison from any GNU archive site."
2165eefee25Smacallan    rm -f y.tab.c y.tab.h
21762ab96baSmrg    if test $# -ne 1; then
218dc99b369Smrg        eval LASTARG=\${$#}
21962ab96baSmrg	case $LASTARG in
2205eefee25Smacallan	*.y)
2215eefee25Smacallan	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
22262ab96baSmrg	    if test -f "$SRCFILE"; then
2235eefee25Smacallan	         cp "$SRCFILE" y.tab.c
2245eefee25Smacallan	    fi
2255eefee25Smacallan	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
22662ab96baSmrg	    if test -f "$SRCFILE"; then
2275eefee25Smacallan	         cp "$SRCFILE" y.tab.h
2285eefee25Smacallan	    fi
2295eefee25Smacallan	  ;;
2305eefee25Smacallan	esac
2315eefee25Smacallan    fi
23262ab96baSmrg    if test ! -f y.tab.h; then
2335eefee25Smacallan	echo >y.tab.h
2345eefee25Smacallan    fi
23562ab96baSmrg    if test ! -f y.tab.c; then
2365eefee25Smacallan	echo 'main() { return 0; }' >y.tab.c
2375eefee25Smacallan    fi
2385eefee25Smacallan    ;;
2395eefee25Smacallan
240dc99b369Smrg  lex*|flex*)
2415eefee25Smacallan    echo 1>&2 "\
242dc99b369SmrgWARNING: '$1' is $msg.  You should only need it if
243dc99b369Smrg         you modified a '.l' file.  You may need the Flex package
2445eefee25Smacallan         in order for those modifications to take effect.  You can get
245dc99b369Smrg         Flex from any GNU archive site."
2465eefee25Smacallan    rm -f lex.yy.c
24762ab96baSmrg    if test $# -ne 1; then
248dc99b369Smrg        eval LASTARG=\${$#}
24962ab96baSmrg	case $LASTARG in
2505eefee25Smacallan	*.l)
2515eefee25Smacallan	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
25262ab96baSmrg	    if test -f "$SRCFILE"; then
2535eefee25Smacallan	         cp "$SRCFILE" lex.yy.c
2545eefee25Smacallan	    fi
2555eefee25Smacallan	  ;;
2565eefee25Smacallan	esac
2575eefee25Smacallan    fi
25862ab96baSmrg    if test ! -f lex.yy.c; then
2595eefee25Smacallan	echo 'main() { return 0; }' >lex.yy.c
2605eefee25Smacallan    fi
2615eefee25Smacallan    ;;
2625eefee25Smacallan
263dc99b369Smrg  help2man*)
2645eefee25Smacallan    echo 1>&2 "\
265dc99b369SmrgWARNING: '$1' is $msg.  You should only need it if
2665eefee25Smacallan	 you modified a dependency of a manual page.  You may need the
267dc99b369Smrg	 Help2man package in order for those modifications to take
268dc99b369Smrg	 effect.  You can get Help2man from any GNU archive site."
2695eefee25Smacallan
27062ab96baSmrg    file=`echo "$*" | sed -n "$sed_output"`
27162ab96baSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
27262ab96baSmrg    if test -f "$file"; then
2735eefee25Smacallan	touch $file
2745eefee25Smacallan    else
2755eefee25Smacallan	test -z "$file" || exec >$file
2765eefee25Smacallan	echo ".ab help2man is required to generate this page"
277dc99b369Smrg	exit $?
2785eefee25Smacallan    fi
2795eefee25Smacallan    ;;
2805eefee25Smacallan
281dc99b369Smrg  makeinfo*)
2825eefee25Smacallan    echo 1>&2 "\
283dc99b369SmrgWARNING: '$1' is $msg.  You should only need it if
284dc99b369Smrg         you modified a '.texi' or '.texinfo' file, or any other file
2855eefee25Smacallan         indirectly affecting the aspect of the manual.  The spurious
286dc99b369Smrg         call might also be the consequence of using a buggy 'make' (AIX,
287dc99b369Smrg         DU, IRIX).  You might want to install the Texinfo package or
288dc99b369Smrg         the GNU make package.  Grab either from any GNU archive site."
2895eefee25Smacallan    # The file to touch is that specified with -o ...
29062ab96baSmrg    file=`echo "$*" | sed -n "$sed_output"`
29162ab96baSmrg    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
2925eefee25Smacallan    if test -z "$file"; then
2935eefee25Smacallan      # ... or it is the one specified with @setfilename ...
2945eefee25Smacallan      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
29562ab96baSmrg      file=`sed -n '
29662ab96baSmrg	/^@setfilename/{
29762ab96baSmrg	  s/.* \([^ ]*\) *$/\1/
29862ab96baSmrg	  p
29962ab96baSmrg	  q
30062ab96baSmrg	}' $infile`
3015eefee25Smacallan      # ... or it is derived from the source name (dir/f.texi becomes f.info)
3025eefee25Smacallan      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
3035eefee25Smacallan    fi
3045eefee25Smacallan    # If the file does not exist, the user really needs makeinfo;
3055eefee25Smacallan    # let's fail without touching anything.
3065eefee25Smacallan    test -f $file || exit 1
3075eefee25Smacallan    touch $file
3085eefee25Smacallan    ;;
3095eefee25Smacallan
3105eefee25Smacallan  *)
3115eefee25Smacallan    echo 1>&2 "\
312dc99b369SmrgWARNING: '$1' is needed, and is $msg.
3135eefee25Smacallan         You might have modified some files without having the
314dc99b369Smrg         proper tools for further handling them.  Check the 'README' file,
3155eefee25Smacallan         it often tells you about the needed prerequisites for installing
3165eefee25Smacallan         this package.  You may also peek at any GNU archive site, in case
317dc99b369Smrg         some other package would contain this missing '$1' program."
3185eefee25Smacallan    exit 1
3195eefee25Smacallan    ;;
3205eefee25Smacallanesac
3215eefee25Smacallan
3225eefee25Smacallanexit 0
3235eefee25Smacallan
3245eefee25Smacallan# Local variables:
3255eefee25Smacallan# eval: (add-hook 'write-file-hooks 'time-stamp)
3265eefee25Smacallan# time-stamp-start: "scriptversion="
3275eefee25Smacallan# time-stamp-format: "%:y-%02m-%02d.%02H"
328dc99b369Smrg# time-stamp-time-zone: "UTC"
329dc99b369Smrg# time-stamp-end: "; # UTC"
3305eefee25Smacallan# End:
331