X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Faix.sh;h=5c07c12c8a0b0857c95e0f93aecaddeee8123989;hb=79c530cb74824bda9eaf13218c0c013baf5ac51f;hp=a9d071515310c54804ba8bcfbc55f7d130fcb9f4;hpb=0baa094867867dae4d06080810389e0a395c66b9;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/aix.sh b/hints/aix.sh index a9d0715..5c07c12 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -80,6 +80,12 @@ EOF ;; esac + s=`lslpp -lc bos.adt.libm >/dev/null` +if [ $? != 0 ]; then + echo "You cannot build perl without the bos.adt.libm package installed" >&4 + exit + fi + # uname -m output is too specific and not appropriate here case "$archname" in '') archname="$osname" ;; @@ -158,7 +164,7 @@ case "$cc" in # -bE:$(BASEEXT).exp Export these symbols. This file contains only one # symbol: boot_$(EXP) can it be auto-generated? if test $usenativedlopen = 'true' ; then - lddlflags="$lddlflags -bhalt:4 -bexpall -G -bnoentry -lc" + lddlflags="$lddlflags -bhalt:4 -G -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -bnoentry -lc -lm" else lddlflags="$lddlflags -bhalt:4 -bM:SRE -bI:\$(PERL_INC)/perl.exp -bE:\$(BASEEXT).exp -bnoentry -lc" fi @@ -295,10 +301,10 @@ ldflags_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LDFLAGS 2>/dev/null`" fi 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`" +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`" +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 @@ -309,8 +315,36 @@ libswanted_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@ ;; 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'`" @@ -319,9 +353,18 @@ libswanted_uselargefiles="`getconf XBS5_ILP32_OFFBIG_LIBS 2>/dev/null|sed -e 's@ ldflags="`echo ' '$ldflags | sed -e 's@ -b@ -Wl,-b@g'`" lddlflags="`echo ' '$lddlflags | sed -e 's@ -b@ -Wl,-b@g'`" 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]*) ld="$cc -maix64" ;; - *) ld="$cc" ;; + $define|true|[yY]*) + cc="$cc -maix64" + ld="$cc" + ;; + *) + cc="$cc -maix32" + ld="$cc" + ;; esac echo >&4 "(using ccflags $ccflags)" echo >&4 "(using ldflags $ldflags)" @@ -382,7 +425,7 @@ EOM # string is simply not detectable by any means. Since it doesn't # do any harm, I didn't pursue it. -- sh qaldflags="`echo $qaldflags`" - qalibs="`getconf XBS5_LP64_OFF64_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + qalibs="`getconf XBS5_LP64_OFF64_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g'`" # -q32 and -b32 may have been set by uselargefiles or user. # Remove them. ccflags="`echo $ccflags | sed -e 's@-q32@@'`" @@ -401,13 +444,10 @@ EOM 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" ;; @@ -435,14 +475,9 @@ if test $usenativedlopen = 'true' ; then # ".so"-suffix libraries as well as ".a" suffix # libraries. AIX allows both .so and .a libraries to # contain dynamic shared objects. - # -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. case "$cc" in - *gcc*) ldflags="$ldflags -Wl,-brtl -Wl,-bdynamic -Wl,-bmaxdata:0x80000000" ;; - *) ldflags="$ldflags -brtl -bdynamic -bmaxdata:0x80000000" ;; + *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