diff options
author | Larry Wall <lwall@netlabs.com> | 1991-04-11 20:32:40 +0000 |
---|---|---|
committer | Larry Wall <lwall@netlabs.com> | 1991-04-11 20:32:40 +0000 |
commit | 1c3d792e8fc9c2a36edfbd6c01156ef7e635040f (patch) | |
tree | 6f06abb825287c1e22b967a7030a38e336a62e89 /cflags.SH | |
parent | fe14fcc35f78a371a174a1d14256c2f35ae4262b (diff) | |
download | perl-1c3d792e8fc9c2a36edfbd6c01156ef7e635040f.tar.gz |
perl 4.0 patch 1: (combined patch)
Subject: Configure now handles defaults much better
Subject: Configure now knows if config.sh was built on this machine
Subject: Configure now checks file existence more efficiently
Subject: Configure now handles stupid SCO csh
Configure has been heavily revised. Many of the tests that used
to simply force a decision now check that decision against the
previous value of the variable, and offer to let you change it.
The default now is to keep the old value, so that you don't lose
information from your previous run.
Because of this, it's now more important to know whether, in fact,
config.sh was produced on this machine and on this version of
the operating system. config.sh now contains a lastuname variable
which contains the output of uname -a. If this matches the current
output of uname -a, Configure defaults to including the old config.sh.
Otherwise not. If there is no valid config.sh, then Configure looks
defaults for the current architecture in the hints/ subdirectory
instead. The guesswork I've done in this section of code is
phenomenal, so you'll have to instruct me where I've misparsed
the output of uname (a problem in portability all of its own).
Subject: Configure now differentiates getgroups() type from getgid() type
Subject: Configure now figures out malloc ptr type
Subject: Configure now does better on sprintf()
Configure was assuming that the array of values returned from
getgroups was the same type as the gids returned by other system
calls. Unfortunately, reality set in. Likewise for malloc() and
sprintf(), which there is only one portable way to find out the return
value of: try it one way or the other, and see if it blows up.
Subject: C flags are now settable on a per-file basis
Subject: reduced maximum branch distance in eval.c
Certain compilers and/or optimizers get bozoed out by large
compilation units, or by large structures within those units.
Previously, you either had to change the compiler flags for all
the files, or do hairy editing in Makefile.SH and remake the Makefile,
necessitating a make depend. Now there is a script called cflags.SH
whose duty it is to return the proper CFLAGS for any given C file.
You can change the flags in just one spot now and they will be
immediately reflected in the next make (or even in the current
make, if one is running). Eventually I expect that any of the hints
files could modify cflags.SH, but I haven't done that yet.
The particular problem of long jump offsets in eval.c has been at
least partially alleviated by locating some of the labels in the
middle of the function instead of at the end. This still doesn't
help the poor Vax when you compile with -g, since it puts a jump
to the end of the function to allocate the stack frame and then
jumps back to the beginning of the function to execute it. For
now Vaxen will have to stick with -O or hand assemble eval.c and
teval.c with a -J switch.
Subject: fixed "Bad free" error
Subject: fixed debugger coredump on subroutines
Subject: regexec only allocated space for 9 subexpresssions
These are problems that were reported on the net and had unofficial
patches. Now they have official patches. Be sure to patch a
copy of your files without the unofficial patches, or the patch
program will get confused.
Subject: you may now use "die" and "caller" in a signal handler
Someone pointed out that using die to raise an exception out
of a signal handler trashed the expression value stack if the
exception was caught by eval. While fixing that, I also fixed
the longstanding problem that signal handlers didn't have a normal
call frame, which prevented the caller function from working.
Subject: fixed undefined environ problem
Subject: hopefully straightened out some of the Xenix mess
Subject: random cleanup in cpp namespace
Just keeping up with the current progress in non-standardization.
Subject: fixed failed fork to return undef as documented
The open function returns undef on failed implicit forks. The Book
assumed that the same was true of an explicit fork. I've made the
function behave like the Book says. It's a pity there's no way
to have an undefined value that returns -1 in a numeric context
but false in a boolean context...
Subject: generalized the yaccpar fixer some
Thanks to Andy Dougherty, perly.fixer now knows how to fix SVR3 2.2's
yaccpar code to do dynamic parse stack allocation. He also made it
easy for other people to insert their code there. Hooray!
Subject: find2perl sometimes needs to stat on the 2nd leg of a -o
Subject: find2perl didn't correctly handle switches with an argument of 0
In attempting to delay the lstat to the last moment, in case a filename
could be rejected on the basis of its name, find2perl neglected to
take into account the fact that control might pass to the 2nd half
of a -o without executing all of the 1st half, in particular without
executing the lstat.
find2perl was wisely removing leading zeroes from numbers that would
mistakenly be interpreted as octal numbers by Perl. Unfortunately,
this caused it to delete the number 0 entirely.
Subject: fixed dumpvar not to dump internal debugging info
Subject: substr($ENV{"PATH"},0,0) = "/foo:" didn't modify environment
Subject: $foo .= <BAR> could cause core dump for certain lengths of $foo
Subject: perl -de "print" wouldn't stop at the first statement
Random glitchy little things.
Subject: I'm at NetLabs now
I'm now working for NetLabs, Inc., and I hadn't changed my
address everywhere.
Diffstat (limited to 'cflags.SH')
-rw-r--r-- | cflags.SH | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/cflags.SH b/cflags.SH new file mode 100644 index 0000000000..52a122eb1e --- /dev/null +++ b/cflags.SH @@ -0,0 +1,80 @@ +case $CONFIG in +'') + if test ! -f config.sh; then + ln ../config.sh . || \ + ln ../../config.sh . || \ + ln ../../../config.sh . || \ + (echo "Can't find config.sh."; exit 1) + fi 2>/dev/null + . ./config.sh + ;; +esac +case "$0" in +*/*) cd `expr X$0 : 'X\(.*\)/'` ;; +esac + +also=': ' +case $# in +1) also='echo 1>&2 " CFLAGS = "' +esac + +case $# in +0) set *.c; echo "The current C flags are:" ;; +*) set `echo "$* " | sed 's/\.o /.c /g'` +esac +for file do + + case "$#" in + 1) ;; + *) echo $n " $file $c" ;; + esac + + case "$file" in + array.c) ;; + cmd.c) ;; + cons.c) ;; + consarg.c) ;; + doarg.c) ;; + doio.c) ;; + dolist.c) ;; + dump.c) ;; + eval.c) ;; + form.c) ;; + hash.c) ;; + malloc.c) ;; + perl.c) ;; + perly.c) ;; + regcomp.c) ;; + regexec.c) ;; + stab.c) ;; + str.c) ;; + toke.c) ;; + usersub.c) ;; + util.c) ;; + tarray.c) ;; + tcmd.c) ;; + tcons.c) ;; + tconsarg.c) ;; + tdoarg.c) ;; + tdoio.c) ;; + tdolist.c) ;; + tdump.c) ;; + teval.c) ;; + tform.c) ;; + thash.c) ;; + tmalloc.c) ;; + tperl.c) ;; + tperly.c) ;; + tregcomp.c) ;; + tregexec.c) ;; + tstab.c) ;; + tstr.c) ;; + ttoke.c) ;; + tusersub.c) ;; + tutil.c) ;; + *) ;; + esac + + echo "$ccflags $optimize $large $split" + eval "$also $ccflags $optimize $large $split" +done |