Appendix : Profiler --example of arch_spec.mk

by Armin Reichold, 5/98

Example of arch_spec.mk modified to include profiling information
for Kai under IRIX 6

#
# arch_spec.mk
#
# Architecture/site specific makefile fragment
#   for global inclusion.
#
# This is included by  standard.mk, so should not be included elsewhere
#
#
# David R. Quarrie, Feb 95
# Bob Jacobsen, April 1995 - added a few machines, fixed error notification
# Bob Jacobsen, Feb 96    - SunOS4 option update, as it no longer uses f77bb
# Bob Jacobsen March 1996 - updated compilation options to be consistent
#                           with f77bb
# Bob Jacobsen April, 1996 - switched to gcc 2.7.2
# Bob Jacobsen June 6, 1996 - switched back, see Hypernews code-mgmt/44.html
# Bob Jacobsen June 26 1996 - OSF1 -static, g++ for CXX, -g for f77
# Bob Jacobsen July 5, 1996 - remove -static from SunOS5 due to missing
#                             symbols from dl and nsl libraries. Not understood
#
# the default compiler for CC (and hence CXX) was changed to 
# the specific 2.7.2 version of gcc on April 24, 1996. This requires
# explicit reference to libstdc++.a due to a design change to g++ itself
# Unfortunately, the HP compiler is NFG, so we stay with the site
# defaults (whatever, but usually 2.6.3) for now
#
# 19970915	kreymer
#    AIX - redircted CXX (c++ compilation) to Pasha's freeware 2.7.2.2 
#
# 19970911	kreymer@fnal.gov
#    Added comments to arch sections
#    AIX - 
#
# 19971114   gcooper@fnal.gov  (Glenn Cooper)
#   Add DEFECTS macros; various cleanups from Rob Kennedy; 
#   use --strict and -D__KAI_STRICT switches for KCC
#
# 8-Dec-1997 jonckheere@fnal.gov
#   Added an entirely new NT4 section, removed old CYGWIN32-NT4 section.
#

# general flag values; note these should NOT be overrides

testLink := -L
F90C     := f90

ARFLAGS  := r
override CXXFLAGS += -g
override FCFLAGS  += -g
override CPPMFLAGS += -M	# used by all but SunOS5's CC

# Specify cpp to be used by the f7bb replacement in standard.mk
FCPP     := $(CPP)

#####################################################
#                                                   #
#    ###########################################    #
#    #                                         #    #
#    #   Specific entries for architectures    #    #
#    #                                         #    #
#    ###########################################    #
#                                                   #
#####################################################


###########################################
#                                         #
#                 AIX                     #
#                                         #
###########################################

ifneq (,$(findstring AIX,$(BFARCH)))

  ifneq (,$(findstring -CC,$(BFARCH)))
     CC  := CC
     CXX := CC
     CPP := g++
     FPP := g77

  else
    ifneq (,$(findstring -KCC,$(BFARCH)))
      CPP := KCC
      CC  := KCC --c
      CXX := KCC
      AR  := KCC
      FPP := g77 # this is probably wrong but I don't know what else to use...LSK
      override CXXCFLAGS += --no_implicit_include
      override CXXFLAGS += +K0
      ifeq (D0,$(EXPERIMENT))
        override CXXFLAGS += --exceptions
      endif

      override DEFECTS += -DDEFECT_STANDARD_CPLUSPLUS

      ARFLAGS := -o

    else
      CC  := gcc -O1
      CXX := g++
      override CXXFLAGS += -O1 -mcpu=powerpc
      # CXX := xlC -O1 -mcpu=ppc     /* can't use this,  not supported
      # CXX := /cdf/software/freeware/powerpc-ibm-aix4.2.0.0/bin/gcc
      #  add -Wall for more diagnostics
      #  FCPP := /usr/lib/cpp
      FCPP := g++
      CPP := g++
      FPP := g77

      ifeq (D0,$(EXPERIMENT))
	override CXXFLAGS += -fhandle-exceptions
      endif

      override DEFECTS += -DDEFECT_GCC27_STRINGSTREAM_STR
      override DEFECTS += -DDEFECT_NO_IOSFWD_HEADER
      override DEFECTS += -DDEFECT_NO_STDLIB_NAMESPACES
      override DEFECTS += -DDEFECT_OLD_IOSTREAM_HEADERS
      override DEFECTS += -DDEFECT_OLD_STRINGSTREAM
      override DEFECTS += -DDEFECT_OLD_STL_HEADERS
      override DEFECTS += -DDEFECT_OLD_STL_COUNT

    endif
  endif

  override FCPPFLAGS  += -E -C -P \
                         -DFORTRAN -DLANGUAGE_FORTRAN -DAIX -DRS6000
  override FCPPMFLAGS += -x c
  override FCFLAGS    += -qhalt=E -qflttrap=OV:ZERO:INV:EN -qextname \
                         -qfixed=132 -qarch=com
  F90C := xlf90

  override LOADLIBES  += -lstdc++ -lld -lm

  DEFINES  = -Daix -DUNIX -DAIX
  DEFINES += -D__UNIX__ -D__AIX__

  DATAREP = -DDATAREP_BIG_IEEE -DDATAREP_BIG_ENDIAN -DAIX_4_1_4_GPP_2_7_2_1

  override DEFECTS  += -DDEFECT_NO_APPEND
  override DEFECTS  += -DDEFECT_NO_READONLY
  override DEFECTS  += -DDEFECT_NO_STRUCTURE

  override DEFINES  += $(DATAREP) $(DEFECTS)
  override CPPFLAGS += $(DEFINES)

  ifdef MAPFILE
    override LDFLAGS += -bloadmap:$(MAPFILE)
  endif

