# Andy Dougherty <doughera@lafcol.lafayette.edu>
# Based on input from lots of folks, especially
# Dean Roehrich <roehrich@ironwood-fddi.cray.com>
+
+# If perl fails tests that involve dynamic loading of extensions, and
+# you are using gcc, be sure that you are NOT using GNU as and ld. One
+# way to do that is to invoke Configure with
+#
+# sh Configure -Dcc='gcc -B/usr/ccs/bin/'
+#
# See man vfork.
usevfork=false
;;
esac
-# Solaris 2.5 has reintroduced some BSD-ish functions into libc.
-# This is no problem unless you compile perl under Solaris 2.5 but
-# try to run the binary on 2.4. Here, we take the easy way out by
-# claiming we don't have these functions. perl.h works around all of
-# these anyway.
-# XXX Eventually, I should fix perl.h to prefer the POSIX versions.
-d_bcmp='undef'
-d_bcopy='undef'
-d_safebcpy='undef'
-d_index='undef'
-
######################################################
# General sanity testing. See below for excerpts from the Solaris FAQ.
# Here's another draft of the perl5/solaris/gcc sanity-checker.
case $PATH in
-*/usr/ucb*:/usr/bin:*|*/usr/ucb*:/usr/bin) cat <<END
+*/usr/ucb*:/usr/bin:*|*/usr/ucb*:/usr/bin) cat <<END >&4
NOTE: Some people have reported problems with /usr/ucb/cc.
Remove /usr/ucb from your PATH if you have difficulties.
case $? in
0) ;;
*)
- cat <<END
+ cat <<END >&4
NOTE: Your system does not have /dev/fd mounted. If you want to
be able to use set-uid scripts you must ask your system administrator
/usr/bin/ls /usr/lib/libucb* >/dev/null 2>&1
case $? in
0)
- cat <<END
+ cat <<END >&4
NOTE: libucb has been found in /usr/lib. libucb should reside in
/usr/ucblib. You may have trouble while building Perl extensions.
tmp=`/usr/bin/which make`
case "`/usr/bin/ls -l $tmp`" in
??????s*)
- cat <<END
+ cat <<END >&2
NOTE: Your PATH points to GNU make, and your GNU make has the set-group-id
bit set. You must either rearrange your PATH to put /usr/ccs/bin before the
fi
rm -f make.vers
+# XXX EXPERIMENTAL A.D. 2/27/1998
+# XXX This script UU/cc.cbu will get 'called-back' by Configure after it
+# XXX has prompted the user for the C compiler to use.
+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.)
# 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.)
#
# Watch out in case they have not set $cc.
-case "`${cc:-cc} -v 2>&1`" in
-*gcc*)
+
+# 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
+
+if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then
#
# Using gcc.
#
#echo Using gcc
- # 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
tmp=`echo "$verbose" | grep '^Reading' |
awk '{print $NF}' | sed 's/specs$/include/'`
# Doesn't work anymore for gcc-2.7.2.
# See if as(1) is GNU as(1). GNU as(1) won't work for this job.
- case $verbose in
- */usr/ccs/bin/as*) ;;
- *)
- cat <<END
+ if echo "$verbose" | grep ' /usr/ccs/bin/as ' >/dev/null 2>&1; then
+ :
+ else
+ 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/as, perhaps by setting
-GCC_EXEC_PREFIX or by including -B/usr/ccs/bin/ in your cc command.
+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.)
END
- ;;
- esac
+ 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.
- case $verbose in
- */usr/ccs/bin/ld*) ;;
- *)
- cat <<END
+ if echo "$verbose" | grep ' /usr/ccs/bin/as ' >/dev/null 2>&1; then
+ :
+ else
+ 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/ld, perhaps by setting
-GCC_EXEC_PREFIX or by including -B/usr/ccs/bin/ in your cc command.
+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.)
END
- ;;
- esac
+ cc="${cc:-cc} -B/usr/ccs/bin/"
+ fi
- ;; #using gcc
-*)
+else
#
# Not using gcc.
#
# See if as(1) is GNU as(1). GNU as(1) won't work for this job.
case `as --version < /dev/null 2>&1` in
*GNU*)
- cat <<END
+ 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
esac
# See if ld(1) is GNU ld(1). GNU ld(1) won't work for this job.
+ # ld --version doesn't properly report itself as a GNU tool,
+ # as of ld version 2.6, so we need to be more strict. TWP 9/5/96
+ gnu_ld=false
case `ld --version < /dev/null 2>&1` in
- *GNU*)
- cat <<END
+ *GNU*|ld\ version\ 2*)
+ gnu_ld=true ;;
+ *) ;;
+ esac
+ if $gnu_ld ; then :
+ else
+ case `which ld` in
+ no\ ld\ in*|[Cc]ommand\ not\ found*)
+ ;;
+ /*gnu*/ld|/*GNU*/ld)
+ 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
+beginning of your PATH.
END
- ;;
- esac
+ fi
- ;; #not using gcc
-esac
+fi
# as --version or ld --version might dump core.
rm -f core
+# XXX
+EOSH
+
+if [ "X$usethreads" = "X$define" ]; then
+ ccflags="-D_REENTRANT $ccflags"
+ # -lpthread needs to come before -lc but after other libraries such
+ # as -lgdbm and such like. We assume here that -lc is present in
+ # libswanted. If that fails to be true in future, then this can be
+ # changed to add pthread to the very end of libswanted.
+ # sched_yield is in -lposix4
+ set `echo X "$libswanted "| sed -e 's/ c / posix4 pthread c /'`
+ shift
+ libswanted="$*"
+
+ # On Solaris 2.6 x86 there is a bug with sigsetjmp() and siglongjmp()
+ # 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
+ cat << 'EOM' >&2
+
+You will see a *** WHOA THERE!!! *** message from Configure for
+d_sigaction. Keep the recommended value. See hints/solaris_2.sh
+for more information.
+
+EOM
+ fi
+fi
+
# This is just a trick to include some useful notes.
cat > /dev/null <<'End_of_Solaris_Notes'