Add workaround for Darwin's (Mac OS X's) INT32_MIN
[p5sagit/p5-mst-13.2.git] / hints / aix.sh
index c374131..3d6e8d8 100644 (file)
@@ -55,9 +55,11 @@ esac
 case "$osvers" in
    3.*|4.1.*|4.2.*)
       usenm='undef'
+      usenativedlopen='false'
       ;;
    *)
       usenm='true'
+      usenativedlopen='true'
       ;;
 esac
 
@@ -126,6 +128,7 @@ d_setreuid='undef'
 # Changes for dynamic linking by Wayne Scott <wscott@ichips.intel.com>
 #
 # Tell perl which symbols to export for dynamic linking.
+cccdlflags='none'      # All AIX code is position independent
 case "$cc" in
 *gcc*) ccdlflags='-Xlinker' ;;
 *) ccversion=`lslpp -L | grep 'C for AIX Compiler$' | awk '{print $2}'`
@@ -189,14 +192,14 @@ case "$osvers" in
     lddlflags="$lddlflags -H512 -T512 -bhalt:4 -bM:SRE -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -e _nostart -lc"
     ;;
 *) 
-    lddlflags="$lddlflags -bhalt:4 -bM:SRE -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -b noentry -lc"
+    lddlflags="$lddlflags -bhalt:4 -bM:SRE -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -bnoentry -lc"
     ;;
 esac
 # AIX 4.2 (using latest patchlevels on 20001130) has a broken bind
 # library (getprotobyname and getprotobynumber are outversioned by
 # the same calls in libc, at least for xlc version 3...
 case "`oslevel`" in
-    4.2.1.*)  # Test for xlc version too, should we?
+    4.2.1.*)
       case "$ccversion" in    # Don't know if needed for gcc
           3.1.4.*)    # libswanted "bind ... c ..." => "... c bind ..."
               set `echo X "$libswanted "| sed -e 's/ bind\( .*\) \([cC]\) / \1 \2 bind /'`
@@ -299,8 +302,14 @@ EOM
        # Remove xlc-spefific -qflags.
         ccflags="`echo $ccflags | sed -e 's@ -q[^ ]*@ @g' -e 's@^-q[^ ]* @@g'`"
         ldflags="`echo $ldflags | sed -e 's@ -q[^ ]*@ @g' -e 's@^-q[^ ]* @@g'`"
-       echo >&4 "(using ccflags $ccflags)"
-       echo >&4 "(using ldflags $ldflags)"
+        # Move xld-spefific -bflags.
+        ccflags="`echo $ccflags | 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)"
+        echo >&4 "(using ldflags   $ldflags)"
+        echo >&4 "(using lddlflags $lddlflags)"
         ;; 
         esac
         ;;
@@ -437,20 +446,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