# 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 <doughera@lafcol.lafayette.edu>
# Based on input from lots of folks, especially
# Dean Roehrich <roehrich@ironwood-fddi.cray.com>
# Here's another draft of the perl5/solaris/gcc sanity-checker.
-case $PATH in
-*/usr/ucb*:/usr/bin:*|*/usr/ucb*:/usr/bin) cat <<END >&4
+case `type ${cc:-cc}` in
+*/usr/ucb/cc*) cat <<END >&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
;;
;;
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 <<END >&2
# 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
#
cat <<END >&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`
+ if echo "$verbose" | grep ' /usr/ccs/bin/ld ' >/dev/null 2>&1; then
:
else
cat <<END >&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/"
cat <<END >&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
;;
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 <<END >&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
fi
# as --version or ld --version might dump core.
+rm -f try try.c
rm -f core
# XXX
# when linked with the threads library, such that whatever positive value
# you pass to siglongjmp(), sigsetjmp() returns 1.
# Thanks to Simon Parsons <S.Parsons@ftel.co.uk> 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 <setjmp.h>
+
+ 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