###########################################
#                                         #
#                 SunOS5/Solaris          #
#                                         #
###########################################

else
ifneq (,$(findstring SunOS5,$(BFARCH)))
  testLink := -h
  override FCPPFLAGS += -C -P -DSunOS
# -static removed due to link trouble with libdl.so and libnsl.a
#  override LDFLAGS += -static
  DATAREP = -DDATAREP_BIG_IEEE -DDATAREP_BIG_ENDIAN
  DEFINES  = -Dsunos -DUNIX -DSUNOS
  DEFINES += -D__UNIX__ -D__SUNOS__
  #FNAL-AML: add support of Kai C++
  ifneq (,$(findstring -KCC,$(BFARCH)))
    CPP := KCC
    CC  := KCC --c
    CXX := KCC
    FPP := g77
    AR  := KCC
    ARFLAGS := -o
    override CXXCFLAGS += --no_implicit_include
    # no optimize; require standard code, explicit includes only
    override CXXFLAGS += +K0
    override CXXFLAGS += -DHAS_BUILTIN_BOOL -LANG:ansi-for-init-scope=on
    override CXXFLAGS += --strict
    override CPPFLAGS += -D__KAI_STRICT
    override DEFECTS += -D__STANDARD_CPLUSPLUS -DDEFECT_STANDARD_CPLUSPLUS
#
#   This is what is currently being used by CMS at Fermilab
  else
      CC  := CC
      CXX := CC
      CPP := CC
      FPP := g77
      override CPPMFLAGS := -xM
  endif

  override DEFINES  += $(DATAREP) $(DEFECTS)
  override CPPFLAGS += $(DEFINES)

###########################################
#                                         #
#                 SunOS4                  #
#                                         #
###########################################

else
ifneq (,$(findstring SunOS4,$(BFARCH)))
  CC := gcc -V2.7.2
  CXX := g++ -V2.7.2
  # the following change to LOADLIBES will happen _after_ the 
  # specific GNUmakefile's additions, as this file is included by
  # standard.mk.  This is a Good Thing.
  override LOADLIBES += -lstdc++

  # RANLIB needs to run in a writable directory
  RANLIB = cd $(workdir); ranlib

  override LOADLIBES += -lm
  testLink := -h

  # !!!SLAC specific crock!!! fix bug in backlevel compiler
  override CXXFLAGS += -DNULL=0

  # Fortran options for this platform
  FCPP := /usr/lib/cpp
  override FCPPFLAGS += -C -P -DSunOS
  override FCFLAGS += -Nl101
 
  # !!!SLAC specific crock!!! FC for new compiler
  FC := f77-3.0.1
  DATAREP = -DDATAREP_BIG_IEEE -DDATAREP_BIG_ENDIAN
  DEFINES  = -Dsunos -DUNIX -DSUNOS $(DATAREP)
  DEFINES += -D__UNIX__ -D__SUNOS__

