summaryrefslogtreecommitdiff
path: root/U/dlsrc.U
diff options
context:
space:
mode:
Diffstat (limited to 'U/dlsrc.U')
-rw-r--r--U/dlsrc.U259
1 files changed, 259 insertions, 0 deletions
diff --git a/U/dlsrc.U b/U/dlsrc.U
new file mode 100644
index 0000000000..412e274abf
--- /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 <okamoto@hpcc101.corp.hp.com>
+?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 <<EOM
+
+Some systems may require passing special flags to $cc to indicate that
+the resulting executable will use dynamic linking. To use no flags,
+say "none".
+
+EOM
+ case "$ccdlflags" in
+ ''|' ') case "$osname" in
+ hpux) dflt='none' ;;
+ next) dflt='none' ;;
+ sunos) dflt='none' ;;
+ *) dflt='none' ;;
+ esac ;;
+ *) dflt="$ccdlflags" ;;
+ esac
+ rp="Any special flags to pass to $cc to use dynamic loading?"
+ . ./myread
+ case "$ans" in
+ none) ccdlflags='' ;;
+ *) ccdlflags="$ans" ;;
+ esac
+ ;;
+?X: End of usedl=y section
+*) usedl="$undef"
+ dlsrc='dl_none.xs'
+ lddlflags=''
+ ccdlflags=''
+ ;;
+esac
+
+?X: Currently libperl is only created as a shared library if
+?X: using dynamic loading on a SysVR4 system. Feel free to
+?X: add prompts here to allow the user to choose a shared
+?X: libperl in other cases.
+val="$undef"
+case "$osname" in
+esix*|svr4*)
+ case "$usedl" in
+ $define)
+ $cat <<EOM
+
+System V Release 4 systems can support dynamic loading
+only if libperl is created as a shared library.
+
+EOM
+ val="$define"
+ ;;
+ esac ;;
+esac
+set d_shrplib; eval $setvar
+case "$d_shrplib" in
+$define)
+ cat <<EOM >&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
+