#
# $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           =

# math library to link with
LIBM            = -lm

# 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   =
