From: Andy Dougherty Date: Wed, 18 Jan 1995 02:44:39 +0000 (+0000) Subject: perl5.000 patch.0f: [enable metaconfig (PL48) users to regenerate Configure] X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=5f51ce503c8828daeb43446f6dff8a13c393fe19;p=p5sagit%2Fp5-mst-13.2.git perl5.000 patch.0f: [enable metaconfig (PL48) users to regenerate Configure] This patch enables metaconfig (PL48) users to regenerate Configure. A few of the units are considerably enhanced from those distributed with perl5.000. (This patch assumes that you do *not* have the units from perl5beta3i installed. Sorry if that's an inconvenience.) In particular, *dbm testing also checks for an appropriate library function, not just the right header files. The dynamic loading unit U/dlsrc.U has also been updated to support SVR4 dynamic loading. The U/i_db.U unit now checks for the types for the various structure members that have been causing problems. Note that at a minimum, you need to be sure you have the cext='.xs' line from this .package file in your own. That tells metaconfig that it should look in .xs files (as well as the usual .[chy] files) for C symbols. --- diff --git a/U/Extensions.U b/U/Extensions.U new file mode 100644 index 0000000..bcaffc0 --- /dev/null +++ b/U/Extensions.U @@ -0,0 +1,172 @@ +?RCS: $Id: Extensions.U,v$ +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: Extensions.U,v $ +?RCS: +?MAKE:known_extensions extensions dynamic_ext static_ext useposix : \ + Myread usedl d_socket i_db i_dbm i_ndbm i_gdbm package test cat +?MAKE: -pick add $@ %< +?S:known_extensions: +?S: This variable holds a list of all extensions included in +?S: the package. +?S:. +?S:dynamic_ext: +?S: This variable holds a list of extension files we want to +?S: link dynamically into the package. It is used by Makefile. +?S:. +?S:static_ext: +?S: This variable holds a list of extension files we want to +?S: link statically into the package. It is used by Makefile. +?S:. +?S:extensions: +?S: This variable holds a list of all extension files +?S: linked into the package. It is propagated to Config.pm +?S: and is typically used to test whether a particular extesion +?S: is available. +?S:. +?S:useposix: +?S: This variable holds either 'true' or 'false' to indicate +?S: whether the POSIX extension should be used. The sole +?S: use for this currently is to allow an easy mechanism +?S: for hints files to indicate that POSIX will not compile +?S: on a particular system. +?S:. +?T:xxx avail_ext +?INIT:: set useposix=false in your hint file to disable the POSIX extension. +?INIT:useposix=true +echo " " +echo "Looking for extensions..." >&4 +cd ../ext +?X: If we're using the old config.sh, known_extensions may contain +?X: old or inaccurate (or duplicate) values. +known_extensions='' +for xxx in * ; do + if $test -f $xxx/$xxx.xs; then + known_extensions="$known_extensions $xxx" + fi +done +set X $known_extensions +shift +known_extensions="$*" +cd ../UU + +: Now see which are supported on this system. +avail_ext='' +for xxx in $known_extensions ; do + case "$xxx" in + DB_File) case "$i_db" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + GDBM_File) case "$i_gdbm" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + NDBM_File) case "$i_ndbm" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + ODBM_File) case "$i_dbm" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + POSIX) case "$useposix" in + true|define|y) avail_ext="$avail_ext $xxx" ;; + esac + ;; + Socket) case "$d_socket" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + *) avail_ext="$avail_ext $xxx" + ;; + esac +done + +set X $avail_ext +shift +avail_ext="$*" + +case $usedl in +$define) + $cat <extract <<'EOS' +CONFIG=true +echo "Doing variable substitutions on .SH files..." +if test -f MANIFEST; then + shlist=`awk '{print $1}' bsd +echo exit 1 >usg +echo exit 1 >v7 +echo exit 1 >osf1 +echo exit 1 >eunice +echo exit 1 >xenix +echo exit 1 >venix +d_bsd="$undef" +?X: +?X: Do not use 'usrinc', or we get a circular dependency. because +?X: usrinc is defined in usrinc.U, which relies on us... +?X: +$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null +if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 +then + echo "Looks kind of like an OSF/1 system, but we'll see..." + echo exit 0 >osf1 +elif test `echo abc | tr a-z A-Z` = Abc ; then + xxx=`./loc addbib blurfl $pth` + if $test -f $xxx; then + echo "Looks kind of like a USG system with BSD features, but we'll see..." + echo exit 0 >bsd + echo exit 0 >usg + else + if $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like an extended USG system, but we'll see..." + else + echo "Looks kind of like a USG system, but we'll see..." + fi + echo exit 0 >usg + fi +elif $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like a BSD system, but we'll see..." + d_bsd="$define" + echo exit 0 >bsd +else + echo "Looks kind of like a Version 7 system, but we'll see..." + echo exit 0 >v7 +fi +case "$eunicefix" in +*unixtovms*) + $cat <<'EOI' +There is, however, a strange, musty smell in the air that reminds me of +something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. +EOI + echo exit 0 >eunice + d_eunice="$define" +: it so happens the Eunice I know will not run shell scripts in Unix format + ;; +*) + echo " " + echo "Congratulations. You aren't running Eunice." + d_eunice="$undef" + ;; +esac +if test -f /xenix; then + echo "Actually, this looks more like a XENIX system..." + echo exit 0 >xenix + d_xenix="$define" +else + echo " " + echo "It's not Xenix..." + d_xenix="$undef" +fi +chmod +x xenix +$eunicefix xenix +if test -f /venix; then + echo "Actually, this looks more like a VENIX system..." + echo exit 0 >venix +else + echo " " + if ./xenix; then + : null + else + echo "Nor is it Venix..." + fi +fi +chmod +x bsd usg v7 osf1 eunice xenix venix +$eunicefix bsd usg v7 osf1 eunice xenix venix +$rm -f foo + diff --git a/U/Loc_sed.U b/U/Loc_sed.U new file mode 100644 index 0000000..9634140 --- /dev/null +++ b/U/Loc_sed.U @@ -0,0 +1,14 @@ +?RCS: $Id: Loc_sed.U,v $ +?RCS: +?X: This is used in perl.c. +?MAKE:Loc_sed: sed +?MAKE: -pick add $@ %< +?X: Fool metalint: +?LINT:use sed +?LINT:extern sed +?C:LOC_SED: +?C: This symbol holds the complete pathname to the sed program. +?C:. +?H:#define LOC_SED "$sed" /**/ +?H:. + diff --git a/U/Myinit.U b/U/Myinit.U new file mode 100644 index 0000000..885f07a --- /dev/null +++ b/U/Myinit.U @@ -0,0 +1,42 @@ +?RCS: $Id: Myinit.U,v 3.0 1993/08/18 12:05:07 ram Exp $ +?RCS: +?RCS: Copyright (c) 1991-1993, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: Myinit.U,v $ +?RCS: Revision 3.0 1993/08/18 12:05:07 ram +?RCS: Baseline for dist 3.0 netwide release. +?RCS: +?X: +?X: If you want to initialize any default values, copy this unit to your +?X: personal U directory and add the assignments to the end. This file +?X: is included after variables are initialized but before any old +?X: config.sh file is read in. +?X: +?MAKE:Myinit libswanted : Init +?MAKE: -pick add $@ %< +?S:libswanted: +?S: This variable holds a list of all the libraries we want to +?S: search. The order is chosen to pick up the c library +?S: ahead of ucb or bsd libraries for SVR4. +?S:. +?LINT:extern usevfork glibpth +?LINT:change usevfork glibpth +: List of libraries we want. +?X: Put crypt here, even though I should really fix d_crypt.U to look +?X: for it correctly, including possible shared library versions. +libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl' +libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt" +libswanted="$libswanted ucb bsd BSD PW x" +: We want to search /usr/shlib before most other libraries. +: This is only used by ext/util/extliblist +glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` +glibpth="/usr/shlib $glibpth" +: Do not use vfork unless overridden by a hint file. +usevfork=false + diff --git a/U/README b/U/README new file mode 100644 index 0000000..579c0ad --- /dev/null +++ b/U/README @@ -0,0 +1,9 @@ +?X: These units are based on the ones supplied with dist-3.0. +?X: They have been changed or enhanced to work with perl. +?X: I would appreciate hearing about any changes, corrections, +?X: or enhancements. +?X: Andy Dougherty doughera@lafcol.lafayette.edu +?X: Dept. of Physics +?X: Lafayette College +?X: Easton, PA 18042-1782 +?X: Wed Nov 9 15:34:15 EST 1994 diff --git a/U/ccflags.U b/U/ccflags.U new file mode 100644 index 0000000..c935281 --- /dev/null +++ b/U/ccflags.U @@ -0,0 +1,288 @@ +?RCS: $Id: ccflags.U,v 3.0.1.6 1994/10/29 16:07:02 ram Exp $ +?RCS: +?RCS: Copyright (c) 1991-1993, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: This is the same as dist's ccflags unit except that perl uses +?RCS: -DDEBUGGING rather than -DDEBUG, and I also suggest a few other +?RCS: flags the user might set, such as -DCRIPPLED_CC and -D_POSIX_SOURCE. +?RCS: +?RCS: $Log: ccflags.U,v $ +?RCS: Revision 3.0.1.6 1994/10/29 16:07:02 ram +?RCS: patch36: gcc versionning no longer relies on the C compiler's name +?RCS: patch36: simplified check for gcc version checking (ADO) +?RCS: +?RCS: Revision 3.0.1.5 1994/08/29 16:06:35 ram +?RCS: patch32: propagate -posix flag from ccflags to ldflags +?RCS: +?RCS: Revision 3.0.1.4 1994/05/06 14:28:45 ram +?RCS: patch23: -fpcc-struct-return only needed in gcc 1.x (ADO) +?RCS: patch23: cppflags now computed on an option-by-option basis +?RCS: patch23: magically added cc flags now only done the first time +?RCS: +?RCS: Revision 3.0.1.3 1993/09/13 15:58:29 ram +?RCS: patch10: explicitely mention -DDEBUG just in case they need it (WAD) +?RCS: patch10: removed all the "tans" variable usage (WAD) +?RCS: +?RCS: Revision 3.0.1.2 1993/08/27 14:39:38 ram +?RCS: patch7: added support for OSF/1 machines +?RCS: +?RCS: Revision 3.0.1.1 1993/08/25 14:00:24 ram +?RCS: patch6: added defaults for cppflags, ccflags and ldflags +?RCS: +?RCS: Revision 3.0 1993/08/18 12:05:31 ram +?RCS: Baseline for dist 3.0 netwide release. +?RCS: +?MAKE:ccflags ldflags lkflags cppflags optimize: test cat Myread Guess \ + Oldconfig +gccversion mips_type +usrinc package contains rm \ + cppstdin cppminus cpprun cpplast +?MAKE: -pick add $@ %< +?S:ccflags: +?S: This variable contains any additional C compiler flags desired by +?S: the user. It is up to the Makefile to use this. +?S:. +?S:cppflags: +?S: This variable holds the flags that will be passed to the C pre- +?S: processor. It is up to the Makefile to use it. +?S:. +?S:optimize: +?S: This variable contains any optimizer/debugger flag that should be used. +?S: It is up to the Makefile to use it. +?S:. +?S:ldflags: +?S: This variable contains any additional C loader flags desired by +?S: the user. It is up to the Makefile to use this. +?S:. +?S:lkflags: +?S: This variable contains any additional C partial linker flags desired by +?S: the user. It is up to the Makefile to use this. +?S:. +?T:inctest thisincl xxx flag inclwanted ftry previous +?D:cppflags='' +?D:ccflags='' +?D:ldflags='' +?INIT:: no include file wanted by default +?INIT:inclwanted='' +?INIT: +: determine optimize, if desired, or use for debug flag also +case "$optimize" in +' ') dflt='none';; +'') dflt='-O';; +*) dflt="$optimize";; +esac +$cat </dev/null 2>&1 + then + dflt="$dflt -posix" + fi + ;; + esac + ;; +esac + +?X: In USG mode, a MIPS system may need some BSD includes +case "$mips_type" in +*BSD*) ;; +'') ;; +*) inclwanted="$inclwanted $usrinc/bsd";; +esac +for thisincl in $inclwanted; do + if $test -d $thisincl; then + if $test x$thisincl != x$usrinc; then + case "$dflt" in + *$thisincl*);; + *) dflt="$dflt -I$thisincl";; + esac + fi + fi +done + +?X: Include test function (header, symbol) +inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then + xxx=true; +elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then + xxx=true; +else + xxx=false; +fi; +if $xxx; then + case "$dflt" in + *$2*);; + *) dflt="$dflt -D$2";; + esac; +fi' + +?X: +?X: SCO unix uses NO_PROTOTYPE instead of _NO_PROTO +?X: OSF/1 uses __LANGUAGE_C__ instead of LANGUAGE_C +?X: +if ./osf1; then + set signal.h __LANGUAGE_C__; eval $inctest +else + set signal.h LANGUAGE_C; eval $inctest +fi +set signal.h NO_PROTOTYPE; eval $inctest +set signal.h _NO_PROTO; eval $inctest + +case "$dflt" in +'') dflt=none;; +esac +case "$ccflags" in +'') ;; +*) dflt="$ccflags";; +esac +$cat <&4 + set X $cppflags + shift + cppflags='' + $cat >cpp.c <<'EOM' +#define BLURFL foo + +BLURFL xx LFRULB +EOM +?X: +?X: For each cc flag, try it out with both cppstdin and cpprun, since the +?X: first is almost surely a cc wrapper. We have to try both in case +?X: of cc flags like '-Olimit 2900' that are actually two words... +?X: + previous='' + for flag in $* + do + case "$flag" in + -*) ftry="$flag";; + *) ftry="$previous $flag";; + esac + if $cppstdin -DLFRULB=bar $ftry $cppminus cpp1.out 2>/dev/null && \ + $cpprun -DLFRULB=bar $ftry $cpplast cpp2.out 2>/dev/null && \ + $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \ + $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1 + then + cppflags="$cppflags $ftry" + previous='' + else + previous="$flag" + fi + done + set X $cppflags + shift + cppflags=${1+"$@"} + case "$cppflags" in + *-*) echo "They appear to be: $cppflags";; + esac + $rm -f cpp.c cpp?.out + ;; +esac + +: flags used in final linking phase +case "$ldflags" in +'') if ./venix; then + dflt='-i -z' + else + dflt='' + fi + case "$ccflags" in + *-posix*) dflt="$dflt -posix" ;; + esac + case "$dflt" in + '') dflt='none' ;; + esac + ;; +*) dflt="$ldflags";; +esac +echo " " +rp="Any additional ld flags (NOT including libraries)?" +. ./myread +case "$ans" in +none) ldflags='';; +*) ldflags="$ans";; +esac +rmlist="$rmlist pdp11" + +@if lkflags +: partial linking may need other flags +case "$lkflags" in +'') case "$ldflags" in + '') dflt='none';; + *) dflt="$ldflags";; + esac;; +*) dflt="$lkflags";; +esac +echo " " +rp="Partial linking flags to be used (NOT including -r)?" +. ./myread +case "$ans" in +none) lkflags='';; +*) lkflags="$ans";; +esac + +@end diff --git a/U/d_dlsymun.U b/U/d_dlsymun.U new file mode 100644 index 0000000..7831c4a --- /dev/null +++ b/U/d_dlsymun.U @@ -0,0 +1,102 @@ +?RCS: $Id: d_dlsymun.U,v $ +?RCS: +?RCS: $Log: d_dlsymun.U,v $ +?RCS: +?MAKE:d_dlsymun: cat cc ccflags ldflags rm Setvar dlsrc i_dlfcn \ + cccdlflags ccdlflags lddlflags libs dlext +?MAKE: -pick add $@ %< +?X: This is specific to perl5. +?S:d_dlsymun: +?S: This variable conditionally defines DLSYM_NEEDS_UNDERSCORE, which +?S: indicates that we need to prepend an underscore to the symbol +?S: name before calling dlsym(). +?S:. +?C:DLSYM_NEEDS_UNDERSCORE: +?C: This symbol, if defined, indicates that we need to prepend an +?C: underscore to the symbol name before calling dlsym(). This only +?C: makes sense if you *have* dlsym, which we will presume is the +?C: case if you're using dl_dlopen.xs. +?C:. +?H:#$d_dlsymun DLSYM_NEEDS_UNDERSCORE /* */ +?H:. +?F: !fred +?LINT:set d_dlsymun +?T: xxx +: Check if dlsym need a leading underscore +echo " " +val="$undef" + +case "$dlsrc" in +dl_dlopen.xs) + echo "Checking whether your dlsym() needs a leading underscore ..." >&4 + $cat >dyna.c <<'EOM' +fred () { } +EOM + +$cat >fred.c< +#$i_dlfcn I_DLFCN +#ifdef I_DLFCN +#include /* the dynamic linker include file for Sunos/Solaris */ +#else +#include +#include +#include +#endif + +extern int fred() ; + +main() +{ + void * handle ; + void * symbol ; +#ifndef RTLD_LAZY + int mode = 1 ; +#else + int mode = RTLD_LAZY ; +#endif + handle = dlopen("./dyna.$dlext", mode) ; + if (handle == NULL) { + printf ("1\n") ; + exit(0); + } + symbol = dlsym(handle, "fred") ; + if (symbol == NULL) { + /* try putting a leading underscore */ + symbol = dlsym(handle, "_fred") ; + if (symbol == NULL) { + printf ("2\n") ; + exit(0); + } + printf ("3\n") ; + } + else + printf ("4\n") ; + exit(0); +} +EOM + if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && + ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 && + $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then + xxx=`./fred` + case $xxx in + 1) echo "Test program failed using dlopen." >&4 + echo "Perhaps you should not use dynamic loading." >&4;; + 2) echo "Test program failed using dlsym." >&4 + echo "Perhaps you should not use dynamic loading." >&4;; + 3) echo "dlsym needs a leading underscore" >&4 + val="$define" ;; + 4) echo "dlsym doesn't need a leading underscore." >&4;; + esac + else + echo "I can't compile and run the test program." >&4 + fi + ;; +esac + +$rm -f fred fred.? dyna.$dlext dyna.? + +set d_dlsymun +eval $setvar + diff --git a/U/dlext.U b/U/dlext.U new file mode 100644 index 0000000..8483197 --- /dev/null +++ b/U/dlext.U @@ -0,0 +1,48 @@ +?RCS: $Id: dlsrc.U,v$ +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: dlsrc.U,v $ +?RCS: +?X: hpux support thanks to Jeff Okamoto +?X: +?X: To create a shared library, you must compile ALL source files in the +?X: library with +z (or possibly +Z if the library is whopping huge), +?X: then link the library with -b. Example: +?X: cc -c +z module_a.c +?X: cc -c +z module_b.c +?X: ld -b module_a.o module_b.o -o module.sl +?X: +?MAKE:dlext: \ + Getfile Myread cat usedl so +?MAKE: -pick add $@ %< +?S:dlext: +?S: This variable contains the extension that is to be used for the +?S: dynamically loaded modules that perl generaties. +?S:. +case "$usedl" in +$define|y|true) + $cat << EOM + +On a few systems, the dynamically loaded modules that perl generates and uses +will need a different extension then shared libs. The default will probably +be appropriate. + +EOM + case "$dlext" in + '') dflt="$so" ;; + *) dflt="$dlext" ;; + esac + rp='What is the extension of dynamically loaded modules' + . ./myread + dlext="$ans" + ;; +*) + dlext="none" + ;; +esac + diff --git a/U/dlsrc.U b/U/dlsrc.U new file mode 100644 index 0000000..412e274 --- /dev/null +++ b/U/dlsrc.U @@ -0,0 +1,259 @@ +?RCS: $Id: dlsrc.U,v$ +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: dlsrc.U,v $ +?RCS: +?X: hpux support thanks to Jeff Okamoto +?X: +?X: To create a shared library, you must compile ALL source files in the +?X: library with +z (or possibly +Z if the library is whopping huge), +?X: then link the library with -b. Example: +?X: cc -c +z module_a.c +?X: cc -c +z module_b.c +?X: ld -b module_a.o module_b.o -o module.sl +?X: +?MAKE:usedl dlsrc cccdlflags lddlflags ccdlflags d_shrplib shrpdir: \ + Getfile Myread test osname sed i_dld d_dlopen Findhdr Setvar \ + cc ldflags cat archlib +?MAKE: -pick add $@ %< +?S:usedl: +?S: This variable indicates if the the system supports dynamic +?S: loading of some sort. See also dlsrc and dlobj. +?S:. +?S:dlsrc: +?S: This variable contains the name of the dynamic loading file that +?S: will be used with the package. +?S:. +?S:cccdlflags: +?S: This variable contains any special flags that might need to be +?S: passed with cc -c to compile modules to be used to create a shared +?S: library that will be used for dynamic loading. For hpux, this +?S: should be +z. It is up to the makefile to use it. +?S:. +?S:lddlflags: +?S: This variable contains any special flags that might need to be +?S: passed to ld to create a shared library suitable for dynamic +?S: loading. It is up to the makefile to use it. For hpux, it +?S: should be -b. For sunos 4.1, it is empty. +?S:. +?S:ccdlflags: +?S: This variable contains any special flags that might need to be +?S: passed to cc to link with a shared library for dynamic loading. +?S: It is up to the makefile to use it. For sunos 4.1, it should +?S: be empty. +?S:. +?S:d_shrplib: +?S: This variable indicates whether libperl should be made as a +?S: shared library. This must be true for dynamic loading to +?S: work on (some) System V Release 4 systems. +?S:. +?S:shrpdir: +?S: This variable contains the directory where the libperl shared +?S: library will be installed. LD_RUN_PATH is set to this when +?S: linking with libperl (unless it is /usr/lib, the default). +?S:. +?C:USE_DYNAMIC_LOADING ~ %<: +?C: This symbol, if defined, indicates that dynamic loading of +?C: some sort is available. +?C:. +?H:?%<:#$usedl USE_DYNAMIC_LOADING /**/ +?H:. +?W:%<:dlopen +?LINT: set d_shrplib shrpdir +?T:dldir +: determine which dynamic loading, if any, to compile in +echo " " +dldir="ext/DynaLoader" +case "$usedl" in +$define|y|true) + dflt='y' + usedl="$define" + ;; +$undef|n|false) + dflt='n' + usedl="$undef" + ;; +*) + dflt='n' + case "$d_dlopen" in + $define) dflt='y' ;; + esac + case "$i_dld" in + $define) dflt='y' ;; + esac + : Does a dl_xxx.xs file exist for this operating system + $test -f ../$dldir/dl_${osname}.xs && dflt='y' + ;; +esac +rp="Do you wish to use dynamic loading?" +. ./myread +usedl="$ans" +case "$ans" in +y*) usedl="$define" + case "$dlsrc" in + '') + if $test -f ../$dldir/dl_${osname}.xs ; then + dflt="$dldir/dl_${osname}.xs" + elif $test "$d_dlopen" = "$define" ; then + dflt="$dldir/dl_dlopen.xs" + elif $test "$i_dld" = "$define" ; then + dflt="$dldir/dl_dld.xs" + else + dflt='' + fi + ;; + *) dflt="$dldir/$dlsrc" + ;; + esac + echo "The following dynamic loading files are available:" + : Can not go over to $dldir because getfile has path hard-coded in. + cd ..; ls -C $dldir/dl*.xs; cd UU + rp="Source file to use for dynamic loading" + fn="fne~" + . ./getfile + usedl="$define" + : emulate basename + dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'` + $cat << EOM + +Some systems may require passing special flags to $cc -c to +compile modules that will be used to create a shared library. +To use no flags, say "none". + +EOM + case "$cccdlflags" in + ''|' ') case "$cc" in + *gcc*) dflt='-fpic' ;; + *) case "$osname" in + hpux) dflt='+z' ;; + next) dflt='none' ;; + solaris) dflt='-K pic' ;; + sunos) dflt='-pic' ;; + svr4*|esix*) dflt='-Kpic' ;; + *) dflt='none' ;; + esac ;; + esac ;; + *) dflt="$cccdlflags" ;; + esac + rp="Any special flags to pass to $cc -c to compile shared library modules?" + . ./myread + case "$ans" in + none) cccdlflags='' ;; + *) cccdlflags="$ans" ;; + esac + + cat << 'EOM' + +Some systems may require passing special flags to ld to create a +library that can be dynamically loaded. If your ld flags include +-L/other/path options to locate libraries outside your loader's normal +search path, you may need to specify those -L options here as well. To +use no flags, say "none". + +EOM +?X: I have received one report that NeXT requires -r here. +?X: On SunOS 4.1.3, that makes the library no longer shared. +?X: This stuff probably all belongs in hints files anyway. + case "$lddlflags" in + ''|' ') case "$osname" in + hpux) dflt='-b' ;; + next) dflt='none' ;; + solaris) dflt='-G' ;; + sunos) dflt='-assert nodefinitions' ;; + svr4*|esix*) dflt="-G $ldflags" ;; + *) dflt='none' ;; + esac + ;; + *) dflt="$lddlflags" ;; + esac + rp="Any special flags to pass to ld to create a dynamically loaded library?" + . ./myread + case "$ans" in + none) lddlflags='' ;; + *) lddlflags="$ans" ;; + esac + + cat <&4 + +Be sure to add the perl source directory to the LD_LIBRARY_PATH +environment variable before running make: + LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH +or + setenv LD_LIBRARY_PATH `cd ..;pwd` + +EOM +;; +esac +case "$d_shrplib" in +$define) + case "$shrpdir" in + "") dflt="$archlib/CORE";; + *) dflt="$shrpdir";; + esac + rp="What directory should we install the shared libperl into?" + fn="d~" + . ./getfile + shrpdir="$ans" + ;; +*) shrpdir='none' + ;; +esac + diff --git a/U/i_db.U b/U/i_db.U new file mode 100644 index 0000000..aaa2389 --- /dev/null +++ b/U/i_db.U @@ -0,0 +1,132 @@ +?RCS: $Id: i_db.U,v 3.0.1.1 1994/08/29 16:21:50 ram Exp $ +?RCS: +?RCS: Copyright (c) 1991-1993, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: Original Author: Andy Dougherty +?RCS: +?RCS: $Log: i_db.U,v $ +?RCS: Revision 3.0.1.1 1994/08/29 16:21:50 ram +?RCS: patch32: created by ADO +?RCS: +?MAKE:i_db db_hashtype db_prefixtype: Inhdr +cc +ccflags rm contains +?MAKE: -pick add $@ %< +?S:i_db: +?S: This variable conditionally defines the I_DB symbol, and indicates +?S: whether a C program may include Berkeley's DB include file . +?S:. +?S:db_hashtype: +?S: This variable contains the type of the hash structure element +?S: in the header file. In older versions of DB, it was +?S: int, while in newer ones it is u_int32_t. +?S:. +?S:db_prefixtype: +?S: This variable contains the type of the prefix structure element +?S: in the header file. In older versions of DB, it was +?S: int, while in newer ones it is size_t. +?S:. +?C:I_DB: +?C: This symbol, if defined, indicates to the C program that it should +?C: include Berkeley's DB include file . +?C:. +?C:DB_Prefix_t: +?C: This symbol contains the type of the prefix structure element +?C: in the header file. In older versions of DB, it was +?C: int, while in newer ones it is u_int32_t. +?C:. +?C:DB_Hash_t: +?C: This symbol contains the type of the prefix structure element +?C: in the header file. In older versions of DB, it was +?C: int, while in newer ones it is size_t. +?C:. +?H:#$i_db I_DB /**/ +?H:#define DB_Hash_t "$db_hashtype" /**/ +?H:#define DB_Prefix_t "$db_prefixtype" /**/ +?H:. +?F:!try.c !try.o +?LINT:set i_db +: see if this is a db.h system +set db.h i_db +eval $inhdr + +@if DB_Hash_t +case "$i_db" in +define) + : Check the return type needed for hash + echo "Checking return type needed for hash for Berkeley DB ..." >&4 + cat >try.c <<'EOCP' +#include +#include +u_int32_t +hash_cb (ptr, size) +const void * ptr ; +size_t size ; +{ +} +HASHINFO info ; +main() +{ + info.hash = hash_cb ; +} +EOCP + if $cc $ccflags -c try.c >try.out 2>&1 ; then + if $contains warning try.out >>/dev/null 2>&1 ; then + db_hashtype='int' + else + db_hashtype='u_int32_t' + fi + else + echo "I can't seem to compile the test program." >&4 + db_hashtype=int + fi + $rm -f try.[co] + echo "Your version of Berkeley DB uses $db_hashtype for hash." + ;; +*) db_hashtype=int + ;; +esac +@end + +@if DB_Prefix_t +case "$i_db" in +define) + : Check the return type needed for prefix + echo "Checking return type needed for prefix for Berkeley DB ..." >&4 + cat >try.c <<'EOCP' +#include +#include +size_t +prefix_cb (key1, key2) +const DBT * key1 ; +const DBT * key2 ; +{ +} +BTREEINFO info ; +main() +{ + info.prefix = prefix_cb ; +} +EOCP + if $cc $ccflags -c try.c >try.out 2>&1 ; then + if $contains warning try.out >>/dev/null 2>&1 ; then + db_prefixtype='int' + else + db_prefixtype='size_t' + fi + else + echo "I can't seem to compile the test program." >&4 + db_prefixtype='int' + fi + $rm -f try.[co] + echo "Your version of Berkeley DB uses $db_prefixtype for prefix." + ;; +*) db_prefixtype='int' + ;; +esac +@end + diff --git a/U/i_dbm.U b/U/i_dbm.U new file mode 100644 index 0000000..99bd346 --- /dev/null +++ b/U/i_dbm.U @@ -0,0 +1,52 @@ +?RCS: $Id: i_dbm.U,v 3.0 1993/08/18 12:08:19 ram Exp $ +?RCS: +?RCS: Copyright (c) 1991-1993, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: i_dbm.U,v $ +?RCS: Revision 3.0 1993/08/18 12:08:19 ram +?RCS: Baseline for dist 3.0 netwide release. +?RCS: +?MAKE:i_dbm: Inhdr Inlibc Setvar +?MAKE: -pick add $@ %< +?S:i_dbm (d_odbm): +?S: This variable conditionally defines the I_DBM symbol, which +?S: indicates to the C program that dbm.h exists and should +?S: be included. +?S:. +?C:I_DBM (HAS_ODBM ODBM): +?C: This symbol, if defined, indicates that dbm.h exists and should +?C: be included. +?C:. +?H:#$i_dbm I_DBM /**/ +?H:. +?T: t_dbm d_dbmclose +?LINT:set i_dbm +: see if dbm.h is available +?X: t_dbm is a tentative check. We might just have the header, not +?X: the library. We look for dbmclose() rather than dbminit() because +?X: some versions of SCO Unix have -ldbm, but are missing dbmclose(). +set dbm.h t_dbm +eval $inhdr +case "$t_dbm" in +$define) + : see if dbmclose exists + set dbmclose d_dbmclose + eval $inlibc + case "$d_dbmclose" in + $undef) + t_dbm="$undef" + echo "We won't be including " + ;; + esac + ;; +esac +val="$t_dbm" +set i_dbm +eval $setvar + diff --git a/U/i_gdbm.U b/U/i_gdbm.U new file mode 100644 index 0000000..d9ca1bc --- /dev/null +++ b/U/i_gdbm.U @@ -0,0 +1,51 @@ +?RCS: $Id: i_gdbm.U,v 3.0 1993/08/18 12:08:19 ram Exp $ +?RCS: +?RCS: Copyright (c) 1991-1993, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: i_gdbm.U,v $ +?RCS: Revision 3.0 1993/08/18 12:08:19 ram +?RCS: Baseline for dist 3.0 netwide release. +?RCS: +?MAKE:i_gdbm: Inhdr Inlibc Setvar +?MAKE: -pick add $@ %< +?S:i_gdbm (d_gdbm): +?S: This variable conditionally defines the I_GDBM symbol, which +?S: indicates to the C program that gdbm.h exists and should +?S: be included. +?S:. +?C:I_GDBM (HAS_GDBM): +?C: This symbol, if defined, indicates that gdbm.h exists and should +?C: be included. +?C:. +?H:#$i_gdbm I_GDBM /**/ +?H:. +?T: t_gdbm d_gdbm_open +?LINT:set i_gdbm +: see if gdbm.h is available +?X: t_gdbm is a tentative check. We might just have the header, not +?X: the library. +set gdbm.h t_gdbm +eval $inhdr +case "$t_gdbm" in +$define) + : see if gdbm_open exists + set gdbm_open d_gdbm_open + eval $inlibc + case "$d_gdbm_open" in + $undef) + t_gdbm="$undef" + echo "We won't be including " + ;; + esac + ;; +esac +val="$t_gdbm" +set i_gdbm +eval $setvar + diff --git a/U/i_ndbm.U b/U/i_ndbm.U new file mode 100644 index 0000000..62bcb7c --- /dev/null +++ b/U/i_ndbm.U @@ -0,0 +1,51 @@ +?RCS: $Id: i_ndbm.U,v 3.0 1993/08/18 12:08:19 ram Exp $ +?RCS: +?RCS: Copyright (c) 1991-1993, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: i_ndbm.U,v $ +?RCS: Revision 3.0 1993/08/18 12:08:19 ram +?RCS: Baseline for dist 3.0 netwide release. +?RCS: +?MAKE:i_ndbm: Inhdr Inlibc Setvar +?MAKE: -pick add $@ %< +?S:i_ndbm (d_ndbm): +?S: This variable conditionally defines the I_NDBM symbol, which +?S: indicates to the C program that ndbm.h exists and should +?S: be included. +?S:. +?C:I_NDBM (HAS_NDBM NDBM): +?C: This symbol, if defined, indicates that ndbm.h exists and should +?C: be included. +?C:. +?H:#$i_ndbm I_NDBM /**/ +?H:. +?T: t_ndbm d_dbm_open +?LINT:set i_ndbm +: see if ndbm.h is available +?X: t_ndbm is a tentative check. We might just have the header, not +?X: the library. +set ndbm.h t_ndbm +eval $inhdr +case "$t_ndbm" in +$define) + : see if dbm_open exists + set dbm_open d_dbm_open + eval $inlibc + case "$d_dbm_open" in + $undef) + t_ndbm="$undef" + echo "We won't be including " + ;; + esac + ;; +esac +val="$t_ndbm" +set i_ndbm +eval $setvar + diff --git a/U/mallocsrc.U b/U/mallocsrc.U new file mode 100644 index 0000000..83560e8 --- /dev/null +++ b/U/mallocsrc.U @@ -0,0 +1,126 @@ +?RCS: $Id: mallocsrc.U,v 3.0.1.1 1994/05/06 15:10:46 ram Exp $ +?RCS: +?RCS: Copyright (c) 1991-1993, Raphael Manfredi +?RCS: +?RCS: You may redistribute only under the terms of the Artistic Licence, +?RCS: as specified in the README file that comes with the distribution. +?RCS: You may reuse parts of this distribution only within the terms of +?RCS: that same Artistic Licence; a copy of which may be found at the root +?RCS: of the source tree for dist 3.0. +?RCS: +?RCS: $Log: mallocsrc.U,v $ +?RCS: Revision 3.0.1.1 1994/05/06 15:10:46 ram +?RCS: patch23: added support for MYMALLOC, mainly for perl5 (ADO) +?RCS: +?RCS: Revision 3.0 1993/08/18 12:09:12 ram +?RCS: Baseline for dist 3.0 netwide release. +?RCS: +?MAKE:mallocsrc mallocobj usemymalloc malloctype d_mymalloc: Myread \ + Oldconfig package Guess Setvar rm cat +cc +ccflags Findhdr \ + i_malloc sed libs +?MAKE: -pick add $@ %< +?S:usemymalloc: +?S: This variable contains y if the malloc that comes with this package +?S: is desired over the system's version of malloc. People often include +?S: special versions of malloc for effiency, but such versions are often +?S: less portable. See also mallocsrc and mallocobj. +?S: If this is 'y', then -lmalloc is removed from $libs. +?S:. +?S:mallocsrc: +?S: This variable contains the name of the malloc.c that comes with +?S: the package, if that malloc.c is preferred over the system malloc. +?S: Otherwise the value is null. This variable is intended for generating +?S: Makefiles. +?S:. +?S:d_mymalloc: +?S: This variable conditionally defines MYMALLOC in case other parts +?S: of the source want to take special action if MYMALLOC is used. +?S: This may include different sorts of profiling or error detection. +?S:. +?S:mallocobj: +?S: This variable contains the name of the malloc.o that this package +?S: generates, if that malloc.o is preferred over the system malloc. +?S: Otherwise the value is null. This variable is intended for generating +?S: Makefiles. See mallocsrc. +?S:. +?S:malloctype: +?S: This variable contains the kind of ptr returned by malloc and realloc. +?S:. +?C:Malloc_t (MALLOCPTRTYPE): +?C: This symbol is the type of pointer returned by malloc and realloc. +?C:. +?H:#define Malloc_t $malloctype /**/ +?H:. +?C:MYMALLOC: +?C: This symbol, if defined, indicates that we're using our own malloc. +?C:. +?H:#$d_mymalloc MYMALLOC /**/ +?H:. +?LINT:change libs +?X: Cannot test for mallocsrc; it is the unit's name and there is a bug in +?X: the interpreter which defines all the names, even though they are not used. +@if mallocobj +: determine which malloc to compile in +echo " " +case "$usemymalloc" in +''|y*|true) dflt='y' ;; +n*|false) dflt='n' ;; +*) dflt="$usemymalloc" ;; +esac +rp="Do you wish to attempt to use the malloc that comes with $package?" +. ./myread +usemymalloc="$ans" +case "$ans" in +y*|true) + usemymalloc='y' + mallocsrc='malloc.c' + mallocobj='malloc.o' + d_mymalloc="$define" +?X: Maybe libs.U should be dependent on mallocsrc.U, but then +?X: most packages that use dist probably don't supply their own +?X: malloc, so this is probably an o.k. comprpomise + case "$libs" in + *-lmalloc*) + : Remove malloc from list of libraries to use + echo "Removing unneeded -lmalloc from library list" >&4 + set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'` + shift + libs="$*" + echo "libs = $libs" >&4 + ;; + esac + ;; +*) + usemymalloc='n' + mallocsrc='' + mallocobj='' + d_mymalloc="$undef" + ;; +esac + +@end +@if MALLOCPTRTYPE || Malloc_t +: compute the type returned by malloc +echo " " +case "$malloctype" in +'') + $cat >malloc.c < +#include +#ifdef I_MALLOC +#include +#endif +void *malloc(); +END + if $cc $ccflags -c malloc.c >/dev/null 2>&1; then + malloctype='void *' + else + malloctype='char *' + fi + $rm -f malloc.[co] + ;; +esac +echo "Your system wants malloc to return '$malloctype', it would seem." >&4 + +@end