X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Faix.sh;h=3d6e8d83f45097cb603ee5139301172eed563fcb;hb=8dec540cdddd445bea8861dacf9738097910923e;hp=31d189f5d9e069b681e22eb16161575077118730;hpb=b7a204175abb9441225e42d993ad40f9ea688652;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/aix.sh b/hints/aix.sh index 31d189f..3d6e8d8 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -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 # # 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}'` @@ -146,6 +149,18 @@ case "$cc" in *** EOF ;; + 5.0.0.0) + cat >&4 <&4 < "... c bind ..." set `echo X "$libswanted "| sed -e 's/ bind\( .*\) \([cC]\) / \1 \2 bind /'` @@ -287,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 ;; @@ -384,13 +405,13 @@ EOM ar="ar -X64" nm_opt="-X64 $nm_opt" # Note: Placing the 'qacflags' variable into the 'ldflags' string - # is NOT a typo. ldqalags is passed to the C compiler for final + # 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" - lddqalags="$qaldflags $lddqalags" + lddlflags="$qaldflags $lddlflags" libswanted="$libswanted $qalibs" ;; esac @@ -418,31 +439,33 @@ cat > UU/uselongdouble.cbu <<'EOCBU' # after it has prompted the user for whether to use long doubles. case "$uselongdouble" in $define|true|[yY]*) - case "$cc" in - *gcc*) ;; - *) ccflags="$ccflags -qlongdouble" ;; - esac - # The explicit cc128, xlc128, xlC128 are not needed, - # the -qlongdouble should do the trick. --jhi - d_Gconvert='sprintf((b),"%.*llg",(n),(x))' + # -qlongdouble for cc taken out on 20010522 cause it + # causes more trouble than it does any good --hmb + d_Gconvert='sprintf((b),"%.*llg",((int)(n)),(x))' ;; 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