X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=hints%2Fsolaris_2.sh;h=856f80103f9df2c193060208b95035a1770de856;hb=ec40c0cdb6bab3514cdc7c4ced1bf6934662e7d2;hp=744b131fadb203e89c7fc898bc6dab8018f1b687;hpb=6ee623d521a149edc6574c512fa951a192cd086a;p=p5sagit%2Fp5-mst-13.2.git diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index 744b131..856f801 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -1,5 +1,5 @@ # hints/solaris_2.sh -# Last modified: Thu Feb 8 11:38:12 EST 1996 +# Last modified: Wed May 27 13:04:45 EDT 1998 # Andy Dougherty # Based on input from lots of folks, especially # Dean Roehrich @@ -53,11 +53,12 @@ esac # Here's another draft of the perl5/solaris/gcc sanity-checker. -case $PATH in -*/usr/ucb*:/usr/bin:*|*/usr/ucb*:/usr/bin) cat <&4 +case `type ${cc:-cc}` in +*/usr/ucb/cc*) cat <&4 NOTE: Some people have reported problems with /usr/ucb/cc. -Remove /usr/ucb from your PATH if you have difficulties. +If you have difficulties, please make sure the directory +containing your C compiler is before /usr/ucb in your PATH. END ;; @@ -95,13 +96,22 @@ END ;; esac +# Use shell built-in 'type' command instead of /usr/bin/which to +# avoid possible csh start-up problems and also to use the same shell +# we'll be using to Configure and make perl. +# The path name is the last field in the output, but the type command +# has an annoying array of possible outputs, e.g.: +# make is hashed (/opt/gnu/bin/make) +# cc is /usr/ucb/cc +# foo not found +# use a command like type make | awk '{print $NF}' | sed 's/[()]//g' # See if make(1) is GNU make(1). # If it is, make sure the setgid bit is not set. make -v > make.vers 2>&1 if grep GNU make.vers > /dev/null 2>&1; then - tmp=`/usr/bin/which make` - case "`/usr/bin/ls -l $tmp`" in + tmp=`type make | awk '{print $NF}' | sed 's/[()]//g'` + case "`/usr/bin/ls -lL $tmp`" in ??????s*) cat <&2 @@ -123,17 +133,17 @@ cat > UU/cc.cbu <<'EOSH' # If the C compiler is gcc: # - check the fixed-includes # - check as(1) and ld(1), they should not be GNU -# (GNU ad and ld 2.8.1 and later are reportedly ok, however.) +# (GNU as and ld 2.8.1 and later are reportedly ok, however.) # If the C compiler is not gcc: # - check as(1) and ld(1), they should not be GNU -# (GNU ad and ld 2.8.1 and later are reportedly ok, however.) +# (GNU as and ld 2.8.1 and later are reportedly ok, however.) # # Watch out in case they have not set $cc. # Get gcc to share its secrets. echo 'main() { return 0; }' > try.c -verbose=`${cc:-cc} -v -o try try.c 2>&1` -rm -f try try.c + # Indent to avoid propagation to config.sh + verbose=`${cc:-cc} -v -o try try.c 2>&1` if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then # @@ -154,27 +164,46 @@ if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then cat <&2 NOTE: You are using GNU as(1). GNU as(1) will not build Perl. -I'm arranging to use /usr/ccs/bin/as by setting including --B/usr/ccs/bin/ in your ${cc:-cc} command. -(Note that the trailing "/" is required.) +I'm arranging to use /usr/ccs/bin/as by including -B/usr/ccs/bin/ +in your ${cc:-cc} command. (Note that the trailing "/" is required.) END cc="${cc:-cc} -B/usr/ccs/bin/" fi # See if ld(1) is GNU ld(1). GNU ld(1) won't work for this job. - if echo "$verbose" | grep ' /usr/ccs/bin/as ' >/dev/null 2>&1; then + # Recompute $verbose since we may have just changed $cc. + verbose=`${cc:-cc} -v -o try try.c 2>&1 | grep ld 2>&1` + if echo "$verbose" | grep ' /usr/ccs/bin/ld ' >/dev/null 2>&1; then : else + # It's not /usr/ccs/bin/ld - but it might be egcs's ld wrapper, + # which calls /usr/ccs/bin/ld in turn. Passing -V to it will + # make it show its true colors. + + myld=`echo $verbose| grep ld | awk '/\/ld/ {print $1}'` + # This assumes that gcc's output will not change, and that + # /full/path/to/ld will be the first word of the output. + + # all Solaris versions of ld I've seen contain the magic + # string used in the grep below. + if $myld -V 2>&1 | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then + cat <&2 + +Aha. You're using egcs and /usr/ccs/bin/ld. + +END + + else cat <&2 -NOTE: You are using GNU as(1). GNU as(1) will not build Perl. -I'm arranging to use /usr/ccs/bin/as by setting including --B/usr/ccs/bin/ in your ${cc:-cc} command. -(Note that the trailing "/" is required.) +NOTE: You are using GNU ld(1). GNU ld(1) will not build Perl. +I'm arranging to use /usr/ccs/bin/ld by including -B/usr/ccs/bin/ +in your ${cc:-cc} command. (Note that the trailing "/" is required.) END cc="${cc:-cc} -B/usr/ccs/bin/" + fi fi else @@ -189,8 +218,8 @@ else cat <&2 NOTE: You are using GNU as(1). GNU as(1) will not build Perl. -You must arrange to use /usr/ccs/bin, perhaps by adding it to the -beginning of your PATH. +You must arrange to use /usr/ccs/bin/as, perhaps by adding /usr/ccs/bin +to the beginning of your PATH. END ;; @@ -207,19 +236,18 @@ END esac if $gnu_ld ; then : else - case `which ld` in - no\ ld\ in*|[Cc]ommand\ not\ found*) - ;; - /*gnu*/ld|/*GNU*/ld) + # Try to guess from path + case `type ld | awk '{print $NF}'` in + *gnu*|*GNU*|*FSF*) gnu_ld=true ;; esac fi if $gnu_ld ; then cat <&2 -NOTE: You are using GNU ld(1). GNU ld(1) will not build Perl. -You must arrange to use /usr/ccs/bin, perhaps by adding it to the -beginning of your PATH. +NOTE: You are apparently using GNU ld(1). GNU ld(1) will not build Perl. +You must arrange to use /usr/ccs/bin/ld, perhaps by adding /usr/ccs/bin +to the beginning of your PATH. END fi @@ -227,6 +255,7 @@ END fi # as --version or ld --version might dump core. +rm -f try try.c rm -f core # XXX @@ -247,12 +276,30 @@ if [ "X$usethreads" = "X$define" ]; then # when linked with the threads library, such that whatever positive value # you pass to siglongjmp(), sigsetjmp() returns 1. # Thanks to Simon Parsons for this report. - if test "`arch`" = i86pc -a "$osvers" = 2.6; then - d_sigaction=$undef + # Sun BugID is 4117946, "sigsetjmp always returns 1 when called by + # siglongjmp in a MT program". As of 19980622, there is no patch + # available. + cat >try.c <<'EOM' + /* Test for sig(set|long)jmp bug. */ + #include + + main() + { + sigjmp_buf env; + int ret; + + ret = sigsetjmp(env, 1); + if (ret) { return ret == 2; } + siglongjmp(env, 2); + } +EOM + if test "`arch`" = i86pc -a "$osvers" = 2.6 \ + && ${cc:-cc} try.c -lpthread >/dev/null 2>&1 && ./a.out; then + d_sigsetjmp=$undef cat << 'EOM' >&2 You will see a *** WHOA THERE!!! *** message from Configure for -d_sigaction. Keep the recommended value. See hints/solaris_2.sh +d_sigsetjmp. Keep the recommended value. See hints/solaris_2.sh for more information. EOM