diff options
author | Jarkko Hietaniemi <jhi@iki.fi> | 2000-02-29 01:17:07 +0000 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2000-02-29 01:17:07 +0000 |
commit | a3489f112e627d5729974d69f2b9f825769e52b7 (patch) | |
tree | 25e4cada31c26f22d9e2c5b1d0f680f5ab8461c8 /hints/irix_6.sh | |
parent | a1b03cdf5fd9c17a8d3b7362d2f343d59f5a43c5 (diff) | |
download | perl-a3489f112e627d5729974d69f2b9f825769e52b7.tar.gz |
IRIX 64-bitness fixes.
p4raw-id: //depot/cfgperl@5338
Diffstat (limited to 'hints/irix_6.sh')
-rw-r--r-- | hints/irix_6.sh | 195 |
1 files changed, 107 insertions, 88 deletions
diff --git a/hints/irix_6.sh b/hints/irix_6.sh index 9aec56b8c9..d14ac93af6 100644 --- a/hints/irix_6.sh +++ b/hints/irix_6.sh @@ -35,11 +35,40 @@ # Let's assume we want to use 'cc -n32' by default, unless the # necessary libm is missing (which has happened at least twice) case "$cc" in -'') - if test -f /usr/lib32/libm.so - then - cc='cc -n32' - fi ;; +'') case "$use64bitall" in + "$define"|true|[yY]*) test -f /usr/lib64/libm.so && cc='cc -64' ;; + *) test -f /usr/lib32/libm.so && cc='cc -n32' ;; + esac +esac + +case "$use64bitint" in +$define|true|[yY]*) + case "`uname -r`" in + [1-5]*|6.[01]) + cat >&4 <<EOM +IRIX `uname -r` does not support 64-bit types. +You should upgrade to at least IRIX 6.2. +Cannot continue, aborting. +EOM + exit 1 + ;; + esac + ;; +esac + +case "$use64bitall" in +"$define"|true|[yY]*) + case "`uname -s`" in + IRIX) + cat >&4 <<EOM +You cannot use -Duse64bitall in 32-bit IRIX, sorry. + +Cannot continue, aborting. +EOM + exit 1 + ;; + esac + ;; esac # Check for which compiler we're using @@ -52,6 +81,72 @@ case "$cc" in *) xxx=/no/n32$xxx ;; esac' + # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker + ldflags=' -L/usr/local/lib32 -L/usr/local/lib' + cccdlflags=' ' + # From: David Billinghurst <David.Billinghurst@riotinto.com.au> + # If you get complaints about so_locations then change the following + # line to something like: + # lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations" + lddlflags="-n32 -shared" + libc='/usr/lib32/libc.so' + plibpth='/usr/lib32 /lib32 /usr/ccs/lib' + ;; +*"cc -64") + + loclibpth="$loclibpth /usr/lib64" + libscheck='case "`/usr/bin/file $xxx`" in +*64-bit*) ;; +*) xxx=/no/64-bit$xxx ;; +esac' + # NOTE: -L/usr/lib64 -L/lib64 are automatically selected by the linker + ldflags=' -L/usr/local/lib64 -L/usr/local/lib' + cccdlflags=' ' + # From: David Billinghurst <David.Billinghurst@riotinto.com.au> + # If you get complaints about so_locations then change the following + # line to something like: + # lddlflags="-64 -shared -check_registry /usr/lib64/so_locations" + lddlflags="-64 -shared" + libc='/usr/lib64/libc.so' + plibpth='/usr/lib64 /lib64 /usr/ccs/lib' + ;; +*gcc*) + ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE" + optimize="-O3" + usenm='undef' + case "`uname -s`" in + # Without the -mabi=64 gcc in 64-bit IRIX has problems passing + # and returning small structures. This affects inet_*() and semctl(). + # See http://reality.sgi.com/ariel/freeware/gcc-2.8.1-notes.html + # for more information. Reported by Lionel Cons <lionel.cons@cern.ch>. + IRIX64) ccflags="$ccflags -mabi=64" + ldflags="$ldflags -mabi=64 -L/usr/lib64" + lddlflags="$lddlflags -mabi=64" + ;; + *) ccflags="$ccflags -DIRIX32_SEMUN_BROKEN_BY_GCC" + ;; + esac + ;; +*) + # this is needed to force the old-32 paths + # since the system default can be changed. + ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100" + optimize='-O' + ;; +esac + +# Settings common to both native compiler modes. +case "$cc" in +*"cc -n32"|*"cc -64") + ld=$cc + + # perl's malloc can return improperly aligned buffer + # usemymalloc='undef' +malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' + + nm_opt='-p' + nm_so_opt='-p' + # Perl 5.004_57 introduced new qsort code into pp_ctl.c that # makes IRIX cc prior to 7.2.1 to emit bad code. # so some serious hackery follows to set pp_ctl flags correctly. @@ -96,54 +191,15 @@ pp_ctl_cflags='optimize=-O' # absolute paths (again, see the pthread.h change below). # -- krishna@sgi.com, 8/23/98 -if [ "X${TOOLROOT}" != "X" ]; then -# we cant set cppflags because it gets overwritten -# we dont actually need $TOOLROOT/usr/include on the cc line cuz the -# modules functionality already includes it but -# XXX - how do I change cppflags in the hints file? - ccflags="$ccflags -I${TOOLROOT}/usr/include" + if [ "X${TOOLROOT}" != "X" ]; then + # we cant set cppflags because it gets overwritten + # we dont actually need $TOOLROOT/usr/include on the cc line cuz the + # modules functionality already includes it but + # XXX - how do I change cppflags in the hints file? + ccflags="$ccflags -I${TOOLROOT}/usr/include" usrinc="${TOOLROOT}/usr/include" -fi + fi - ld=$cc - # perl's malloc can return improperly aligned buffer - # usemymalloc='undef' -malloc_cflags='ccflags="-DSTRICT_ALIGNMENT $ccflags"' - # NOTE: -L/usr/lib32 -L/lib32 are automatically selected by the linker - ldflags=' -L/usr/local/lib32 -L/usr/local/lib' - cccdlflags=' ' - # From: David Billinghurst <David.Billinghurst@riotinto.com.au> - # If you get complaints about so_locations then change the following - # line to something like: - # lddlflags="-n32 -shared -check_registry /usr/lib32/so_locations" - lddlflags="-n32 -shared" - libc='/usr/lib32/libc.so' - plibpth='/usr/lib32 /lib32 /usr/ccs/lib' - nm_opt='-p' - nm_so_opt='-p' - ;; -*gcc*) - ccflags="$ccflags -D_BSD_TYPES -D_BSD_TIME -D_POSIX_C_SOURCE" - optimize="-O3" - usenm='undef' - case "`uname -s`" in - # Without the -mabi=64 gcc in 64-bit IRIX has problems passing - # and returning small structures. This affects inet_*() and semctl(). - # See http://reality.sgi.com/ariel/freeware/gcc-2.8.1-notes.html - # for more information. Reported by Lionel Cons <lionel.cons@cern.ch>. - IRIX64) ccflags="$ccflags -mabi=64" - ldflags="$ldflags -mabi=64 -L/usr/lib64" - lddlflags="$lddlflags -mabi=64" - ;; - *) ccflags="$ccflags -DIRIX32_SEMUN_BROKEN_BY_GCC" - ;; - esac - ;; -*) - # this is needed to force the old-32 paths - # since the system default can be changed. - ccflags="$ccflags -32 -D_BSD_TYPES -D_BSD_TIME -Olimit 3100" - optimize='-O' ;; esac @@ -238,40 +294,3 @@ EOCBU # The -n32 makes off_t to be 8 bytes, so we should have largefileness. -cat > UU/use64bitint.cbu <<'EOCBU' -# This script UU/use64bitint.cbu will get 'called-back' by Configure -# after it has prompted the user for whether to use 64 bit integers. -case "$use64bitint" in -$define|true|[yY]*) - case "`uname -r`" in - [1-5]*|6.[01]) - cat >&4 <<EOM -IRIX `uname -r` does not support 64-bit types. -You should upgrade to at least IRIX 6.2. -Cannot continue, aborting. -EOM - exit 1 - ;; - esac - ;; -esac -EOCBU - -cat > UU/use64bitall.cbu <<'EOCBU' -# This script UU/use64bitall.cbu will get 'called-back' by Configure -# after it has prompted the user for whether to be maximally 64-bitty. -case "$use64bitall" in -$define|true|[yY]*) - ccflags="`echo $ccflags|sed -e 's%-n32%%'` -64" - ldflags="`echo $ldflags|sed -e 's%-n32%%'` -64" - lddlflags="`echo $lddlflags|sed -e 's%-n32%%'` -64" - loclibpth="$loclibpth /usr/lib64" - libscheck='case "`file $xxx`" in -*64-bit*) ;; -*) xxx=/no/64-bit$xxx ;; -esac' - ;; -esac -EOCBU - - |