blob: ffa4eddd4fcc66bb294d7ab7e9428c7b04ff076f [file] [log] [blame]
# -*- Makefile -*-
#
# $Id$
#
# configuration file for SunPro CC on SunOS
#
##############################################################################
CXX = CC
# extract the "C++ m.n" substring from version string (whcih changes
# from one release of the compiler to another)
CCVER := $(shell $(CXX) -V 2>&1 | head -n1 \
| sed 's/.*C\+\+ *\([^ ]*\).*/\1/')
CCMAJOR := $(shell echo $(CCVER) | cut -f1 -d'.')
CCMINOR := $(shell echo $(CCVER) | cut -f2 -d'.')
ifeq ($(shell expr $(CCMAJOR) = 5 \& $(CCMINOR) = 9),1)
# in Sun C++ 5.9 -xM can only be used with C and C++ files
# and it produces the wrong results with .{S,s} files
DEPENDFLAGS.cpp = -xM
# deliberately undefined:
# DEPENDFLAGS.S =
# DEPENDFLAGS =
else
DEPENDFLAGS = -xM
endif
WARNFLAGS = +w
PICFLAGS = -KPIC
LDSOFLAGS =
CXXFLAGS = -library=%none
CXXPRELINK =
CPPFLAGS =
LDFLAGS = -library=%none
LDSOFLAGS = -G
# use CC to invoke the compiler (needed to pick up template
# instantiations from SunWS_cache)
AR = CC
ARFLAGS = -xar -o
# The flag(s) to use to embed a library search path into generated executables.
RPATH = -R
# debug/optimization options
DEBUG_CXXFLAGS = -g
DEBUG_CPPFLAGS =
OPTMZ_CXXFLAGS = -O
OPTMZ_CPPFLAGS =
# shared/static library options
SHARED_CXXFLAGS =
SHARED_CPPFLAGS =
SHARED_LDFLAGS =
STATIC_CXXFLAGS =
STATIC_CPPFLAGS =
STATIC_LDFLAGS =
# multi/single thread options; -mt defines _REENTRANT
MULTI_CPPFLAGS_POSIX = -mt
MULTI_CPPFLAGS_SOLARIS = -mt -D_RWSTD_SOLARIS_THREADS
MULTI_CPPFLAGS_DCE =
# avoid linking with the redundant libpthread and libthread
# on Solaris 10 and beyond to prevent error 543
ifeq ($(OSNAME),SunOS)
OSVER = $(shell uname -r)
OSMAJOR = $(shell echo $(OSVER) | sed "s/\([0-9][0-9]*\)\..*/\1/")
OSMINOR = $(shell echo $(OSVER) | sed "s/[^.]*\.\([0-9][0-9]*\)/\1/")
ifneq ($(shell expr $(OSMAJOR) \> 5 \| $(OSMINOR) = 10),1)
LIBPTHREAD = -lpthread
LIBTHREAD = -lthread
endif
else
LIBPTHREAD = -lpthread
LIBTHREAD = -lthread
endif
MULTI_LDFLAGS_POSIX = -mt $(LIBPTHREAD)
MULTI_LDFLAGS_SOLARIS = -mt $(LIBTHREAD)
MULTI_LDFLAGS_DCE =
# POSIX
MULTI_CPPFLAGS = $(MULTI_CPPFLAGS_POSIX)
MULTI_LDFLAGS = $(MULTI_LDFLAGS_POSIX)
SINGL_CPPFLAGS =
SINGL_LDFLAGS =
ifeq ($(shell expr $(CCMAJOR) \>= 5 \& $(CCMINOR) \>= 9),1)
# starting with Sun C++ 5.9, the compiler prefers the generic
# -m32 and -m64 options to the architecture specific -xarch
# options some of which have been deprecated
wide_flags = -m64
narrow_flags = -m32
else
# (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)
# Solaris uname -p prints i386 on AMD64, use the optisa
# command to deterrmine "the best" architecture
arch := $(shell optisa amd64)
endif
ifeq ($(arch),amd64)
wide_flags = -xarch=amd64
narrow_flags = -xarch=386 # the default (same as generic)
else
wide_flags = -xarch=generic64
narrow_flags = -xarch=generic # the default (same as 386)
endif
endif
endif
CXXFLAGS.wide = $(wide_flags)
LDFLAGS.wide = $(wide_flags)
LDSOFLAGS.wide = $(wide_flags)
ARFLAGS.wide =
CXXFLAGS.narrow = $(narrow_flags)
LDFLAGS.narrow = $(narrow_flags)
LDSOFLAGS.narrow = $(narrow_flags)
ARFLAGS.narrow =