This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
From: Benny Siegert <bsiegert@gmail.com>
[metaconfig.git] / U / perl / libperl.U
index 4aa4c8d..131576a 100644 (file)
@@ -8,7 +8,7 @@
 ?MAKE:libperl useshrplib shrpenv ldlibpthname: \
        Myread Oldconfig archlibexp awk cat libc \
        _a osname osvers so patchlevel subversion usedl ld \
-       lib_ext ccdlflags installarchlib
+       ccdlflags installarchlib userelocatableinc
 ?MAKE: -pick wipe $@ %<
 ?S:libperl:
 ?S:    The perl executable is obtained by linking perlmain.c with
@@ -24,7 +24,7 @@
 ?S:.
 ?S:shrpenv:
 ?S:    If the user builds a shared libperl.so, then we need to tell the
-?S:    'perl' executable where it will be able to find the installed libperl.so. 
+?S:    'perl' executable where it will be able to find the installed libperl.so.
 ?S:    One way to do this on some systems is to set the environment variable
 ?S:    LD_RUN_PATH to the directory that will be the final location of the
 ?S:    shared libperl.so.  The makefile can use this with something like
@@ -53,6 +53,7 @@
 ?LINT:change ccdlflags
 ?LINT:extern maintloc maintname
 ?Y:top
+: Do we want a shared libperl?
 also=''
 case "$usedl" in
 $undef)
@@ -61,7 +62,7 @@ $undef)
        ;;
 *)     case "$useshrplib" in
        '')     case "$osname" in
-               svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
+               svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|haiku|cygwin*)
                        dflt=y
                        also='Building a shared libperl is required for dynamic loading to work on your system.'
                        ;;
@@ -109,15 +110,22 @@ esac
 
 case "$useshrplib" in
 true)
+       case "$userelocatableinc" in
+       true|define)
+               echo "Cannot build with both -Duserelocatableinc and -Duseshrplib" >&4
+               echo "See INSTALL for an explanation why that won't work." >&4
+               exit 4
+               ;;
+       esac
        case "$libperl" in
        '')
                # Figure out a good name for libperl.so.  Since it gets stored in
                # a version-specific architecture-dependent library, the version
                # number isn't really that important, except for making cc/ld happy.
                #
-               # A name such as libperl.so.3.1
+               # A name such as libperl.so.10.1
                majmin="libperl.$so.$patchlevel.$subversion"
-               # A name such as libperl.so.301
+               # A name such as libperl.so.100
                majonly=`echo $patchlevel $subversion |
                        $awk '{printf "%d%02d", $1, $2}'`
                majonly=libperl.$so.$majonly
@@ -131,8 +139,12 @@ true)
                linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
                        dflt=libperl.$so
                        ;;
-               cygwin*) # ld links against an importlib
-                       dflt=libperl$lib_ext
+               cygwin*) # ld links now against the dll directly
+                       majmin="cygperl5_${patchlevel}_${subversion}.${so}"
+                       majonly=`echo $patchlevel $subversion |
+                               $awk '{printf "%03d%03d", $1, $2}'`
+                       majonly=cygperl5.$majonly.$so
+                       dflt=$majmin
                        ;;
                *)      # Try to guess based on whether libc has major.minor.
                        case "$libc" in
@@ -205,14 +217,14 @@ shrpdir=$archlibexp/CORE
 xxx=''
 tmp_shrpenv=''
 if "$useshrplib"; then
-    case "$osname" in 
+    case "$osname" in
        aix)
                # We'll set it in Makefile.SH...
                ;;
        solaris)
                xxx="-R $shrpdir"
                ;;
-       freebsd|netbsd|openbsd|interix|dragonfly)
+       freebsd|mirbsd|netbsd|openbsd|interix|dragonfly)
                xxx="-Wl,-R$shrpdir"
                ;;
        bsdos|linux|irix*|dec_osf|gnu*)
@@ -224,17 +236,23 @@ if "$useshrplib"; then
        beos)
                # beos doesn't like the default, either.
                ;;
+       haiku)
+               # Haiku doesn't like the default, either.
+               ;;
        hpux*)
                # hpux doesn't like the default, either.
                tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
                ;;
+       cygwin)
+               # cygwin needs only ldlibpth
+               ;;
        *)
                tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
                ;;
        esac
        case "$xxx" in
        '') ;;
-       *)      
+       *)
                # Only add $xxx if it isn't already in ccdlflags.
                case " $ccdlflags " in
                *" $xxx "*)     ;;
@@ -242,7 +260,7 @@ if "$useshrplib"; then
                        cat <<EOM >&4
 
 Adding $xxx to the flags
-passed to $ld so that the perl executable will find the 
+passed to $ld so that the perl executable will find the
 installed shared $libperl.
 
 EOM