1 #! /bin/sh 2 # Common stub for a few missing GNU programs while installing. 3 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 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 \`$1' 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 "$@" && exit 0 297 fi 298 if (gtar --version > /dev/null 2>&1); then 299 gtar "$@" && 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" "$@" && exit 0 307 ;; 308 esac 309 case "$firstarg" in 310 *h*) 311 firstarg=`echo "$firstarg" | sed s/h//` 312 tar "$firstarg" "$@" && 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 prerequisites 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