diff options
author | David R. Favor <dfavor@austin.ibm.com> | 1999-04-28 03:45:28 -0500 |
---|---|---|
committer | Gurusamy Sarathy <gsar@cpan.org> | 1999-05-10 08:04:14 +0000 |
commit | bbc711f90ce9892bd87879f2349f97d5af48573c (patch) | |
tree | 70a7223d203caaf89a6d4beb46d52a818304814c /hints | |
parent | 56eca212f2b30bfbbee425e020ba96a43f99cca5 (diff) | |
download | perl-bbc711f90ce9892bd87879f2349f97d5af48573c.tar.gz |
AIX hints enhancements (threads build, SOCKS support)
Message-ID: <372710F8.B1F73BEB@austin.ibm.com>
Subject: Working build for AIX + gcc + threading
p4raw-id: //depot/perl@3360
Diffstat (limited to 'hints')
-rw-r--r-- | hints/aix.sh | 163 |
1 files changed, 137 insertions, 26 deletions
diff --git a/hints/aix.sh b/hints/aix.sh index 7b111ffc5f..d5ce75529d 100644 --- a/hints/aix.sh +++ b/hints/aix.sh @@ -6,6 +6,32 @@ # Merged on Mon Feb 6 10:22:35 EST 1995 by # Andy Dougherty <doughera@lafcol.lafayette.edu> +# +# Contact dfavor@corridor.com for any of the following: +# +# - AIX 43x and above support +# - gcc + threads support +# - socks support +# +# Apr 99 changes: +# +# - use nm in AIX 43x and above +# - gcc + threads now builds +# - added support for socks, when Dccflags=-DSOCKS specified +# +# Notes: +# +# - shared libperl support is tricky. if ever libperl.a ends up +# in /usr/local/lib/* it can override any subsequent builds of +# that same perl release. to make sure you know where the shared +# libperl.a is coming from do a 'dump -Hv perl' and check all the +# library search paths in the loader header. +# +# it would be nice to warn the user if a libperl.a exists that is +# going to override the current build, but that would be complex. +# +# better yet, a solid fix for this situation should be developed. +# # Configure finds setrgid and setruid, but they're useless. The man # pages state: @@ -15,19 +41,28 @@ d_setrgid='undef' d_setruid='undef' -# Neither do these functions work like Perl expects them to. -d_setregid='undef' -d_setreuid='undef' - alignbytes=8 -# Intuiting the existence of system calls under AIX is difficult, at best; -# the safest (and slowest...) technique is to find them empirically. -usenm='undef' +usemymalloc='n' + +# Intuiting the existence of system calls under AIX is difficult, +# at best; the safest technique is to find them empirically. + +# AIX 4.3.* and above default to using nm for symbol extraction +case "$osvers" in + 3.*|4.1.*|4.2.*) + usenm='undef' + ;; + *) + usenm='true' + ;; +esac so="a" dlext="so" +# Trying to set this breaks the POSIX.c compilation + # Make setsockopt work correctly. See man page. # ccflags='-D_BSD=44' @@ -50,13 +85,17 @@ case "$osvers" in ;; esac +# These functions don't work like Perl expects them to. +d_setregid='undef' +d_setreuid='undef' + # Changes for dynamic linking by Wayne Scott <wscott@ichips.intel.com> # # Tell perl which symbols to export for dynamic linking. case "$cc" in -*gcc*) ccdlflags="$ccdlflags -Xlinker" ;; +*gcc*) ccdlflags='-Xlinker -bE:perl.exp' ;; +*) ccdlflags='-bE:perl.exp' ;; esac -ccdlflags="$ccdlflags -bE:perl.exp" # The first 3 options would not be needed if dynamic libs. could be linked # with the compiler instead of ld. @@ -65,13 +104,84 @@ ccdlflags="$ccdlflags -bE:perl.exp" # symbol: boot_$(EXP) can it be auto-generated? case "$osvers" in 3*) - lddlflags="$lddlflags -H512 -T512 -bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -e _nostart -lc" + lddlflags='-H512 -T512 -bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -e _nostart' ;; *) - lddlflags="$lddlflags -bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -b noentry -lc" + lddlflags='-bhalt:4 -bM:SRE -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -b noentry' ;; esac +# +# if $ccflags contains -DSOCKS, then add socks library support. +# +# SOCKS support also requires each source module with socket support +# add the following lines directly after the #include <socket.h>: +# +# #ifdef SOCKS +# #include <socks.h> +# #endif +# +# It is expected that libsocks.a resides in /usr/local/lib and that +# socks.h resides in /usr/local/include. If these files live some +# different place then modify +# + +for arg in $ccflags ; do + + if [ "$arg" = "-DSOCKS" ] ; then + + sockslib=socks5 + incpath=/usr/local/include + libpath=/usr/local/lib + + echo >&4 "SOCKS using $incpath/socks.h and $libpath/lib${sockslib}.a" + echo >&4 "SOCKS requires source modifications. #include <socket.h> must change to:" + echo >&4 + echo >&4 " #include <socket.h>" + echo >&4 " #ifdef SOCKS" + echo >&4 " #include <socks.h>" + echo >&4 " #endif" + echo >&4 + echo >&4 "in some or all of the following files:" + echo >&4 + + for arg in `find . \( -name '*.c' -o -name '*.xs' -o -name '*.h' \) \ + -exec egrep -l '#.*include.*socket\.h' {} \; | \ + egrep -v "win32|vms|t/lib|Socket.c` ; do + echo >&4 " $arg" + done + + echo >&4 + + lddlflags="$lddlflags -l$sockslib" + + # setting $libs here breaks the optional libraries search + # for some reason, so use $libswanted instead + #libs="$libs -lsocks5" + + libswanted="$libswanted $sockslib" + + # + # path for include file + # + + locincpth="$locincpath /usr/local/include" + + # + # path for library not needed, if in /usr/local/lib as that + # directory is already searched. + # + + #loclibpth="$loclibpath /usr/local/lib" + + break + + fi + +done + +lddllibc="-lc" + # This script UU/usethreads.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use threads. cat > UU/usethreads.cbu <<'EOCBU' @@ -79,17 +189,21 @@ case "$usethreads" in $define|true|[yY]*) ccflags="$ccflags -DNEED_PTHREAD_INIT" case "$cc" in - xlc_r) ;; - cc) - echo >&4 "Switching cc to xlc_r because of POSIX threads." - cc=xlc_r + gcc) ;; + cc_r) ;; + cc|xlc_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) + # --jhi@iki.fi + cc=cc_r ;; - '' | cc_r) - cc=xlc_r + '') + cc=cc_r ;; *) cat >&4 <<EOM -For pthreads you should use the AIX C compiler xlc_r. +For pthreads you should use the AIX C compiler cc_r. (now your compiler was '$cc') Cannot continue, aborting. EOM @@ -99,20 +213,17 @@ EOM # Add the POSIX threads library and the re-entrant libc. - lddlflags=`echo $lddlflags | sed 's/ -lc$/ -lpthreads -lc_r -lc/'` + lddllibc="-lpthreads -lc_r" # Add the c_r library to the list of wanted libraries. # Make sure the c_r library is before the c library or # make will fail. - set `echo X "$libswanted "| sed -e 's/ c / c_r c /'` + set `echo X "$libswanted "| sed -e 's/ c / pthreads c_r /'` shift libswanted="$*" - - # Perl's malloc doesn't survive threaded AIX. - case "$usemymalloc" in - '') usemymalloc='n' ;; - esac - ;; esac + +lddlflags="$lddlflags $lddllibc" + EOCBU |