###########################################
#                                         #
#                 OSF                     #
#                                         #
###########################################

else
ifneq (,$(findstring OSF,$(BFARCH)))

  FPP := g77
  ifneq (,$(findstring -CC,$(BFARCH)))
     CC  := CC
     CXX := CC
     CPP := g++
  else
    ifneq (,$(findstring -KCC,$(BFARCH)))
      CPP := KCC
      CC  := KCC --c
      CXX := KCC
      AR  := KCC
      override CXXCFLAGS += --no_implicit_include
      override CXXFLAGS += +K0
      ifeq (D0,$(EXPERIMENT))
        override CXXFLAGS += --exceptions
      endif
      ARFLAGS := -o
      override DEFECTS += -DDEFECT_STANDARD_CPLUSPLUS
    else
      CC  := gcc
      CXX := g++
      CPP := g++
      override FCPPFLAGS  += -DFORTRAN -DLANGUAGE_FORTRAN -DOSF1
      ifeq (D0,$(EXPERIMENT))
	override CXXFLAGS += -fhandle-exceptions
      endif
      override DEFECTS += -DDEFECT_GCC27_STRINGSTREAM_STR
      override DEFECTS += -DDEFECT_NO_IOSFWD_HEADER
      override DEFECTS += -DDEFECT_OLD_IOSTREAM_HEADERS
      override DEFECTS += -DDEFECT_OLD_STRINGSTREAM
      override DEFECTS += -DDEFECT_OLD_STL_HEADERS
      override DEFECTS += -DDEFECT_OLD_STL_COUNT
      override DEFECTS += -DDEFECT_NO_STDLIB_NAMESPACES
      override DEFECTS += -DDEFECT_RECL_WORDS
    endif
  endif
  # the following change to LOADLIBES will happen _after_ the 
  # specific GNUmakefile's additions, as this file is included by
  # standard.mk.  This is a Good Thing, as its needed during a -static link
  override LOADLIBES += -ldnet_stub
  override LDFLAGS += -static 

  RANLIB = ranlib 
  override FCPPFLAGS += -C -P -DOSF1 -DUNIX -extend_source

  DEFINES  = -Dosf1 -DUNIX -DOSF1
  DEFINES += -D__UNIX__ -D__OSF1__
  DEFINES += -DOSF1_4_0_GPP_2_7_2_3

  DATAREP = -DDATAREP_LITTLE_IEEE -DDATAREP_LITTLE_ENDIAN

# Set this until we enable FFLAGS += -assume byterecl
  override DEFECTS  += -DDEFECT_RECL_WORDS

  override DEFINES  += $(DATAREP) $(DEFECTS)
  override CPPFLAGS += $(DEFINES)

###########################################
#                                         #
#               VxWorks                   #
#                                         #
###########################################

else
ifneq (,$(findstring VxWorks,$(BFARCH)))
  RANLIB = ranlib 
  DATAREP = -DDATAREP_BIG_IEEE -DDATAREP_BIG_ENDIAN
  DEFINES  = -DUNIX $(DATAREP)
  DEFINES += -D__UNIX__

###########################################
#                                         #
#                HP-UX                    #
#                                         #
###########################################

else
ifneq (,$(findstring HP-UX,$(BFARCH)))
  testLink := -h
  ARFLAGS := rf

  # fort77 is standard fortran compiler from days of old
  FC := fort77

  CC := gcc
  CXX := g++
  FPP := g77

  # Fortran options needed for this platform
  # +T added on March 12, 96 for consistency with f77bb, but what does it do?
  #   [it produces a traceback after a crash - TW]
  override FCFLAGS += +ppu +T -K
  override FCPPFLAGS += -C -P -DHPUX
  DATAREP = -DDATAREP_BIG_IEEE -DDATAREP_BIG_ENDIAN
  DEFINES  = -Dhpux -DUNIX -DHPUX $(DATAREP)
  DEFINES += -D__UNIX__ -D__HPUX__

###########################################
#                                         #
#                 IRIX5                   #
#                                         #
###########################################

