Retract #12446; the problem solved by #12474.
[p5sagit/p5-mst-13.2.git] / hints / aix.sh
index a5313d4..f862051 100644 (file)
@@ -53,13 +53,21 @@ esac
 
 # AIX 4.3.* and above default to using nm for symbol extraction
 case "$osvers" in
-   3.*|4.1.*|4.2.*|4.3.0.*)
-      usenm='undef'
-      usenativedlopen='false'
+   3.*|4.1.*|4.2.*)
+      case "$usenm" in
+         '') usenm='undef'
+         esac
+      case "$usenativedlopen" in
+         '') usenativedlopen='false'
+         esac
       ;;
    *)
-      usenm='true'
-      usenativedlopen='true'
+      case "$usenm" in
+         '') usenm='true'
+         esac
+      case "$usenativedlopen" in
+         '') usenativedlopen='true'
+         esac
       ;;
 esac
 
@@ -115,7 +123,7 @@ case "$osvers" in
     ccflags="$ccflags -D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE"
     case "$cc" in
      *gcc*) ;;
-     *) ccflags="$ccflags -qmaxmem=16384" ;;
+     *) ccflags="$ccflags -qmaxmem=16384 -qnoansialias" ;;
     esac
     nm_opt='-B'
     ;;
@@ -152,14 +160,14 @@ EOF
      5.0.0.0)
        cat >&4 <<EOF
 ***
-*** This C compiler ($ccversion) is known to have optimizer problems
-*** when compiling perl.c.
+*** This C compiler ($ccversion) is known to have too many optimizer
+*** bugs to compile a working Perl.
 ***
-*** Disabling optimization for that file but consider upgrading
-*** your C compiler.
+*** Consider upgrading your C compiler, or getting the GNU cc (gcc).
 ***
+*** Cannot continue, aborting.
 EOF
-perl_cflags='optimize='
+       exit 1
        ;;
      5.0.1.0)
        cat >&4 <<EOF
@@ -249,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="$*"
 
@@ -318,8 +326,8 @@ EOM
         # Move xld-spefific -bflags.
         ccflags="`echo $ccflags | sed -e 's@ -b@ -Wl,-b@g'`"
         ldflags="`echo ' '$ldflags | sed -e 's@ -b@ -Wl,-b@g'`"
+        lddlflags="`echo ' '$lddlflags | 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)"
@@ -461,24 +469,31 @@ EOCBU
 
 if test $usenativedlopen = 'true'
 then
-        ccflags="$ccflags -DUSE_NATIVE_DLOPEN"
-       ldflags="$ldflags -brtl"
+    ccflags="$ccflags -DUSE_NATIVE_DLOPEN"
+    case "$cc" in
+      *gcc*) ldflags="$ldflags -Wl,-brtl" ;;
+      *)     ldflags="$ldflags -brtl" ;;
+      esac
 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
+    case `oslevel` in
+       4.2.*)  ;;      # libC_r has broke gettimeofday
+        *)  # 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
+       esac
 fi
 
 # EOF