#
# $Id$
#
# configuration file DEC cxx on DEC OSF
#
##############################################################################
#
# 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             = cxx
CCVER          := $(shell $(CXX) -V 2>&1 | awk '{ print $$3 }')
CXXFLAGS        = -x cxx -nocxxstd -std strict_ansi_errors
WARNFLAGS       = -w1 -msg_disable 450
DEPENDFLAGS     = -M -noimplicit_include
PICFLAGS        =
PRELINKFLAGS    =
CPPFLAGS        =
LDFLAGS         = -nocxxstd
LDSOFLAGS       = -shared

ifeq ($(OSNAME),OSF1)
# link with libiconv only on AIX (and not on Linux)
  LDFLAGS      += -liconv
endif

# use a unique template repository for each program
# (makefiles will append '=' followed by the name of the repository)
CXX_REPOSITORY  = -ptr

# The flag(s) to use to embed a library search path into generated executables.
RPATH = -rpath 

# debug/optimization options
DEBUG_CXXFLAGS  = -g
DEBUG_CPPFLAGS  =

OPTMZ_CXXFLAGS  = -O2
OPTMZ_CPPFLAGS  =

# shared/static library option
SHARED_CXXFLAGS = 
SHARED_CPPFLAGS = -D_RWSTD_SHARED_LIB
SHARED_LDFLAGS  = 

STATIC_CXXFLAGS =
STATIC_CPPFLAGS =
STATIC_LDFLAGS  =

# multi/single thread options; -pthread option defines _REENTRANT
MULTI_CPPFLAGS_POSIX   = -pthread 
MULTI_CPPFLAGS_SOLARIS = 
MULTI_CPPFLAGS_DCE     = -threads

MULTI_LDFLAGS_POSIX    = -pthread
MULTI_LDFLAGS_SOLARIS  = 
MULTI_LDFLAGS_DCE      = -threads

# Posix
MULTI_CPPFLAGS = $(MULTI_CPPFLAGS_POSIX)
MULTI_LDFLAGS  = $(MULTI_LDFLAGS_POSIX)

SINGL_CPPFLAGS  =
SINGL_LDFLAGS   =
