--- Make.rules.SunOS Mon Oct 25 18:25:12 2004 +++ Make.rules.SunOS.new Wed Feb 2 10:33:21 2005 @@ -11,49 +11,70 @@ # This file is included by Make.rules when uname is SunOS. # -CXX := CC +ifeq ($(CXX),) + CXX := CC + CCVERSION := $(filter 5.%, $(shell CC -V 2>&1)) -# -# Which version of CC are we using? -# -CCVERSION := $(filter 5.%, $(shell CC -V 2>&1)) + ifeq ($(LP64),yes) + CXXARCHFLAGS := -xarch=v9 + endif -ifeq ($(LP64),yes) - CXXARCHFLAGS := -xarch=v9 + ifeq ($(CCVERSION),5.3) + FLEX_NOLINE := yes + BISON_NOLINE := yes + TEMPLATE_REPOSITORY := SunWS_cache + else + ifeq ($(CCVERSION),5.4) + CXXWARNFLAGS := +w + TEMPLATE_REPOSITORY := SunWS_cache + else + # + # Assumes >= 5.5 + # + # -erroff=hidef is a (bad) work-around for + # for Sun CC 5.5 bug #4852754 + # + CXXWARNFLAGS := +w -erroff=hidef + CXXSCOPEFLAGS := -xldscope=hidden + endif + endif + # + # -features=tmplife is needed to destroy temporary objects immediately + # (as specified by ISO C++) instead of at the end of the current block. + # This is very useful to avoid deadlocks when using Freeze Map + # iterators. + # + + CXXFLAGS = -KPIC -mt +p -features=tmplife $(CXXSCOPEFLAGS) \ + $(CXXWARNFLAGS) $(CXXARCHFLAGS) + OPTFLAG := -O + mkshlib = $(CXX) -G $(LDFLAGS) -o $(1) -h $(2) $(3) $(4) + CXXLIBS = -lCstd -lCrun endif -ifeq ($(CCVERSION),5.3) - FLEX_NOLINE := yes - BISON_NOLINE := yes - TEMPLATE_REPOSITORY := SunWS_cache -else - ifeq ($(CCVERSION),5.4) - CXXWARNFLAGS := +w - TEMPLATE_REPOSITORY := SunWS_cache - else - # - # Assumes >= 5.5 - # - # -erroff=hidef is a (bad) work-around for - # for Sun CC 5.5 bug #4852754 - # - CXXWARNFLAGS := +w -erroff=hidef - CXXSCOPEFLAGS := -xldscope=hidden - endif +ifeq ($(CXX),$(findstring $(CXX),g++,c++)) + CXX := c++ + ifeq ($(MACHINE),sparc64) + USE_SPARC_ASM = yes + CXXARCHFLAGS := -mcpu=ultrasparc -pipe -Wno-deprecated \ + -DUSE_SPARC_ASM + endif + ifeq ($(MACHINE),sparc) + # + # We are a sun4m or sun4c + # On sun4m, there is a bug in some CPU/kernel/gcc configurations which + # prevent us from using '-mcpu=v8' + # + USE_SPARC_ASM = no + CXXARCHFLAGS := -mtune=v8 -pipe -Wno-deprecated -DICE_USE_MUTEX + endif + CXXFLAGS = $(CXXARCHFLAGS) -ftemplate-depth-128 -fPIC -Wall -D_REENTRANT + OPTFLAG := -O2 + mkshlib = $(CXX) -G $(LDFLAGS) -o $(1) -h $(2) $(3) $(4) endif -# -# -features=tmplife is needed to destroy temporary objects immediately -# (as specified by ISO C++) instead of at the end of the current block. -# This is very useful to avoid deadlocks when using Freeze Map -# iterators. -# - -CXXFLAGS = -KPIC -mt +p -features=tmplife $(CXXSCOPEFLAGS) $(CXXWARNFLAGS) $(CXXARCHFLAGS) - - ifeq ($(OPTIMIZE),yes) - CXXFLAGS := -O -DNDEBUG $(CXXFLAGS) + CXXFLAGS := $(OPTFLAG) -DNDEBUG $(CXXFLAGS) else CXXFLAGS := -g $(CXXFLAGS) endif @@ -61,11 +82,7 @@ # # C++ run-time libraries, necessary for linking some shared libraries. # -CXXLIBS = -lCstd -lCrun - -mkshlib = $(CXX) -G $(LDFLAGS) -o $(1) -h $(2) $(3) $(4) - BASELIBS = -lIceUtil $(STLPORT_LIBS) -lpthread LIBS = -lIce $(BASELIBS)