else
ifneq (,$(findstring IRIX5,$(BFARCH)))
  testLink := -h
  override FCPPFLAGS += -C -P -DIRIX
  ifneq (CDF1,$(EXPERIMENT))
  # Necessary because we still use ansi CPP for experiments other than CDF1
    override FCPPMFLAGS += -x c
    override FCFLAGS += -acpp
  endif
  override FCFLAGS += -G0 -mips2 -static -u -d_lines -Nc32 -Nn30000 -trapuv -extend_source
  FPP := f77
  ifneq (,$(findstring -CC,$(BFARCH)))
     CC  := CC
     CXX := CC
     CPP := g++
     override CXXFLAGS += -n32 -experimental -DHAS_BUILTIN_BOOL
  else
    ifneq (,$(findstring -KCC,$(BFARCH)))
      CPP := KCC
      CC  := KCC --c
      CXX := KCC
      AR  := KCC
      ARFLAGS := -o 
      override CXXCFLAGS += --no_implicit_include
      override CXXFLAGS += +K0
      ifeq (D0,$(EXPERIMENT))
        override CXXFLAGS += --exceptions --force_typeinfo_local
      endif
      override DEFECTS += -DDEFECT_STANDARD_CPLUSPLUS
    else
      CC  := cc
      CXX := g++
      CPP := g++
      ifeq (D0,$(EXPERIMENT))
	override CXXFLAGS += -fhandle-exceptions
      endif
    endif
  endif

  DATAREP = -DDATAREP_BIG_IEEE -DDATAREP_BIG_ENDIAN -DIRIX_5_3_GPP_2_7_2_1

  DEFINES  = -Dsgi -D_SVR4_SOURCE -DUNIX -DIRIX5 -DMIPS $(DATAREP)
  DEFINES += -D__UNIX__ -D__IRIX5__

  ifdef MAPFILE
    override LDFLAGS += -Wl,-m
           LDOUT    = >$(MAPFILE)
  endif

###########################################
#                                         #
#                 IRIX6                   #
#                                         #
###########################################
else
ifneq (,$(findstring IRIX6,$(BFARCH)))
  testLink := -h

  DATAREP  = -DDATAREP_BIG_IEEE -DDATAREP_BIG_ENDIAN

  override DEFECTS =

  DEFINES += -DUNIX -DIRIX6 -DMIPS
  DEFINES += -D__UNIX__ -D__IRIX6__

  FPP := f77
  override FCPPMFLAGS =

#=============================================================================
# IRIX6: SGI MipsPro v7.1nx (-n32 -experimental)
#=============================================================================
  ifneq (,$(findstring -CC,$(BFARCH)))
     CC  := CC
     CXX := CC
     CPP := CC
     override CPPMFLAGS := -c -M

     override CXXFLAGS += -O0 -mips3
     override CXXCFLAGS += -n32
     #FNAL/CDF-GC  12-Feb-1998    -experimental flag is only for 7.1 compilers
     ifeq (CDF,$(EXPERIMENT))
	override CXXCFLAGS += -experimental
     endif

     #FNAL-GC
     # Suppress compiler warnings:
     override CXXFLAGS += -woff 1552 -woff 1555 -woff 1174
     #FNAL-GC
     # Suppress linker warnings:
     #     15 - multiple symbol definition
     #     47 - instructions that degrade performance on R4000 CPU's
     #     84 - library not used to resolve any references
     #     85 - same as 84 but for DSO's
     override CXXFLAGS += -Wl,-woff,84,-woff,15,-woff,47,-woff,85
     override CXXFLAGS += -LANG:ansi-for-init-scope=on

     override DEFINES += -DIRIX_6_2_CC32_7_1

     override DEFECTS += -DDEFECT_SGICC_STRING_HEADER
     override DEFECTS += -DDEFECT_NO_IOSFWD_HEADER
     override DEFECTS += -DDEFECT_NO_STDLIB_NAMESPACES
     override DEFECTS += -DDEFECT_OLD_IOSTREAM_HEADERS
     override DEFECTS += -DDEFECT_OLD_STRINGSTREAM
     override DEFECTS += -DDEFECT_OLD_STDC_HEADERS
     override DEFECTS += -DDEFECT_OLD_STL_HEADERS
     override DEFECTS += -DDEFECT_OLD_STL_COUNT
     override DEFECTS += -DHAS_BUILTIN_BOOL     # CLHEP-related. Still needed?

     override FCFLAGS += -G0 -static -n32 -u -d_lines
     override FCFLAGS += -extend_source -woff 1189

