Michael van der Westhuizen wrote:
Aplogies for replying to my own mail.
On 7/7/07, Michael van der Westhuizen <[EMAIL PROTECTED]> wrote:
Hi,
[snip]
Note that on Solaris CXXFLAGS.wide is supposed to be -xarch=amd64, but
this is not being used by the build system.
Hunting this down, it seems that sunpro.config expects "uname -p" to
return amd64 on 64 bit Solaris/Intel. This is not true, it returns
i386.
I don't have access to Solaris/AMD64 at the moment but from our logs
uname -a does include i386 and not amd64. I wonder what made us think
it was amd64.
Here's a better diff. This handles the correct wide flags when using
Sun C++ 5.9 or better (Studio 12).
Thanks!
I recall reading somewhere that Sun C++ 5.9 supports the gcc -m64
option but I can't find the reference. Do you happen to have a link?
The x86 equivalent I was able to find in the online documentation is
still -xarch=amd64 (I couldn't find -m64 in the manual):
http://docs.sun.com/source/819-3690/Comp_Options_App.html#pgfId-999544
We're only just getting around to setting up the compiler but once it's
up and running we'll test your patch with it.
Martin
PS I think I've figured out why I couldn't find -m64 on the Compiler
Options pages: they are for Sun Studio 11, even though they're pointed
to from the Sun Studio 12 Documentation page here:
http://developers.sun.com/sunstudio/documentation/ss12/
--> http://developers.sun.com/sunstudio/documentation/ss12/opts
Michael
Index: etc/config/sunpro.config
===================================================================
--- etc/config/sunpro.config (revision 554241)
+++ etc/config/sunpro.config (working copy)
@@ -77,21 +77,32 @@
SINGL_CPPFLAGS =
SINGL_LDFLAGS =
-# (try to) determine the architecture via the (non-standard) -p option
-# recognized on (at least) Linux and Solaris
-arch=$(shell uname -p 2>/dev/null)
+CCMAJOR=$(shell echo $(CCVER) | cut -f1 -d'.')
+CCMINOR=$(shell echo $(CCVER) | cut -f2 -d'.')
-ifeq ($(arch),sparc)
- # wide (64-bit) flags -- must be set explicitly
- # narrow (32-bit) flags are implicit on SPARC
- wide_flags = -xarch=v9
- narrow_flags = -xarch=v8
+ifeq ($(shell expr $(CCMAJOR) \>= 5 \& $(CCMINOR) \>= 9),1)
+ wide_flags = -m64
+ narrow_flags = -m32
else
- # wide (64-bit) flags -- must be set explicitly
- # narrow (32-bit) flags are implicit on AMD64
- ifeq ($(arch),amd64)
- wide_flags = -xarch=amd64
- narrow_flags =
+ # (try to) determine the architecture via the (non-standard) -p option
+ # recognized on (at least) Linux and Solaris
+ arch=$(shell uname -p 2>/dev/null)
+
+ ifeq ($(arch),sparc)
+ # wide (64-bit) flags -- must be set explicitly
+ # narrow (32-bit) flags are implicit on SPARC
+ wide_flags = -xarch=v9
+ narrow_flags = -xarch=v8
+ else
+ # wide (64-bit) flags -- must be set explicitly
+ # narrow (32-bit) flags are implicit on AMD64
+ ifeq ($(OSNAME),SunOS)
+ arch=$(shell /usr/bin/optisa amd64)
+ endif
+ ifeq ($(arch),amd64)
+ wide_flags = -xarch=amd64
+ narrow_flags =
+ endif
endif
endif