Retract #12446; the problem solved by #12474.
[p5sagit/p5-mst-13.2.git] / hints / aix.sh
index 1c2d7a2..f862051 100644 (file)
@@ -123,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'
     ;;
@@ -160,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
@@ -326,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)"
@@ -469,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