#=============================================================================
# IRIX6: Kai C++ v3.2
#=============================================================================
  else
    ifneq (,$(findstring -KCC,$(BFARCH)))
      CPP := KCC
      CC  := KCC --c
      CXX := KCC
      AR  := KCC
      ARFLAGS := -o 

      override CPPFLAGS += -D__KAI_STRICT
      override CXXCFLAGS += --no_implicit_include
      ifeq (CDF,$(EXPERIMENT))
        override CXXCFLAGS += -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED
      endif
      override CXXFLAGS += +K0 -O0
      ifeq (D0,$(EXPERIMENT))
        override CXXFLAGS += --exceptions --force_typeinfo_local
        override CXXFLAGS += -mips2 --no_split
        override ARFLAGS  := --no_split $(ARFLAGS)
        AR                := kcc-ar2
      else
        override CXXFLAGS += --backend -mips2
      endif
      override CXXFLAGS += --strict

      override DEFINES += -DIRIX_6_2_KCC_3_2
      override DEFECTS += -D__STANDARD_CPLUSPLUS -DDEFECT_STANDARD_CPLUSPLUS

      override FCFLAGS += -G0 -static -32 -mips2 -u -d_lines -trapuv 
      override FCFLAGS += -extend_source

#
# hack -- turn on optimization  and profiling 
#
    override CXXCFLAGS := $(filter-out -g%,$(CXXCFLAGS))
    override CXXFLAGS := $(filter-out -g%,$(CXXFLAGS))
    override FCFLAGS := $(filter-out -g%,$(FCFLAGS))

    override CXXCFLAGS := $(filter-out -O%,$(CXXCFLAGS))
    override CXXFLAGS := $(filter-out -O%,$(CXXFLAGS))
    override FCFLAGS := $(filter-out -O%,$(FCFLAGS))

    override CXXCFLAGS := $(filter-out +K%,$(CXXCFLAGS))
    override CXXFLAGS := $(filter-out +K%,$(CXXFLAGS))
    override FCFLAGS := $(filter-out +K%,$(FCFLAGS))

    override CXXCFLAGS += +K2 -g3
    override CXXFLAGS += +K2 -g3
    override FCFLAGS += -O2 -g3


#=============================================================================
# IRIX6: GNU C++ v2.7
#=============================================================================
    else
      CC  := gcc
      CXX := g++
      CPP := g++

      override CXXFLAGS += -O0 -mips2
      ifeq (D0,$(EXPERIMENT))
	override CXXFLAGS += -fhandle-exceptions
      endif

      override DEFINES += -DIRIX_6_2_GPP_2_7_2_1

      override DEFECTS += -DDEFECT_GCC27_STRINGSTREAM_STR
      override DEFECTS += -DDEFECT_NO_IOSFWD_HEADER
      override DEFECTS += -DDEFECT_NO_STDLIB_NAMESPACES
      override DEFECTS += -DDEFECT_OLD_IOSTREAM_HEADERS
      override DEFECTS += -DDEFECT_OLD_STRINGSTREAM
      override DEFECTS += -DDEFECT_OLD_STL_HEADERS
      override DEFECTS += -DDEFECT_OLD_STL_COUNT

      override FCFLAGS += -G0 -static -32 -mips2 -u -d_lines -trapuv 
      override FCFLAGS += -extend_source
    endif
  endif

#=============================================================================
# IRIX6: Fortran support
#=============================================================================
  override FCPPFLAGS += -C -P -DIRIX

# Set this until we enable FFLAGS += -byterecl
  override DEFECTS += -DDEFECT_RECL_WORDS

  # Necessary because we still use ansi CPP for experiments other than CDF1
  ifneq (CDF1,$(EXPERIMENT))
    override FCFLAGS += -acpp
  endif

#=============================================================================
# IRIX6: Mapfile support
#=============================================================================
  ifdef MAPFILE
    override LDFLAGS += -Wl,-m
    override LDOUT    = >$(MAPFILE)
  endif

#=============================================================================
# IRIX6: Concatenate DEFINES together and add list to CPP and CXX flags
# Everything in CPPFLAGS is used in BOTH dependency discovery and compilation
#=============================================================================
  override DEFINES  += $(DATAREP) $(DEFECTS)
  override CPPFLAGS += $(DEFINES)

