The casting mystery in HP-UX and IRIX needs at least a workaround
[p5sagit/p5-mst-13.2.git] / hints / hpux.sh
index ce15f55..c9524cf 100644 (file)
 # HP-UX 10 pthreads hints: Matthew T Harden <mthard@mthard1.monsanto.com>
 # From: Dominic Dunlop <domo@computer.org>
 # Abort and offer advice if bundled (non-ANSI) C compiler selected
+# From: H.Merijn Brand <h.m.brand@hccnet.nl>
+# ccversion detection
+# perl/64/HP-UX wants libdb-3.0 to be shared ELF 64
+# generic pthread support detection for PTH package
+
 
 # This version: March 8, 2000
 # Current maintainer: Jeff Okamoto <okamoto@corp.hp.com>
@@ -105,9 +110,13 @@ EOM
     ;;
 esac
 
+cc=${cc:-cc}
+
 case `$cc -v 2>&1`"" in
 *gcc*) ccisgcc="$define" ;;
-*) ccisgcc='' ;;
+*) ccisgcc=''
+   ccversion=`which cc | xargs what | awk '/Compiler/{print $2}'`
+   ;;
 esac
 
 # Determine the architecture type of this system.
@@ -175,6 +184,7 @@ EOM
     ccflags="$ccflags +DD64"
     ldflags="$ldflags +DD64"
     test -d /lib/pa20_64 && loclibpth="$loclibpth /lib/pa20_64"
+    libswanted="$libswanted pthread"
     libscheck='case "`/usr/bin/file $xxx`" in
 *LP64*|*PA-RISC2.0*) ;;
 *) xxx=/no/64-bit$xxx ;;
@@ -329,33 +339,50 @@ EOM
         fi
         case "$xxOsRevMajor" in
         10)
-            # Under 10.X, a threaded perl can be built, but it needs
-            # libcma and OLD_PTHREADS_API.  Also <pthread.h> needs to
-            # be #included before any other includes (in perl.h)
-            if [ ! -f /usr/include/pthread.h -o ! -f /usr/lib/libcma.sl ]; then
+            # Under 10.X, a threaded perl can be built
+            if [ -f /usr/include/pthread.h ]; then
+               if [ -f /usr/lib/libcma.sl ]; then
+                   # DCE (from Core OS CD) is installed
+
+                   # It needs # libcma and OLD_PTHREADS_API. Also <pthread.h>
+                   # needs to be #included before any other includes
+                   # (in perl.h)
+
+                   # HP-UX 10.X uses the old pthreads API
+                   d_oldpthreads="$define"
+
+                   # include libcma before all the others
+                   libswanted="cma $libswanted"
+
+                   # tell perl.h to include <pthread.h> before other include files
+                   ccflags="$ccflags -DPTHREAD_H_FIRST"
+
+                   # CMA redefines select to cma_select, and cma_select expects int *
+                   # instead of fd_set * (just like 9.X)
+                   selecttype='int *'
+
+               elif [ -f /usr/lib/libpthread.sl ]; then
+                   # PTH package is installed
+                   libswanted="pthread $libswanted"
+               else
+                   libswanted="no_threads_available"
+                   fi
+           else
+               libswanted="no_threads_available"
+               fi
+
+            if [ $libswanted = "no_threads_available" ]; then
                 cat <<EOM >&4
 In HP-UX 10.X for POSIX threads you need both of the files
-/usr/include/pthread.h and /usr/lib/libcma.sl.
-Either you must install the CMA package or you must upgrade to HP-UX 11.
+/usr/include/pthread.h and either /usr/lib/libcma.sl or /usr/lib/libpthread.sl.
+Either you must upgrade to HP-UX 11 or install a posix thread library:
+ DCE-CoreTools from HP-UX 10.20 Hardware Extensions 3.0 CD (B3920-13941) or
+ PTH package from i.e. http://hpux.tn.tudelft.nl/hppd/hpux/alpha.html
 Cannot continue, aborting.
 EOM
                exit 1
-            fi
-
-            # HP-UX 10.X uses the old pthreads API
-            case "$d_oldpthreads" in
-            '') d_oldpthreads="$define" ;;
-            esac
+               fi
 
-            # include libcma before all the others
-            libswanted="cma $libswanted"
-
-            # tell perl.h to include <pthread.h> before other include files
-            ccflags="$ccflags -DPTHREAD_H_FIRST"
-
-            # CMA redefines select to cma_select, and cma_select expects int *
-            # instead of fd_set * (just like 9.X)
-            selecttype='int *'
             ;;
         11 | 12) # 12 may want upping the _POSIX_C_SOURCE datestamp...
             ccflags=" -D_POSIX_C_SOURCE=199506L $ccflags"
@@ -387,8 +414,10 @@ cat > UU/uselargefiles.cbu <<'EOCBU'
 case "$uselargefiles" in
 ''|$define|true|[yY]*)
        # there are largefile flags available via getconf(1)
-       # but we cheat for now.
-       ccflags="$ccflags -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+       # but we cheat for now.  (Keep that in the left margin.)
+ccflags_uselargefiles="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+
+       ccflags="$ccflags $ccflags_uselargefiles"
 
         if test -z "$ccisgcc" -a -z "$gccversion"; then
            # The strict ANSI mode (-Aa) doesn't like large files.
@@ -406,3 +435,5 @@ EOCBU
 # keep that leading tab.
        ccisgcc=''
 
+# Until we figure out what to be probe for in Configure (ditto for irix_6.sh)
+d_casti32='undef'