# -*- 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/')
WARNFLAGS       = +w
DEPENDFLAGS     = -xM
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  =

# (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 ($(arch),amd64)
        wide_flags     = -xarch=amd64
        narrow_flags   =
    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   =