###########################################
#                                         #
#                 Linux2                  #
#                                         #
###########################################
else

ifneq (,$(findstring Linux,$(BFARCH)))

  DATAREP  = -DDATAREP_LITTLE_IEEE -DDATAREP_LITTLE_ENDIAN

  override DEFECTS   =

  DEFINES += -DUNIX -DLINUX
  DEFINES += -D__UNIX__ -D__LINUX__

  override CPPFLAGS += -D_POSIX_SOURCE -D_SVID_SOURCE -D_BSD_SOURCE
  override CPPFLAGS += -D_POSIX_C_SOURCE=2 -D_XOPEN_SOURCE

  FPP := g77

#=============================================================================
# Linux2: Kai C++ v3.2
#=============================================================================
  ifeq (-KCC,$(findstring -KCC,$(BFARCH)))
    CPP := KCC
    CC  := KCC --c
    CXX := KCC
    AR  := KCC
    ARFLAGS := -o

    override CPPFLAGS += -D__KAI_STRICT -D__STRICT_ANSI__
    override CXXCFLAGS += --no_implicit_include
    override CXXFLAGS += +K0 -O0
    override CXXFLAGS += --backend -m486
    override CXXFLAGS += --strict

    override DEFINES  += -DLINUX_2_0_KCC_3_2
    override DEFECTS  += -D__STANDARD_CPLUSPLUS -DDEFECT_STANDARD_CPLUSPLUS

#=============================================================================
# Linux2: Gnu C++ v2.7
#=============================================================================
  else

    CC  := gcc
    CXX := g++
    CPP := g++

    override CXXFLAGS += -O0 -m486

    override DEFINES  += -D_FIXED_TYPES_ENV=1

    override DEFECTS  += -DDEFECT_GCC27_STRINGSTREAM_STR
    override DEFECTS  += -DDEFECT_NO_IOSFWD_HEADER
    override DEFECTS  += -DDEFECT_NO_STDLIB_NAMESPACES
    override DEFECTS  += -DDEFECT_OLD_IOSTREAM_HEADERS
    override DEFECTS  += -DDEFECT_OLD_STRINGSTREAM
    override DEFECTS  += -DDEFECT_OLD_STL_HEADERS
    override DEFECTS  += -DDEFECT_OLD_STL_COUNT

  endif

#=============================================================================
# Linux2: Fortran support
#=============================================================================

  FC := g77

  override FCFLAGS += -fdollar-ok -fno-automatic  
  override FCFLAGS += -fno-second-underscore -ffixed-line-length-132 
  override FCFLAGS += -fno-globals  -w
  override FCFLAGS += -fdebug-kludge
  override FCFLAGS += -DFORTRAN -DLANGUAGE_FORTRAN

  override FCPPFLAGS += -C -P -DLinux -DUNIX
  override FCPPFLAGS += -DFORTRAN -DLANGUAGE_FORTRAN

  override DEFECTS  += -DDEFECT_NO_JZEXT
  override DEFECTS  += -DDEFECT_NO_INTHEX
  override DEFECTS  += -DDEFECT_NO_INTHOLLERITH
  override DEFECTS  += -DDEFECT_NO_READONLY
  override DEFECTS  += -DDEFECT_NO_DIRECT_FIXED
  override DEFECTS  += -DDEFECT_NO_STRUCTURE

#  We still use ansi CPP for experiments other than CDF run 1
  ifneq (CDF1,$(EXPERIMENT))
     override FCPPMFLAGS += -x c
  endif

#=============================================================================
# Linux2: Concatenate DEFINES together and add list to CPP and CXX flags
# Everything in CPPFLAGS is used in BOTH dependency discovery and compilation
#=============================================================================
  override DEFINES  += $(DATAREP) $(DEFECTS)
  override CPPFLAGS += $(DEFINES)

###########################################
#                                         #
#              NT4                        #
#                                         #
###########################################

