annotate missing @ 1739:c414850f206f

Add support for -boot flag, which allows in-tree execution of Ur/Web The boot flag rewrites most hardcoded paths to point to the build directory, and also forces static compilation. This is convenient for developing Ur/Web, or if you cannot 'sudo make install' Ur/Web. The following changes were made: * Header files were moved to include/urweb instead of include; this lets FFI users point their C_INCLUDE_PATH at this directory at write <urweb/urweb.h>. For internal Ur/Web executables, we simply pass -I$PATH/include/urweb as normal. * Differentiate between LIB and SRCLIB; SRCLIB is Ur and JavaScript source files, while LIB is compiled products from libtool. For in-tree compilation these live in different places. * No longer reference Config for paths; instead use Settings; these settings can be changed dynamically by Compiler.enableBoot () (TODO: add a disableBoot function.) * config.h is now generated directly in include/urweb/config.h, for consistency's sake (especially since it gets installed along with the rest of the headers!) * All of the autotools build products got updated. * The linkStatic field in protocols now only contains the name of the build product, and not the absolute path. Future users have to be careful not to reference the Settings files to early, lest they get an old version (this was the source of two bugs during development of this patch.)
author Edward Z. Yang <ezyang@mit.edu>
date Wed, 02 May 2012 17:17:57 -0400
parents 27d68ccb2c9e
children 6a621a625b04
rev   line source
adamc@1133 1 #! /bin/sh
adamc@1133 2 # Common stub for a few missing GNU programs while installing.
adamc@1133 3
adam@1693 4 scriptversion=2012-01-06.13; # UTC
adamc@1133 5
adamc@1133 6 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006,
adam@1693 7 # 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
adamc@1133 8 # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
adamc@1133 9
adamc@1133 10 # This program is free software; you can redistribute it and/or modify
adamc@1133 11 # it under the terms of the GNU General Public License as published by
adamc@1133 12 # the Free Software Foundation; either version 2, or (at your option)
adamc@1133 13 # any later version.
adamc@1133 14
adamc@1133 15 # This program is distributed in the hope that it will be useful,
adamc@1133 16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
adamc@1133 17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
adamc@1133 18 # GNU General Public License for more details.
adamc@1133 19
adamc@1133 20 # You should have received a copy of the GNU General Public License
adamc@1133 21 # along with this program. If not, see <http://www.gnu.org/licenses/>.
adamc@1133 22
adamc@1133 23 # As a special exception to the GNU General Public License, if you
adamc@1133 24 # distribute this file as part of a program that contains a
adamc@1133 25 # configuration script generated by Autoconf, you may include it under
adamc@1133 26 # the same distribution terms that you use for the rest of that program.
adamc@1133 27
adamc@1133 28 if test $# -eq 0; then
adamc@1133 29 echo 1>&2 "Try \`$0 --help' for more information"
adamc@1133 30 exit 1
adamc@1133 31 fi
adamc@1133 32
adamc@1133 33 run=:
adamc@1133 34 sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
adamc@1133 35 sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
adamc@1133 36
adamc@1133 37 # In the cases where this matters, `missing' is being run in the
adamc@1133 38 # srcdir already.
adamc@1133 39 if test -f configure.ac; then
adamc@1133 40 configure_ac=configure.ac
adamc@1133 41 else
adamc@1133 42 configure_ac=configure.in
adamc@1133 43 fi
adamc@1133 44
adamc@1133 45 msg="missing on your system"
adamc@1133 46
adamc@1133 47 case $1 in
adamc@1133 48 --run)
adamc@1133 49 # Try to run requested program, and just exit if it succeeds.
adamc@1133 50 run=
adamc@1133 51 shift
adamc@1133 52 "$@" && exit 0
adamc@1133 53 # Exit code 63 means version mismatch. This often happens
adamc@1133 54 # when the user try to use an ancient version of a tool on
adamc@1133 55 # a file that requires a minimum version. In this case we
adamc@1133 56 # we should proceed has if the program had been absent, or
adamc@1133 57 # if --run hadn't been passed.
adamc@1133 58 if test $? = 63; then
adamc@1133 59 run=:
adamc@1133 60 msg="probably too old"
adamc@1133 61 fi
adamc@1133 62 ;;
adamc@1133 63
adamc@1133 64 -h|--h|--he|--hel|--help)
adamc@1133 65 echo "\
adamc@1133 66 $0 [OPTION]... PROGRAM [ARGUMENT]...
adamc@1133 67
adamc@1133 68 Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
adamc@1133 69 error status if there is no known handling for PROGRAM.
adamc@1133 70
adamc@1133 71 Options:
adamc@1133 72 -h, --help display this help and exit
adamc@1133 73 -v, --version output version information and exit
adamc@1133 74 --run try to run the given command, and emulate it if it fails
adamc@1133 75
adamc@1133 76 Supported PROGRAM values:
adamc@1133 77 aclocal touch file \`aclocal.m4'
adamc@1133 78 autoconf touch file \`configure'
adamc@1133 79 autoheader touch file \`config.h.in'
adamc@1133 80 autom4te touch the output file, or create a stub one
adamc@1133 81 automake touch all \`Makefile.in' files
adamc@1133 82 bison create \`y.tab.[ch]', if possible, from existing .[ch]
adamc@1133 83 flex create \`lex.yy.c', if possible, from existing .c
adamc@1133 84 help2man touch the output file
adamc@1133 85 lex create \`lex.yy.c', if possible, from existing .c
adamc@1133 86 makeinfo touch the output file
adamc@1133 87 yacc create \`y.tab.[ch]', if possible, from existing .[ch]
adamc@1133 88
adamc@1133 89 Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and
adamc@1133 90 \`g' are ignored when checking the name.
adamc@1133 91
adamc@1133 92 Send bug reports to <bug-automake@gnu.org>."
adamc@1133 93 exit $?
adamc@1133 94 ;;
adamc@1133 95
adamc@1133 96 -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
adamc@1133 97 echo "missing $scriptversion (GNU Automake)"
adamc@1133 98 exit $?
adamc@1133 99 ;;
adamc@1133 100
adamc@1133 101 -*)
adamc@1133 102 echo 1>&2 "$0: Unknown \`$1' option"
adamc@1133 103 echo 1>&2 "Try \`$0 --help' for more information"
adamc@1133 104 exit 1
adamc@1133 105 ;;
adamc@1133 106
adamc@1133 107 esac
adamc@1133 108
adamc@1133 109 # normalize program name to check for.
adamc@1133 110 program=`echo "$1" | sed '
adamc@1133 111 s/^gnu-//; t
adamc@1133 112 s/^gnu//; t
adamc@1133 113 s/^g//; t'`
adamc@1133 114
adamc@1133 115 # Now exit if we have it, but it failed. Also exit now if we
adamc@1133 116 # don't have it and --version was passed (most likely to detect
adamc@1133 117 # the program). This is about non-GNU programs, so use $1 not
adamc@1133 118 # $program.
adamc@1133 119 case $1 in
adamc@1133 120 lex*|yacc*)
adamc@1133 121 # Not GNU programs, they don't have --version.
adamc@1133 122 ;;
adamc@1133 123
adamc@1133 124 *)
adamc@1133 125 if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
adamc@1133 126 # We have it, but it failed.
adamc@1133 127 exit 1
adamc@1133 128 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
adamc@1133 129 # Could not run --version or --help. This is probably someone
adamc@1133 130 # running `$TOOL --version' or `$TOOL --help' to check whether
adamc@1133 131 # $TOOL exists and not knowing $TOOL uses missing.
adamc@1133 132 exit 1
adamc@1133 133 fi
adamc@1133 134 ;;
adamc@1133 135 esac
adamc@1133 136
adamc@1133 137 # If it does not exist, or fails to run (possibly an outdated version),
adamc@1133 138 # try to emulate it.
adamc@1133 139 case $program in
adamc@1133 140 aclocal*)
adamc@1133 141 echo 1>&2 "\
adamc@1133 142 WARNING: \`$1' is $msg. You should only need it if
adamc@1133 143 you modified \`acinclude.m4' or \`${configure_ac}'. You might want
adamc@1133 144 to install the \`Automake' and \`Perl' packages. Grab them from
adamc@1133 145 any GNU archive site."
adamc@1133 146 touch aclocal.m4
adamc@1133 147 ;;
adamc@1133 148
adamc@1133 149 autoconf*)
adamc@1133 150 echo 1>&2 "\
adamc@1133 151 WARNING: \`$1' is $msg. You should only need it if
adamc@1133 152 you modified \`${configure_ac}'. You might want to install the
adamc@1133 153 \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
adamc@1133 154 archive site."
adamc@1133 155 touch configure
adamc@1133 156 ;;
adamc@1133 157
adamc@1133 158 autoheader*)
adamc@1133 159 echo 1>&2 "\
adamc@1133 160 WARNING: \`$1' is $msg. You should only need it if
adamc@1133 161 you modified \`acconfig.h' or \`${configure_ac}'. You might want
adamc@1133 162 to install the \`Autoconf' and \`GNU m4' packages. Grab them
adamc@1133 163 from any GNU archive site."
adamc@1133 164 files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
adamc@1133 165 test -z "$files" && files="config.h"
adamc@1133 166 touch_files=
adamc@1133 167 for f in $files; do
adamc@1133 168 case $f in
adamc@1133 169 *:*) touch_files="$touch_files "`echo "$f" |
adamc@1133 170 sed -e 's/^[^:]*://' -e 's/:.*//'`;;
adamc@1133 171 *) touch_files="$touch_files $f.in";;
adamc@1133 172 esac
adamc@1133 173 done
adamc@1133 174 touch $touch_files
adamc@1133 175 ;;
adamc@1133 176
adamc@1133 177 automake*)
adamc@1133 178 echo 1>&2 "\
adamc@1133 179 WARNING: \`$1' is $msg. You should only need it if
adamc@1133 180 you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
adamc@1133 181 You might want to install the \`Automake' and \`Perl' packages.
adamc@1133 182 Grab them from any GNU archive site."
adamc@1133 183 find . -type f -name Makefile.am -print |
adamc@1133 184 sed 's/\.am$/.in/' |
adamc@1133 185 while read f; do touch "$f"; done
adamc@1133 186 ;;
adamc@1133 187
adamc@1133 188 autom4te*)
adamc@1133 189 echo 1>&2 "\
adamc@1133 190 WARNING: \`$1' is needed, but is $msg.
adamc@1133 191 You might have modified some files without having the
adamc@1133 192 proper tools for further handling them.
adamc@1133 193 You can get \`$1' as part of \`Autoconf' from any GNU
adamc@1133 194 archive site."
adamc@1133 195
adamc@1133 196 file=`echo "$*" | sed -n "$sed_output"`
adamc@1133 197 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
adamc@1133 198 if test -f "$file"; then
adamc@1133 199 touch $file
adamc@1133 200 else
adamc@1133 201 test -z "$file" || exec >$file
adamc@1133 202 echo "#! /bin/sh"
adamc@1133 203 echo "# Created by GNU Automake missing as a replacement of"
adamc@1133 204 echo "# $ $@"
adamc@1133 205 echo "exit 0"
adamc@1133 206 chmod +x $file
adamc@1133 207 exit 1
adamc@1133 208 fi
adamc@1133 209 ;;
adamc@1133 210
adamc@1133 211 bison*|yacc*)
adamc@1133 212 echo 1>&2 "\
adamc@1133 213 WARNING: \`$1' $msg. You should only need it if
adamc@1133 214 you modified a \`.y' file. You may need the \`Bison' package
adamc@1133 215 in order for those modifications to take effect. You can get
adamc@1133 216 \`Bison' from any GNU archive site."
adamc@1133 217 rm -f y.tab.c y.tab.h
adamc@1133 218 if test $# -ne 1; then
adam@1693 219 eval LASTARG=\${$#}
adamc@1133 220 case $LASTARG in
adamc@1133 221 *.y)
adamc@1133 222 SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
adamc@1133 223 if test -f "$SRCFILE"; then
adamc@1133 224 cp "$SRCFILE" y.tab.c
adamc@1133 225 fi
adamc@1133 226 SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
adamc@1133 227 if test -f "$SRCFILE"; then
adamc@1133 228 cp "$SRCFILE" y.tab.h
adamc@1133 229 fi
adamc@1133 230 ;;
adamc@1133 231 esac
adamc@1133 232 fi
adamc@1133 233 if test ! -f y.tab.h; then
adamc@1133 234 echo >y.tab.h
adamc@1133 235 fi
adamc@1133 236 if test ! -f y.tab.c; then
adamc@1133 237 echo 'main() { return 0; }' >y.tab.c
adamc@1133 238 fi
adamc@1133 239 ;;
adamc@1133 240
adamc@1133 241 lex*|flex*)
adamc@1133 242 echo 1>&2 "\
adamc@1133 243 WARNING: \`$1' is $msg. You should only need it if
adamc@1133 244 you modified a \`.l' file. You may need the \`Flex' package
adamc@1133 245 in order for those modifications to take effect. You can get
adamc@1133 246 \`Flex' from any GNU archive site."
adamc@1133 247 rm -f lex.yy.c
adamc@1133 248 if test $# -ne 1; then
adam@1693 249 eval LASTARG=\${$#}
adamc@1133 250 case $LASTARG in
adamc@1133 251 *.l)
adamc@1133 252 SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
adamc@1133 253 if test -f "$SRCFILE"; then
adamc@1133 254 cp "$SRCFILE" lex.yy.c
adamc@1133 255 fi
adamc@1133 256 ;;
adamc@1133 257 esac
adamc@1133 258 fi
adamc@1133 259 if test ! -f lex.yy.c; then
adamc@1133 260 echo 'main() { return 0; }' >lex.yy.c
adamc@1133 261 fi
adamc@1133 262 ;;
adamc@1133 263
adamc@1133 264 help2man*)
adamc@1133 265 echo 1>&2 "\
adamc@1133 266 WARNING: \`$1' is $msg. You should only need it if
adamc@1133 267 you modified a dependency of a manual page. You may need the
adamc@1133 268 \`Help2man' package in order for those modifications to take
adamc@1133 269 effect. You can get \`Help2man' from any GNU archive site."
adamc@1133 270
adamc@1133 271 file=`echo "$*" | sed -n "$sed_output"`
adamc@1133 272 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
adamc@1133 273 if test -f "$file"; then
adamc@1133 274 touch $file
adamc@1133 275 else
adamc@1133 276 test -z "$file" || exec >$file
adamc@1133 277 echo ".ab help2man is required to generate this page"
adamc@1133 278 exit $?
adamc@1133 279 fi
adamc@1133 280 ;;
adamc@1133 281
adamc@1133 282 makeinfo*)
adamc@1133 283 echo 1>&2 "\
adamc@1133 284 WARNING: \`$1' is $msg. You should only need it if
adamc@1133 285 you modified a \`.texi' or \`.texinfo' file, or any other file
adamc@1133 286 indirectly affecting the aspect of the manual. The spurious
adamc@1133 287 call might also be the consequence of using a buggy \`make' (AIX,
adamc@1133 288 DU, IRIX). You might want to install the \`Texinfo' package or
adamc@1133 289 the \`GNU make' package. Grab either from any GNU archive site."
adamc@1133 290 # The file to touch is that specified with -o ...
adamc@1133 291 file=`echo "$*" | sed -n "$sed_output"`
adamc@1133 292 test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
adamc@1133 293 if test -z "$file"; then
adamc@1133 294 # ... or it is the one specified with @setfilename ...
adamc@1133 295 infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
adamc@1133 296 file=`sed -n '
adamc@1133 297 /^@setfilename/{
adamc@1133 298 s/.* \([^ ]*\) *$/\1/
adamc@1133 299 p
adamc@1133 300 q
adamc@1133 301 }' $infile`
adamc@1133 302 # ... or it is derived from the source name (dir/f.texi becomes f.info)
adamc@1133 303 test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
adamc@1133 304 fi
adamc@1133 305 # If the file does not exist, the user really needs makeinfo;
adamc@1133 306 # let's fail without touching anything.
adamc@1133 307 test -f $file || exit 1
adamc@1133 308 touch $file
adamc@1133 309 ;;
adamc@1133 310
adamc@1133 311 *)
adamc@1133 312 echo 1>&2 "\
adamc@1133 313 WARNING: \`$1' is needed, and is $msg.
adamc@1133 314 You might have modified some files without having the
adamc@1133 315 proper tools for further handling them. Check the \`README' file,
adamc@1133 316 it often tells you about the needed prerequisites for installing
adamc@1133 317 this package. You may also peek at any GNU archive site, in case
adamc@1133 318 some other package would contain this missing \`$1' program."
adamc@1133 319 exit 1
adamc@1133 320 ;;
adamc@1133 321 esac
adamc@1133 322
adamc@1133 323 exit 0
adamc@1133 324
adamc@1133 325 # Local variables:
adamc@1133 326 # eval: (add-hook 'write-file-hooks 'time-stamp)
adamc@1133 327 # time-stamp-start: "scriptversion="
adamc@1133 328 # time-stamp-format: "%:y-%02m-%02d.%02H"
adamc@1133 329 # time-stamp-time-zone: "UTC"
adamc@1133 330 # time-stamp-end: "; # UTC"
adamc@1133 331 # End: