# 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>
# 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
#
# 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
#
# Using gcc.
#
- #echo Using gcc
tmp=`echo "$verbose" | grep '^Reading' |
awk '{print $NF}' | sed 's/specs$/include/'`
# 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 | 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
- # 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.
+ # 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.
-
- # 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 <<END >&2
-
-Aha. You're using egcs and /usr/ccs/bin/ld.
-
-END
-
- else
- cat <<END >&2
+ # 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) will not build Perl.
-I'm arranging to use /usr/ccs/bin/ld by including -B/usr/ccs/bin/
+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/"
- fi
+ 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.
;;
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
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