X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fsolaris_2.sh;h=6809d4cdf957e1d78a4770d7d5fe059add8d095b;hb=c4eb81271d38690def0c149c253ee8dc4015bfca;hp=2599fe1ca6db6d92a29d2caf006c1d2942afb9a0;hpb=9b119d5a443153d58c9d4caad4b23fab7c13227e;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index 2599fe1..6809d4c 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -45,15 +45,50 @@ case "$archname" in ;; esac +test -z "`${cc:-cc} -V 2>&1|grep -i workshop`" || ccname=workshop + +cat >UU/workshoplibpth.cbu<<'EOCBU' +case "$workshoplibpth_done" in +'') case "$use64bitall" in + "$define"|true|[yY]*) + loclibpth="$loclibpth /usr/lib/sparcv9" + if test -n "$workshoplibs"; then + loclibpth=`echo $loclibpth | sed -e "s% $workshoplibs%%" ` + for lib in $workshoplibs; do + # Logically, it should be sparcv9. + # But the reality fights back, it's v9. + loclibpth="$loclibpth $lib/sparcv9 $lib/v9" + done + fi + ;; + *) loclibpth="$loclibpth $workshoplibs" + ;; + esac + workshoplibpth_done="$define" + ;; +esac +EOCBU + +case "$ccname" in +workshop) + cat >try.c < +int main() { return(0); } +EOF + workshoplibs=`cc -### try.c -lsunmath -o try 2>&1|grep " -Y "|sed 's%.* -Y "P,\(.*\)".*%\1%'|tr ':' '\n'|grep '/SUNWspro/'` + . ./UU/workshoplibpth.cbu + ;; +esac + ###################################################### # General sanity testing. See below for excerpts from the Solaris FAQ. - +# # From roehrich@ironwood-fddi.cray.com Wed Sep 27 12:51:46 1995 # Date: Thu, 7 Sep 1995 16:31:40 -0500 # From: Dean Roehrich # To: perl5-porters@africa.nicoh.com # Subject: Re: On perl5/solaris/gcc - +# # Here's another draft of the perl5/solaris/gcc sanity-checker. case `type ${cc:-cc}` in @@ -292,8 +327,12 @@ case "$usethreads" in $define|true|[yY]*) ccflags="-D_REENTRANT $ccflags" - # sched_yield is in -lposix4 - set `echo X "$libswanted "| sed -e 's/ c / posix4 pthread c /'` + # sched_yield is in -lposix4 up to Solaris 2.6, in -lrt starting with Solaris 7 + case `uname -r` in + 5.[0-6] | 5.5.1) sched_yield_lib="posix4" ;; + *) sched_yield_lib="rt"; + esac + set `echo X "$libswanted "| sed -e "s/ c / $sched_yield_lib pthread c /"` shift libswanted="$*" @@ -318,7 +357,7 @@ $define|true|[yY]*) siglongjmp(env, 2); } EOM - if test "`arch`" = i86pc -a "$osvers" = 2.6 && \ + if test "`arch`" = i86pc -a `uname -r` = 5.6 && \ ${cc:-cc} try.c -lpthread >/dev/null 2>&1 && ./a.out; then d_sigsetjmp=$undef cat << 'EOM' >&2 @@ -338,60 +377,67 @@ cat > UU/uselargefiles.cbu <<'EOCBU' # after it has prompted the user for whether to use large files. case "$uselargefiles" in ''|$define|true|[yY]*) - ccflags="$ccflags `getconf LFS_CFLAGS 2>/dev/null`" - ldflags="$ldflags `getconf LFS_LDFLAGS 2>/dev/null`" - libswanted="$libswanted `getconf LFS_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + +# Keep these in the left margin. +ccflags_uselargefiles="`getconf LFS_CFLAGS 2>/dev/null`" +ldflags_uselargefiles="`getconf LFS_LDFLAGS 2>/dev/null`" +libswanted_uselargefiles="`getconf LFS_LIBS 2>/dev/null|sed -e 's@^-l@@' -e 's@ -l@ @g`" + + ccflags="$ccflags $ccflags_uselargefiles" + ldflags="$ldflags $ldflags_uselargefiles" + libswanted="$libswanted $libswanted_uselargefiles" ;; esac EOCBU -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 +# This is truly a mess. +case "$usemorebits" in "$define"|true|[yY]*) + use64bitint="$define" + uselongdouble="$define" + ;; +esac + +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-$use64bitall_done" in +"$define-"|true-|[yY]*-) case "`uname -r`" in - 2.[1-6]) + 5.[1-6]) cat >&4 < 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]*) libc='/usr/lib/sparcv9/libc.so' if test ! -f $libc; then cat >&4 </dev/null" in *gcc*) echo 'main() { return 0; }' > try.c - if ${cc:-cc} -mcpu=v9 -m64 -S try.c 2>&1 | grep -e \ - '-m64 is not supported by this configuration'; then + case "`${cc:-cc} -mcpu=v9 -m64 -S try.c 2>&1 | grep 'm64 is not supported by this configuration'`" in + *"m64 is not supported"*) cat >&4 </dev/null` != X; then ccflags="$ccflags -Wa,`getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`" @@ -407,19 +453,19 @@ EOM ccflags="$ccflags `getconf XBS5_LP64_OFF64_CFLAGS 2>/dev/null`" ldflags="$ldflags `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`" lddlflags="$lddlflags -G `getconf XBS5_LP64_OFF64_LDFLAGS 2>/dev/null`" - test -d /opt/SUNWspro/lib && loclibpth="$loclibpth /opt/SUNWspro/lib" ;; esac libscheck='case "`/usr/bin/file $xxx`" in *64-bit*|*SPARCV9*) ;; *) xxx=/no/64-bit$xxx ;; esac' + use64bitall_done=yes ;; esac EOCBU # Actually, we want to run this already now, if so requested, -# because we need to fix up the flags right now. +# because we need to fix up things right now. case "$use64bitall" in "$define"|true|[yY]*) . ./UU/use64bitall.cbu @@ -429,23 +475,37 @@ esac cat > UU/uselongdouble.cbu <<'EOCBU' # This script UU/uselongdouble.cbu will get 'called-back' by Configure # after it has prompted the user for whether to use long doubles. -case "$uselongdouble" in -"$define"|true|[yY]*) - if test ! -f /opt/SUNWspro/lib/libsunmath.so; then - cat <&4 < /dev/null <<'End_of_Solaris_Notes'