#
# $Id$
#
# configuration file for Siemens CDS++ on Reliant UNIX
#
##############################################################################
#
# 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
CCVER          := $(shell $(CXX) -V /bogus/file.cpp 2>&1 | head -1 | awk '{ print $4 }')
CXXFLAGS        = -Xe
WARNFLAGS       =
DEPENDFLAGS     = -M
PICFLAGS        = 
PRELINKFLAGS    =
CPPFLAGS        =
LDFLAGS         =

# The flag(s) to use to embed a library search path into generated executables.
# Appropriate flag(s) (if available) not determined at this time.
RPATH =

# debug/optimization options
DEBUG_CXXFLAGS  = -g
DEBUG_CPPFLAGS  =

OPTMZ_CXXFLAGS  = -F O2
OPTMZ_CPPFLAGS  =

# shared/static library options
SHARED_CXXFLAGS = -Kpic
SHARED_CPPFLAGS = -D_RWSTD_SHARED_LIB
SHARED_LDFLAGS  = -G

STATIC_CXXFLAGS =
STATIC_CPPFLAGS =
STATIC_LDFLAGS  =

# multi/single thread options
MULTI_CPPFLAGS  = -D_REENTRANT
MULTI_LDFLAGS   = -lpthread

SINGL_CPPFLAGS  =
SINGL_LDFLAGS   =
