'') usemymalloc='n' ;;
esac
-# malloc wrap works
+# malloc wrap works, but not in vac-5, see later
case "$usemallocwrap" in
-'') usemallocwrap='define' ;;
-esac
+ '') usemallocwrap='define' ;;
+ esac
# Intuiting the existence of system calls under AIX is difficult,
# at best; the safest technique is to find them empirically.
ccdlflags='-Xlinker'
if [ "X$gccversion" = "X" ]; then
# Done too late in Configure if hinted
- gccversion=`$cc --version | sed 's/.*(GCC) *//'`
+ gccversion=`$cc -dumpversion`
fi
;;
- *) ccversion=`lslpp -L | grep 'C for AIX Compiler$' | grep -v '\.msg\.[A-Za-z_]*\.' | head -1 | awk '{print $1,$2}'`
+ *) ccversion=`lslpp -ql -Ou vac.C | grep -v '^Path' | head -1 | awk '{print $1,$2}'`
case "$ccversion" in
'') ccversion=`lslpp -L | grep 'IBM C and C++ Compilers LUM$'` ;;
ccversion=`echo "$ccversion" | awk '{print $2}'`
# Redbooks state AIX-5 only supports vac-5.0.2.0 and up
+ case "$ccversion" in
+ 5*) usemallocwrap='n' ;; # panic in miniperl
+ esac
;;
esac
# -bI:$(PERL_INC)/perl.exp Read the exported symbols from the perl binary
# -bE:$(BASEEXT).exp Export these symbols. This file contains only one
# symbol: boot_$(EXP) can it be auto-generated?
-lddlflags="$lddlflags -bhalt:4 -bM:SRE -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -bnoentry -lc"
+if test $usenativedlopen = 'true' ; then
+ lddlflags="$lddlflags -bhalt:4 -bexpall -G -bnoentry -lc"
+else
+ lddlflags="$lddlflags -bhalt:4 -bM:SRE -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -bnoentry -lc"
+ fi
case "$use64bitall" in
$define|true|[yY]*) use64bitint="$define" ;;
*gcc*) ccflags="-D_THREAD_SAFE $ccflags" ;;
cc_r) ;;
- cc|xl[cC]|xl[cC]_r)
+ '') cc=cc_r ;;
+
+ *)
+
+
+ # No | alternation in aix sed. :-(
+ newcc=`echo $cc | sed -e 's/cc$/cc_r/' -e 's/xl[cC]$/cc_r/' -e 's/xl[cC]_r$/cc_r/'`
+ case "$newcc" in
+ $cc) # No change
+ ;;
+
+ *cc_r)
echo >&4 "Switching cc to cc_r because of POSIX threads."
# xlc_r has been known to produce buggy code in AIX 4.3.2.
# (e.g. pragma/overload core dumps) Let's suspect xlC_r, too.
# --jhi@iki.fi
- cc=cc_r
+ cc="$newcc"
;;
- '') cc=cc_r ;;
-
- *)
+ *)
cat >&4 <<EOM
*** For pthreads you should use the AIX C compiler cc_r.
*** (now your compiler was set to '$cc')
exit 1
;;
esac
+ esac
# Insert pthreads to libswanted, before any libc or libC.
set `echo X "$libswanted "| sed -e 's/ \([cC]\) / pthreads \1 /'`
;;
esac
+ # -bmaxdata:0x80000000
+ # - This increases the size of heap memory available to perl.
+ # Default is 256 MB, which sounds large but caused a software
+ # vendor problems. So this sets heap to 2 GB maximum. Anything
+ # higher and you'd want to consider 64 bit perl.
+ # - NOTE however, that setting this in 64bit mode will limit your
+ # amount of available memory to 2GB, so we set this only in
+ # 32bit mode to avoid future problems a la "should be enough
+ # for everyone" ...
+ #
+ case "$use64bitall" in
+ $define|true|[yY]*)
+ :
+ ;;
+ *)
+ ldflags="$ldflags -bmaxdata:0x80000000"
+ ;;
+ esac
+
case "$gccversion" in
- '') ;;
+ '') # Not using gcc.
+ # Due to calling $cc without $cflags when linking some
+ # binaries we need to hardwire $cc to the right mode.
+ # The correct fix would be to have Makefile.SH not set
+ # CLDFLAGS from $ldflags ...
+ case "$use64bitall" in
+ $define|true|[yY]*) cc="$cc -q64" ;;
+ *) cc="$cc -q32" ;;
+ esac
+ ;;
*) # Remove xlc-specific -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'`"
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@ -G @ -Wl,-G @g'`"
+
+ # Due to calling $cc without $cflags when linking some
+ # binaries we need to hardwire $cc to the right mode.
+ case "$use64bitall" in
+ $define|true|[yY]*)
+ cc="$cc -maix64"
+ ld="$cc"
+ ;;
+ *)
+ cc="$cc -maix32"
+ ld="$cc"
+ ;;
+ esac
echo >&4 "(using ccflags $ccflags)"
echo >&4 "(using ldflags $ldflags)"
echo >&4 "(using lddlflags $lddlflags)"
# Remove them.
ccflags="`echo $ccflags | sed -e 's@-q32@@'`"
ldflags="`echo $ldflags | sed -e 's@-b32@@'`"
+ case "$cc" in
+ *gcc*)
+ ccflags="`echo $ccflags | sed -e 's@-q64@-maix64@'`"
+ ccflags_uselargefiles="`echo $ccflags_uselargefiles | sed -e 's@-q64@-maix64@'`"
+ qacflags="`echo $qacflags | sed -e 's@-q64@-maix64@'`"
+ ;;
+ esac
# Tell archiver to use large format. Unless we remove 'ar'
# from 'trylist', the Configure script will just reset it to 'ar'
# immediately prior to writing config.sh. This took me hours
trylist="`echo $trylist | sed -e 's@^ar @@' -e 's@ ar @ @g' -e 's@ ar$@@'`"
ar="ar -X64"
nm_opt="-X64 $nm_opt"
- # Note: Placing the 'qacflags' variable into the 'ldflags' string
- # is NOT a typo. ldflags is passed to the C compiler for final
- # linking, and it wants -q64 (-b64 is for ld only!).
case "$qacflags$qaldflags$qalibs" in
'') ;;
*) ccflags="$ccflags $qacflags"
- ldflags="$ldflags $qacflags"
+ ldflags="$ldflags"
lddlflags="$qaldflags $lddlflags"
libswanted="$libswanted $qalibs"
;;
if test $usenativedlopen = 'true' ; then
ccflags="$ccflags -DUSE_NATIVE_DLOPEN"
+ # -brtl Enables a binary to use run time linking
+ # -bdynamic When used with -brtl, tells linker to search for
+ # ".so"-suffix libraries as well as ".a" suffix
+ # libraries. AIX allows both .so and .a libraries to
+ # contain dynamic shared objects.
case "$cc" in
- *gcc*) ldflags="$ldflags -Wl,-brtl" ;;
- *) ldflags="$ldflags -brtl" ;;
+ *gcc*) ldflags="$ldflags -Wl,-brtl -Wl,-bdynamic" ;;
+ *) ldflags="$ldflags -brtl -bdynamic" ;;
esac
elif test -f /lib/libC.a -a X"`$cc -v 2>&1 | grep gcc`" = X; then
# If the C++ libraries, libC and libC_r, are available we will