blob: 11d19f75810e90a7d0802733306175c21b92b426 [file] [log] [blame]
# -*- Makefile -*-
#
# $Id$
#
# configuration file for SunPro CC on SunOS
#
########################################################################
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed
# with this work for additional information regarding copyright
# ownership. The ASF licenses this file to you under the Apache
# License, Version 2.0 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied. See the License for the specific language governing
# permissions and limitations under the License.
#
# Copyright 1999-2007 Rogue Wave Software, Inc.
#
########################################################################
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
ifeq ($(shell expr \( $(CCMAJOR) = 5 \& $(CCMINOR) \> 6 \) \
\| $(CCMAJOR) \> 5),1)
# for Sun C++ 5.7 and beyond, enable diagnostic "tags" in compiler output
# and use -erroff to silence Warning: std::stringstream::rdbuf hides the
# function std::ios::rdbuf(std::streambuf*) (see STDCXX-344)
WARNFLAGS += -errtags -erroff=hidef
endif
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 =