else
ifneq (,$(findstring NT4,$(BFARCH)))
  ifeq (-GCC,$(findstring -GCC,$(BFARCH)))
    CC  := gcc
    CXX := gcc
    CPP := gcc
    FPP := gcc
  endif
  ifeq (-MSVC50,$(findstring -MSVC50,$(BFARCH)))
    CC := srt_ntcc
    CXX := srt_ntcc
    FC := srt_ntf77
    CPP := gcc -E -nostdinc -isystem /msvcinc $(DEFINE_FLAGS)
    FPP := gcc -E -nostdinc -isystem /msvcinc $(DEFINE_FLAGS)
    LD := echo "*********WARNING: LD NOT SUPPORTED ON THIS ARCHETECTURE"
    AR := srt_ntlib
    override DEFINES  += -DNT_MSVCPP
    override DEFECTS  += -D__STANDARD_CPLUSPLUS 
    override DEFECTS  += -DDEFECT_NO_VIRTUAL_COVARIANCE
    override DEFECTS  += -DDEFECT_TYPE_INFO_GLOBAL
    override DEFECTS  += -DDEFECT_CERNLIB_UPPERCASE

    DEFINE_FLAGS := -DWIN32 -D_DEBUG -D_WINDOWS -D_WIN32_WINNT=0x0400 -D_M_IX86 $(DEFECTS) $(DEFINES)

    #
    # Standard debug flags for the C/C++ compiler:
    #		Od -- no optimizations
    #		MTd -- Use the multithreaded dll, debug version
    #		nologo -- We hate MS, after all, right?
    #		GX -- turn on exceptions processing
    #		Z7 -- Put all debug info in the .obj file
    #		Zi -- Put all debug info in the program database
    #		Gm -- Enable minimal rebuild feature
    #		W3 -- Warnings level 3
    #		YX -- Use precompiled headers.
    #		GR -- Turn RTTI on
	#		Fd -- Location of the program database. This is a filename that must be translated,
	#				so we don't pass it directly through...
    #
    #  Note -- the "-NTxxxx" tells the srt_ntcc script to pass the option straight
    #		through to the command line as "/xxxx" (where xxxx can be any length).
    #
    override CPPFLAGS += $(DEFINE_FLAGS)
    override CXXFLAGS = -NTOd -NTMTd -NTnologo -NTGX -NTZi -NTGm -Fd$(workdir) -NTW3 -NTGR
	override CCFLAGS = $(CXXFLAGS)

    #
    #  Flags for fortran
    #
    #		nologo -- Don't print out the Digital Flag banner (but digital is almost
    #					out of biznez -- don't they need the publicity?
    #		Od -- No optimizations
    #		MTd -- Use the multithreaded dll, debug version
    #		Z7 -- Full debug info, stuck in the .obj file
    #		iface:nomixed_str_len_arg -- Put all the string lengths at end of arg list
    #		assume:underscore -- Append a "_" to all routine names, just like UNIX (duh)
    #		names:lowercase -- All routine names are really lower case.
    #		warn:nofileopt -- Don't complain about inability to do file-to-file optimizations
    #		extend_source:132 -- Don't stop looking at source at 72 columns.
    #
    override FCFLAGS = -NTnologo -NTOd -NTMTd -NTZ7 -NTiface:nomixed_str_len_arg \
			-NTassume:underscore -NTnames:lowercase -NTwarn:nofileopt -NTextend_source:132
    #
    # Flags for the linker
    #
    #		nologo -- Don't print out logo
    #
    override LDFLAGS += -NTnologo
    #
	# Files to place the cahce for symbolic link resolution in. We do this because
	# it is so dang slow when trying to connect to a server. This is pretty ugly
	# cause we have to parse this path without the cache the first time, but I don't
	# know how else to do it (esp. if the path involves aliases!).
	#
	SRT_ALIAS_CACHE_FILE=$(bindir)/../../tmp/$(BFARCH)/srt_alias_file.python_db
	SRT_SYM_CACHE_FILE=$(bindir)/../../tmp/$(BFARCH)/srt_sym_file.python_db
	export SRT_ALIAS_CACHE_FILE
	export SRT_SYM_CACHE_FILE
	#
    lib=$(LIBNT)
    export lib
  endif

###########################################
#                                         #
#                  NULL                   #
#                                         #
###########################################

else
# Nothing found - complain 

ERROR := $(shell echo Could not match BFARCH: $(BFARCH) for system >& 2 )

endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
 LocalWords:  cdfsoft cshrc CVSROOT