Home | History | Annotate | Download | only in config
      1 #! /bin/sh
      2 # Common stub for a few missing GNU programs while installing.
      3 # Copyright 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
      4 # Originally by Fran,cois Pinard <pinard (at] iro.umontreal.ca>, 1996.
      5 
      6 # This program is free software; you can redistribute it and/or modify
      7 # it under the terms of the GNU General Public License as published by
      8 # the Free Software Foundation; either version 2, or (at your option)
      9 # any later version.
     10 
     11 # This program is distributed in the hope that it will be useful,
     12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 # GNU General Public License for more details.
     15 
     16 # You should have received a copy of the GNU General Public License
     17 # along with this program; if not, write to the Free Software
     18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
     19 # 02111-1307, USA.
     20 
     21 # As a special exception to the GNU General Public License, if you
     22 # distribute this file as part of a program that contains a
     23 # configuration script generated by Autoconf, you may include it under
     24 # the same distribution terms that you use for the rest of that program.
     25 
     26 if test $# -eq 0; then
     27   echo 1>&2 "Try \`$0 --help' for more information"
     28   exit 1
     29 fi
     30 
     31 run=:
     32 
     33 # In the cases where this matters, `missing' is being run in the
     34 # srcdir already.
     35 if test -f configure.ac; then
     36   configure_ac=configure.ac
     37 else
     38   configure_ac=configure.in
     39 fi
     40 
     41 case "$1" in
     42 --run)
     43   # Try to run requested program, and just exit if it succeeds.
     44   run=
     45   shift
     46   "$@" && exit 0
     47   ;;
     48 esac
     49 
     50 # If it does not exist, or fails to run (possibly an outdated version),
     51 # try to emulate it.
     52 case "$1" in
     53 
     54   -h|--h|--he|--hel|--help)
     55     echo "\
     56 $0 [OPTION]... PROGRAM [ARGUMENT]...
     57 
     58 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
     59 error status if there is no known handling for PROGRAM.
     60 
     61 Options:
     62   -h, --help      display this help and exit
     63   -v, --version   output version information and exit
     64   --run           try to run the given command, and emulate it if it fails
     65 
     66 Supported PROGRAM values:
     67   aclocal      touch file \`aclocal.m4'
     68   autoconf     touch file \`configure'
     69   autoheader   touch file \`config.h.in'
     70   automake     touch all \`Makefile.in' files
     71   bison        create \`y.tab.[ch]', if possible, from existing .[ch]
     72   flex         create \`lex.yy.c', if possible, from existing .c
     73   help2man     touch the output file
     74   lex          create \`lex.yy.c', if possible, from existing .c
     75   makeinfo     touch the output file
     76   tar          try tar, gnutar, gtar, then tar without non-portable flags
     77   yacc         create \`y.tab.[ch]', if possible, from existing .[ch]"
     78     ;;
     79 
     80   -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
     81     echo "missing 0.4 - GNU automake"
     82     ;;
     83 
     84   -*)
     85     echo 1>&2 "$0: Unknown \`$1' option"
     86     echo 1>&2 "Try \`$0 --help' for more information"
     87     exit 1
     88     ;;
     89 
     90   aclocal*)
     91     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
     92        # We have it, but it failed.
     93        exit 1
     94     fi
     95 
     96     echo 1>&2 "\
     97 WARNING: \`$1' is missing on your system.  You should only need it if
     98          you modified \`acinclude.m4' or \`${configure_ac}'.  You might want
     99          to install the \`Automake' and \`Perl' packages.  Grab them from
    100          any GNU archive site."
    101     touch aclocal.m4
    102     ;;
    103 
    104   autoconf)
    105     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
    106        # We have it, but it failed.
    107        exit 1
    108     fi
    109 
    110     echo 1>&2 "\
    111 WARNING: \`$1' is missing on your system.  You should only need it if
    112          you modified \`${configure_ac}'.  You might want to install the
    113          \`Autoconf' and \`GNU m4' packages.  Grab them from any GNU
    114          archive site."
    115     touch configure
    116     ;;
    117 
    118   autoheader)
    119     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
    120        # We have it, but it failed.
    121        exit 1
    122     fi
    123 
    124     echo 1>&2 "\
    125 WARNING: \`$1' is missing on your system.  You should only need it if
    126          you modified \`acconfig.h' or \`${configure_ac}'.  You might want
    127          to install the \`Autoconf' and \`GNU m4' packages.  Grab them
    128          from any GNU archive site."
    129     files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
    130     test -z "$files" && files="config.h"
    131     touch_files=
    132     for f in $files; do
    133       case "$f" in
    134       *:*) touch_files="$touch_files "`echo "$f" |
    135 				       sed -e 's/^[^:]*://' -e 's/:.*//'`;;
    136       *) touch_files="$touch_files $f.in";;
    137       esac
    138     done
    139     touch $touch_files
    140     ;;
    141 
    142   automake*)
    143     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
    144        # We have it, but it failed.
    145        exit 1
    146     fi
    147 
    148     echo 1>&2 "\
    149 WARNING: \`$1' is missing on your system.  You should only need it if
    150          you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
    151          You might want to install the \`Automake' and \`Perl' packages.
    152          Grab them from any GNU archive site."
    153     find . -type f -name Makefile.am -print |
    154 	   sed 's/\.am$/.in/' |
    155 	   while read f; do touch "$f"; done
    156     ;;
    157 
    158   autom4te)
    159     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
    160        # We have it, but it failed.
    161        exit 1
    162     fi
    163 
    164     echo 1>&2 "\
    165 WARNING: \`$1' is needed, and you do not seem to have it handy on your
    166          system.  You might have modified some files without having the
    167          proper tools for further handling them.
    168          You can get \`$1Help2man' as part of \`Autoconf' from any GNU
    169          archive site."
    170 
    171     file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
    172     test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
    173     if test -f "$file"; then
    174 	touch $file
    175     else
    176 	test -z "$file" || exec >$file
    177 	echo "#! /bin/sh"
    178 	echo "# Created by GNU Automake missing as a replacement of"
    179 	echo "#  $ $@"
    180 	echo "exit 0"
    181 	chmod +x $file
    182 	exit 1
    183     fi
    184     ;;
    185 
    186   bison|yacc)
    187     echo 1>&2 "\
    188 WARNING: \`$1' is missing on your system.  You should only need it if
    189          you modified a \`.y' file.  You may need the \`Bison' package
    190          in order for those modifications to take effect.  You can get
    191          \`Bison' from any GNU archive site."
    192     rm -f y.tab.c y.tab.h
    193     if [ $# -ne 1 ]; then
    194         eval LASTARG="\${$#}"
    195 	case "$LASTARG" in
    196 	*.y)
    197 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
    198 	    if [ -f "$SRCFILE" ]; then
    199 	         cp "$SRCFILE" y.tab.c
    200 	    fi
    201 	    SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
    202 	    if [ -f "$SRCFILE" ]; then
    203 	         cp "$SRCFILE" y.tab.h
    204 	    fi
    205 	  ;;
    206 	esac
    207     fi
    208     if [ ! -f y.tab.h ]; then
    209 	echo >y.tab.h
    210     fi
    211     if [ ! -f y.tab.c ]; then
    212 	echo 'main() { return 0; }' >y.tab.c
    213     fi
    214     ;;
    215 
    216   lex|flex)
    217     echo 1>&2 "\
    218 WARNING: \`$1' is missing on your system.  You should only need it if
    219          you modified a \`.l' file.  You may need the \`Flex' package
    220          in order for those modifications to take effect.  You can get
    221          \`Flex' from any GNU archive site."
    222     rm -f lex.yy.c
    223     if [ $# -ne 1 ]; then
    224         eval LASTARG="\${$#}"
    225 	case "$LASTARG" in
    226 	*.l)
    227 	    SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
    228 	    if [ -f "$SRCFILE" ]; then
    229 	         cp "$SRCFILE" lex.yy.c
    230 	    fi
    231 	  ;;
    232 	esac
    233     fi
    234     if [ ! -f lex.yy.c ]; then
    235 	echo 'main() { return 0; }' >lex.yy.c
    236     fi
    237     ;;
    238 
    239   help2man)
    240     if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
    241        # We have it, but it failed.
    242        exit 1
    243     fi
    244 
    245     echo 1>&2 "\
    246 WARNING: \`$1' is missing on your system.  You should only need it if
    247 	 you modified a dependency of a manual page.  You may need the
    248 	 \`Help2man' package in order for those modifications to take
    249 	 effect.  You can get \`Help2man' from any GNU archive site."
    250 
    251     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
    252     if test -z "$file"; then
    253 	file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
    254     fi
    255     if [ -f "$file" ]; then
    256 	touch $file
    257     else
    258 	test -z "$file" || exec >$file
    259 	echo ".ab help2man is required to generate this page"
    260 	exit 1
    261     fi
    262     ;;
    263 
    264   makeinfo)
    265     if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then
    266        # We have makeinfo, but it failed.
    267        exit 1
    268     fi
    269 
    270     echo 1>&2 "\
    271 WARNING: \`$1' is missing on your system.  You should only need it if
    272          you modified a \`.texi' or \`.texinfo' file, or any other file
    273          indirectly affecting the aspect of the manual.  The spurious
    274          call might also be the consequence of using a buggy \`make' (AIX,
    275          DU, IRIX).  You might want to install the \`Texinfo' package or
    276          the \`GNU make' package.  Grab either from any GNU archive site."
    277     file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
    278     if test -z "$file"; then
    279       file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
    280       file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file`
    281     fi
    282     touch $file
    283     ;;
    284 
    285   tar)
    286     shift
    287     if test -n "$run"; then
    288       echo 1>&2 "ERROR: \`tar' requires --run"
    289       exit 1
    290     fi
    291 
    292     # We have already tried tar in the generic part.
    293     # Look for gnutar/gtar before invocation to avoid ugly error
    294     # messages.
    295     if (gnutar --version > /dev/null 2>&1); then
    296        gnutar ${1+"$@"} && exit 0
    297     fi
    298     if (gtar --version > /dev/null 2>&1); then
    299        gtar ${1+"$@"} && exit 0
    300     fi
    301     firstarg="$1"
    302     if shift; then
    303 	case "$firstarg" in
    304 	*o*)
    305 	    firstarg=`echo "$firstarg" | sed s/o//`
    306 	    tar "$firstarg" ${1+"$@"} && exit 0
    307 	    ;;
    308 	esac
    309 	case "$firstarg" in
    310 	*h*)
    311 	    firstarg=`echo "$firstarg" | sed s/h//`
    312 	    tar "$firstarg" ${1+"$@"} && exit 0
    313 	    ;;
    314 	esac
    315     fi
    316 
    317     echo 1>&2 "\
    318 WARNING: I can't seem to be able to run \`tar' with the given arguments.
    319          You may want to install GNU tar or Free paxutils, or check the
    320          command line arguments."
    321     exit 1
    322     ;;
    323 
    324   *)
    325     echo 1>&2 "\
    326 WARNING: \`$1' is needed, and you do not seem to have it handy on your
    327          system.  You might have modified some files without having the
    328          proper tools for further handling them.  Check the \`README' file,
    329          it often tells you about the needed prerequirements for installing
    330          this package.  You may also peek at any GNU archive site, in case
    331          some other package would contain this missing \`$1' program."
    332     exit 1
    333     ;;
    334 esac
    335 
    336 exit 0
    337