diff options
author | Chip Salzenberg <chip@pobox.com> | 1999-04-27 13:16:07 +0000 |
---|---|---|
committer | Todd Rinaldo <toddr@cpanel.net> | 2019-10-19 07:03:09 -0500 |
commit | 358930170b1ad31bc3c6c7d476adbd75811527fa (patch) | |
tree | 1801a42ebdb409d5b727e9fc7b4a88f35dabca9b | |
parent | bcbebcb7816dd63681c68429ecf21a0698afc0d0 (diff) | |
download | perl-358930170b1ad31bc3c6c7d476adbd75811527fa.tar.gz |
Update Solaris 2.x hints.
(from Andy Dougherty <doughera@lafayette.edu>)
p4raw-id: //depot/maint-5.004/perl@3286
-rw-r--r-- | hints/solaris_2.sh | 93 |
1 files changed, 68 insertions, 25 deletions
diff --git a/hints/solaris_2.sh b/hints/solaris_2.sh index bbc4f1f569..cfa71b08fa 100644 --- a/hints/solaris_2.sh +++ b/hints/solaris_2.sh @@ -1,6 +1,6 @@ # hints/solaris_2.sh -# Last modified: Wed May 27 13:04:45 EDT 1998 -# Andy Dougherty <doughera@lafcol.lafayette.edu> +# Last modified: Tue Apr 13 13:12:49 EDT 1999 +# Andy Dougherty <doughera@lafayette.edu> # Based on input from lots of folks, especially # Dean Roehrich <roehrich@ironwood-fddi.cray.com> @@ -9,8 +9,11 @@ # way to do that is to invoke Configure with # # sh Configure -Dcc='gcc -B/usr/ccs/bin/' -# - +# +# (Note that the trailing slash is *required*.) +# gcc will occasionally emit warnings about "unused prefix", but +# these ought to be harmless. See below for more details. + # See man vfork. usevfork=false @@ -33,10 +36,10 @@ libswanted="$*" case "$archname" in '') if test -f /usr/bin/arch; then - archname=`/usr/bin/arch` + archname=`/usr/bin/arch` archname="${archname}-${osname}" elif test -f /usr/ucb/arch; then - archname=`/usr/ucb/arch` + archname=`/usr/ucb/arch` archname="${archname}-${osname}" fi ;; @@ -136,6 +139,19 @@ rm -f make.vers # # Watch out in case they have not set $cc. +# Perl compiled with some combinations of GNU as and ld may not +# be able to perform dynamic loading of extensions. If you have a +# problem with dynamic loading, be sure that you are using the Solaris +# /usr/ccs/bin/as and /usr/ccs/bin/ld. You can do that with +# sh Configure -Dcc='gcc -B/usr/ccs/bin/' +# (note the trailing slash is required). +# Combinations that are known to work with the following hints: +# +# gcc-2.7.2, GNU as 2.7, GNU ld 2.7 +# egcs-1.0.3, GNU as 2.9.1 and GNU ld 2.9.1 +# --Andy Dougherty <doughera@lafayette.edu> +# Tue Apr 13 17:19:43 EDT 1999 + # Get gcc to share its secrets. echo 'main() { return 0; }' > try.c # Indent to avoid propagation to config.sh @@ -145,7 +161,6 @@ if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then # # Using gcc. # - #echo Using gcc tmp=`echo "$verbose" | grep '^Reading' | awk '{print $NF}' | sed 's/specs$/include/'` @@ -153,48 +168,76 @@ if echo "$verbose" | grep '^Reading specs from' >/dev/null 2>&1; then # Determine if the fixed-includes look like they'll work. # 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. + # See if as(1) is GNU as(1). GNU as(1) might not work for this job. 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. -I'm arranging to use /usr/ccs/bin/as by including -B/usr/ccs/bin/ +NOTE: You are using GNU as(1). GNU as(1) might not build Perl. If you +have trouble, you can 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/" + # Apparently not needed, at least for as 2.7 and later. + # 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. + # See if ld(1) is GNU ld(1). GNU ld(1) might not work for this job. # Recompute $verbose since we may have just changed $cc. - verbose=`${cc:-cc} -v -o try try.c 2>&1` + 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 - : + # Ok, gcc directly calls the Solaris /usr/ccs/bin/ld. + : + elif echo "$verbose" | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then + # Hmm. gcc doesn't call /usr/ccs/bin/ld directly, but it + # does appear to be using it eventually. egcs-1.0.3's ld + # wrapper does this. + # All Solaris versions of ld I've seen contain the magic + # string used in the grep. + : else - cat <<END >&2 - -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/ + # No evidence yet of /usr/ccs/bin/ld. Some versions + # of egcs's ld wrapper call /usr/ccs/bin/ld in turn but + # apparently don't reveal that unless you pass in -V. + # (This may all depend on local configurations too.) + + 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. + # Thus myld is something like opt/gnu/sparc-sun-solaris2.5/bin/ld + + if $myld -V 2>&1 | grep "ld: Software Generation Utilities" >/dev/null 2>&1; then + # Ok, /usr/ccs/bin/ld eventually does get called. + : + else + cat <<END >&2 + +NOTE: You are using GNU ld(1). GNU ld(1) might not build Perl. If you +have trouble, you can use /usr/ccs/bin/ld by including -B/usr/ccs/bin/ in your ${cc:-cc} command. (Note that the trailing "/" is required.) +I will try to use GNU ld by passing in the -Wl,-E flag, but if that +doesn't work, you should use -B/usr/ccs/bin/ instead. + END - cc="${cc:-cc} -B/usr/ccs/bin/" + ccdlflags="$ccdlflags -Wl,-E" + lddlflags="$lddlflags -W,l-E -G" + fi fi else # # Not using gcc. # - #echo Not using gcc - # See if as(1) is GNU as(1). GNU as(1) won't work for this job. + # See if as(1) is GNU as(1). GNU might not work for this job. case `as --version < /dev/null 2>&1` in *GNU*) cat <<END >&2 -NOTE: You are using GNU as(1). GNU as(1) will not build Perl. +NOTE: You are using GNU as(1). GNU as(1) might not build Perl. You must arrange to use /usr/ccs/bin/as, perhaps by adding /usr/ccs/bin to the beginning of your PATH. @@ -202,7 +245,7 @@ END ;; esac - # See if ld(1) is GNU ld(1). GNU ld(1) won't work for this job. + # See if ld(1) is GNU ld(1). GNU ld(1) might not 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 @@ -222,8 +265,8 @@ END if $gnu_ld ; then cat <<END >&2 -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 +NOTE: You are apparently using GNU ld(1). GNU ld(1) might not build Perl. +You should arrange to use /usr/ccs/bin/ld, perhaps by adding /usr/ccs/bin to the beginning of your PATH. END |