This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Add libscheck for Solaris.
[perl5.git] / hints / solaris_2.sh
index a2a4087..96bd2d6 100644 (file)
@@ -333,58 +333,47 @@ EOM
 esac
 EOCBU
 
-# This script UU/uselfs.cbu will get 'called-back' by Configure 
-# after it has prompted the user for whether to use large files.
-cat > UU/uselfs.cbu <<'EOCBU'
 case "$uselargefiles" in
-$define|true|[yY]*)
-       lfcflags="`getconf LFS_CFLAGS 2>/dev/null`"
-       lfldflags="`getconf LFS_LDFLAGS 2>/dev/null`"
-       lflibs="`getconf LFS_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`"
-       case "$lfcflags$lfldflags$lflibs" in
-       '');;
-       *) use64bits="$define"
-           echo "(Large files in Solaris require also using long longs...)"
-          case "$ccflags" in
-          *-DUSE_64_BITS*) ;;
-          *) ccflags="$ccflags -DUSE_64_BITS" ;;
-          esac
-          ccflags="$ccflags $lfcflags"
-          ldflags="$ldflags $lfldflags"
-          libswanted="$libswanted $lflibs"
-          ;;
-       esac
-       lfcflags=''
-       lfldflags=''
-       lflibs=''
-       ;;
+''|$define|true|[yY]*)
+    ccflags="$ccflags `getconf LFS_CFLAGS 2>/dev/null`"
+    ldflags="$ldflags `getconf LFS_LDFLAGS 2>/dev/null`"
+    libswanted="$libswanted `getconf LFS_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`"
+    ;;
 esac
-EOCBU
 
-# This script UU/use64bits.cbu will get 'called-back' by Configure 
+# This script UU/use64bitint.cbu will get 'called-back' by Configure 
 # after it has prompted the user for whether to use 64 bits.
-cat > UU/use64bits.cbu <<'EOCBU'
-case "$use64bits" in
+cat > UU/use64bitint.cbu <<'EOCBU'
+case "$use64bitint" in
 $define|true|[yY]*)
            case "`uname -r`" in
-           2.[1-5])
+           2.[1-6])
                cat >&4 <<EOM
-Solaris `uname -r` does not support 64-bit interfaces.
-You should upgrade to at least Solaris 2.6.
+Solaris `uname -r` does not support 64-bit integers.
+You should upgrade to at least Solaris 2.7.
 EOM
                exit 1
                ;;
            esac
-           case "$ccflags" in
-           *-DUSE_64_BITS*) ;;
-           *) ccflags="$ccflags -DUSE_64_BITS" ;;
-           esac
            # When a 64-bit cc becomes available $archname64
            # may need setting so that $archname gets it attached.
            ;;
 esac
 EOCBU
 
+case "$use64bitall" in
+$define|true|[yY]*)
+           ccflags="$ccflags `getconf XBS5_LP64_OFF64_CFLAGS`"
+           ldflags="$ccflags `getconf XBS5_LP64_OFF64_LDFLAGS`"
+           lddlflags="$lddlflags -G `getconf XBS5_LP64_OFF64_LDFLAGS`"
+           loclibpth="$loclibpth /usr/lib/sparcv9"
+           libscheck='case "`file $xxx`" in
+*64-bit*|*SPARCV9*) ;;
+*) xxx=/no/64-bit$xxx ;;
+esac'
+           ;;
+esac
 # This is just a trick to include some useful notes.
 cat > /dev/null <<'End_of_Solaris_Notes'
 
@@ -516,5 +505,51 @@ Date: 25 Jul 1995 12:20:18 GMT
 
     Perl 5 compiled out of the box.
 
+7.0) 64-bitness, from Alan Burlison (added by jhi 2000-02-21)
+
+  You need a machine running Solaris 2.7 or above.
+
+  Here's some rules:
+  
+  1. Solaris 2.7 and above will run in either 32 bit or 64 bit mode,
+     via a reboot.
+  2. You can build 64 bit apps whilst running 32 bit mode and vice-versa.
+  3. 32 bit apps will run under Solaris running in either 32 or 64 bit mode.
+  4. 64 bit apps require Solaris to be running 64 bit mode
+  5. It is possible to select the appropriate 32 or 64 bit version of an
+     app at run-time using isaexec(3).
+  6. You can detect the OS mode using "isainfo -v", e.g.
+      fubar$ isainfo -v   # Ultra 30 in 64 bit mode
+      64-bit sparcv9 applications
+      32-bit sparc applications
+  7. To compile 64 bit you need to use the flag "-xarch=v9".
+     getconf(1) will tell you this, e.g.
+      fubar$ getconf -a | grep v9
+      XBS5_LP64_OFF64_CFLAGS:         -xarch=v9
+      XBS5_LP64_OFF64_LDFLAGS:        -xarch=v9
+      XBS5_LP64_OFF64_LINTFLAGS:      -xarch=v9
+      XBS5_LPBIG_OFFBIG_CFLAGS:       -xarch=v9
+      XBS5_LPBIG_OFFBIG_LDFLAGS:      -xarch=v9
+      XBS5_LPBIG_OFFBIG_LINTFLAGS:    -xarch=v9
+      _XBS5_LP64_OFF64_CFLAGS:        -xarch=v9
+      _XBS5_LP64_OFF64_LDFLAGS:       -xarch=v9
+      _XBS5_LP64_OFF64_LINTFLAGS:     -xarch=v9
+      _XBS5_LPBIG_OFFBIG_CFLAGS:      -xarch=v9
+      _XBS5_LPBIG_OFFBIG_LDFLAGS:     -xarch=v9
+      _XBS5_LPBIG_OFFBIG_LINTFLAGS:   -xarch=v9
+
+  > > Now, what should we do, then?  Should -Duse64bits in a v9 box cause
+  > > Perl to compiled in v9 mode?  Or should we for compatibility stick
+  > > with 32 bit builds and let the people in the know to add the -xarch=v9
+  > > to ccflags (and ldflags?)?
+
+  > I think the second (explicit) mechanism should be the default.  Unless
+  > you want to allocate more than ~ 4Gb of memory inside Perl, you don't
+  > need Perl to be a 64-bit app.  Put it this way, on a machine running
+  > Solaris 8, there are 463 executables under /usr/bin, but only 15 of
+  > those require 64 bit versions - mainly because they invade the kernel
+  > address space, e.g. adb, kgmon etc.  Certainly we don't recommend users
+  > to build 64 bit apps unless they need the address space.
+
 End_of_Solaris_Notes