SysV IPC semops use native shorts, not forced-to-16-bit-shorts.
[p5sagit/p5-mst-13.2.git] / hints / aix.sh
index 00fbb47..b637391 100644 (file)
@@ -54,10 +54,20 @@ esac
 # AIX 4.3.* and above default to using nm for symbol extraction
 case "$osvers" in
    3.*|4.1.*|4.2.*)
-      usenm='undef'
+      case "$usenm" in
+         '') usenm='undef'
+         esac
+      case "$usenativedlopen" in
+         '') usenativedlopen='false'
+         esac
       ;;
    *)
-      usenm='true'
+      case "$usenm" in
+         '') usenm='true'
+         esac
+      case "$usenativedlopen" in
+         '') usenativedlopen='true'
+         esac
       ;;
 esac
 
@@ -247,11 +257,11 @@ EOM
        lddlflags="$*"
 
        # Insert pthreads to libswanted, before any libc or libC.
-       set `echo X "$libswanted "| sed -e 's/ \([cC]\) / pthreads \1 /'`
+       set `echo X "$libswanted "| sed -e 's/ \([cC]_r\) / pthreads \1 /'`
        shift
        libswanted="$*"
        # Insert pthreads to lddlflags, before any libc or libC.
-       set `echo X "$lddlflags " | sed -e 's/ \(-l[cC]\) / -lpthreads \1 /'`
+       set `echo X "$lddlflags " | sed -e 's/ \(-l[cC]_r\) / -lpthreads \1 /'`
        shift
        lddlflags="$*"
 
@@ -264,9 +274,17 @@ EOCBU
 cat > UU/uselargefiles.cbu <<'EOCBU'
 case "$uselargefiles" in
 ''|$define|true|[yY]*)
+    # Configure should take care of use64bitint and use64bitall being
+    # defined before uselargefiles.cbu is consulted.
+    if test X"$use64bitint:$quadtype" = X"$define:long" -o X"$use64bitall" = Xdefine; then
+# Keep these at the left margin.
+ccflags_uselargefiles="`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`"
+ldflags_uselargefiles="`getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`"
+    else
 # Keep these at the left margin.
 ccflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_CFLAGS 2>/dev/null`"
 ldflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`"
+    fi
        # _Somehow_ in AIX 4.3.1.0 the above getconf call manages to
        # insert(?) *something* to $ldflags so that later (in Configure) evaluating
        # $ldflags causes a newline after the '-b64' (the result of the getconf).
@@ -278,8 +296,13 @@ ldflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`"
        # Therefore the line re-evaluating ldflags_uselargefiles: it seems to fix
        # the whatever it was that AIX managed to break. --jhi
        ldflags_uselargefiles="`echo $ldflags_uselargefiles`"
+    if test X"$use64bitint:$quadtype" = X"$define:long" -o X"$use64bitall" = Xdefine; then
+# Keep this at the left margin.
+libswanted_uselargefiles="`getconf XBS5_LP64_OFF64_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`"
+    else
 # Keep this at the left margin.
 libswanted_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`"
+    fi
        case "$ccflags_uselargefiles$ldflags_uselargefiles$libs_uselargefiles" in
        '');;
        *) ccflags="$ccflags $ccflags_uselargefiles"
@@ -302,7 +325,7 @@ EOM
         ldflags="`echo $ldflags | sed -e 's@ -q[^ ]*@ @g' -e 's@^-q[^ ]* @@g'`"
         # Move xld-spefific -bflags.
         ccflags="`echo $ccflags | sed -e 's@ -b@ -Wl,-b@g'`"
-        ldflags="`echo $ldflags | sed -e 's@ -b@ -Wl,-b@g'`"
+        ldflags="`echo ' '$ldflags | sed -e 's@ -b@ -Wl,-b@g'`"
         ld='gcc'
         lddlflags="`echo $lddlflags | sed -e 's@ -b@ -Wl,-b@g'`"
         echo >&4 "(using ccflags   $ccflags)"
@@ -328,6 +351,11 @@ EOM
                exit 1
                ;;
            esac
+           # XXX In 64-bit AIX 5L (oslevel 5.1.0.0, ccversion 5.0.2.0)
+           # the Configure library symbol probe mysteriously finds all
+           # symbols but these two --jhi XXX
+           d_pipe='define'
+           d_times='define'
            ;;
 esac
 EOCBU
@@ -444,20 +472,26 @@ $define|true|[yY]*)
 esac
 EOCBU
 
-# If the C++ libraries, libC and libC_r, are available we will prefer them
-# over the vanilla libc, because the libC contain loadAndInit() and
-# terminateAndUnload() which work correctly with C++ statics while libc
-# load() and unload() do not.  See ext/DynaLoader/dl_aix.xs.
-# The C-to-C_r switch is done by usethreads.cbu, if needed.
-if test -f /lib/libC.a -a X"`$cc -v 2>&1 | grep gcc`" = X; then
-    # Cify libswanted.
-    set `echo X "$libswanted "| sed -e 's/ c / C c /'`
-    shift
-    libswanted="$*"
-    # Cify lddlflags.
-    set `echo X "$lddlflags "| sed -e 's/ -lc / -lC -lc /'`
-    shift
-    lddlflags="$*"
+if test $usenativedlopen = 'true'
+then
+        ccflags="$ccflags -DUSE_NATIVE_DLOPEN"
+       ldflags="$ldflags -brtl"
+else
+    # If the C++ libraries, libC and libC_r, are available we will prefer them
+    # over the vanilla libc, because the libC contain loadAndInit() and
+    # terminateAndUnload() which work correctly with C++ statics while libc
+    # load() and unload() do not.  See ext/DynaLoader/dl_aix.xs.
+    # The C-to-C_r switch is done by usethreads.cbu, if needed.
+    if test -f /lib/libC.a -a X"`$cc -v 2>&1 | grep gcc`" = X; then
+       # Cify libswanted.
+       set `echo X "$libswanted "| sed -e 's/ c / C c /'`
+       shift
+       libswanted="$*"
+       # Cify lddlflags.
+       set `echo X "$lddlflags "| sed -e 's/ -lc / -lC -lc /'`
+       shift
+       lddlflags="$*"
+    fi
 fi
 
 # EOF