#-----------------------------------------------------------------------------
# MAKEFILE for Class Libraries
# Copyright (c) Borland International 1991, 1996, All Rights Reserved
#
# $Revision:   5.44  $
#
# Defines:
#   -DDOS, -DWIN32, -DOS2   Specifies target system
#                           (DOS implies WIN16 for Windows specific classes)
#   -DMT                    Build multi-thread version
#   MODEL=<s|c|m|l|h>       Specifies memory model for DOS library.
#                           Required when building DOS library.
#   BIDSNAME=xxx            Base name of the target library or DLL
#                           Always required.
#   BIDSDLLNAME=xxx         Overrides base name of target for DLLs only
#   BIDSVER=xxx             Base name of the target library or DLL
#   -DDLL                   Build a DLL.
#   -DDIAGS                 Build the diagnostic version of the target.
#   -DOBJECTS               Also build the object-based containers
#   -DBIDSFARVTABLE         Moves class vtables out of dgroup
#   CODEGUARD               Builds classlib with CodeGuard:
#                            1=basic data, 2=full checking
#   ALIGN=<1|2|4|8>         Specifies the alignment
#   BCC32I                  Uses bcc32i instead of bcc32 to compile
#   -DBI_REDEFINE_BOOL      Builds library with BOOL mapped to bool
#
# 16-bit non-diagnostic static libraries:
#   make -r -DDOS MODEL=s BIDSNAME=bids
#   make -r -DDOS MODEL=c BIDSNAME=bids
#   make -r -DDOS MODEL=m BIDSNAME=bids
#   make -r -DDOS MODEL=l BIDSNAME=bids
#   make -r -DDOS MODEL=h BIDSNAME=bids
#
# 16-bit diagnostic static libraries:
#   make -r -DDOS MODEL=s -DDIAGS BIDSNAME=bids
#   make -r -DDOS MODEL=c -DDIAGS BIDSNAME=bids
#   make -r -DDOS MODEL=m -DDIAGS BIDSNAME=bids
#   make -r -DDOS MODEL=l -DDIAGS BIDSNAME=bids
#   make -r -DDOS MODEL=h -DDIAGS BIDSNAME=bids
#
# 16-bit DLLs:
#   make -r -DDOS -DDLL BIDSNAME=bids
#   make -r -DDOS -DDLL -DDIAGS BIDSNAME=bids
#
# WIN32 libraries:
#   make -r -DWIN32 BIDSNAME=bidsf
#   make -r -DWIN32 -DDIAGS BIDSNAME=bids
#
# WIN32 DLLs:
#   make -r -DWIN32 -DDLL BIDSNAME=bids
#   make -r -DWIN32 -DDLL -DDIAGS BIDSNAME=bids
#
# OS/2 libraries:
#   make -r -DOS2 BIDSNAME=bids
#   make -r -DOS2 -DDIAGS BIDSNAME=bids
#
# OS/2 DLLs:
#   make -r -DOS2 -DDLL BIDSNAME=bids
#   make -r -DOS2 -DDLL -DDIAGS BIDSNAME=bids
#-----------------------------------------------------------------------------

.autodepend
.cacheautodepend
.swap

#--------------------------------------------------------------------
# fill in defaults
#--------------------------------------------------------------------
!if !$d(MODEL) && !$d(DOS) && !$d(WIN16) && !$d(OS2)
  MODEL = f    # default build model = flat static, Win32
#  MODEL = d    # default build model = flat DLL, Win32
!endif

!if $(MODEL) == d
  DLL = 1      # model d means to build the DLL model
  WIN32 = 1    # 32bit DLL
!endif

!if ($(MODEL) == t || $(MODEL) == f) && !$d(OS2)
  WIN32 = 1    # default to WIN32 switch on for flat or multi-threaded model
!endif

!if $(MODEL) == t || $d(MT)
  MT = mt       # model t implies MT. Use MT as 'mt' to build library names
!endif

!if $d(WIN32)
! if $d(MT)
    MODEL = t
! else
    MODEL = f
! endif
!elif $d(OS2)
  MODEL = 2
!else
! if $d(DLL)
    MODEL = l
! endif
! if !$d(DOS)
    DOS   = 1
! endif
! if !$d(WIN16)
    WIN16 = 1
! endif
!endif

#
# Figure out default data alignment based on target
#
!if !$d(ALIGN)
! if $d(WIN32)
    ALIGN = 1
! else
    ALIGN = 1
! endif
!endif

!if $d(DOS) && $d(MT)
! error Cannot build multi-thread library for DOS.
!endif

!if $d(MODEL)
! if $(MODEL)!=s && $(MODEL)!=c && $(MODEL)!=m && $(MODEL)!=l && $(MODEL)!=h && $(MODEL)!=f && $(MODEL)!=t
!   error MODEL must be s, c, m, l, h, f or t
! endif
!endif

#--------------------------------------------------------------------
# dir & name components
#--------------------------------------------------------------------
!if $d(DLL)

! if !$d(BIDSNAME) && !$d(DIAGS)
!   error MUST DEFINE LIBRARY NAME, e.g. "MAKE MODEL=d BIDSNAME=YourName"
! endif
! if !$d(BIDSDLLNAME)
    BIDSDLLNAME= $(BIDSNAME)
!endif
! if $d(WIN32)
    KEY = $(MODEL)i             # Win32 flat or multithread DLL import library
! elif $d(OS2)
    KEY = i$(MODEL)             # OS2 DLL import library
! else
    KEY = i                     # Dos/Win16 DLL import library
! endif

!else

KEY = $(MODEL)                  # Static library just uses model

!endif  # if/else $d(DLL)

#! if $d(USERDLL)
#  KEY = $(KEY)u                 # Static or import library for use by dlls
#! endif

!if !$d(BIDSNAME)
  BIDSNAME  = bids
! if !$d(BIDSVER)
    BIDSVER = 50
! endif
!endif

#--------------------------------------------------------------------
# debug & diagnostic flags
#--------------------------------------------------------------------
!if $d(DEBUG)
  CDBG = -v -k -Od    # debug-info on, normal stack, no optimizations
!endif
!if 1 || $d(DEBUG)    # Leave public debug info in dll & strip to a .tds after
! if $d(WIN32)
    LDBG = -v
! else
    LDBG = -v -Vt
! endif
!endif

!if $d(DIAGS)         # default diags use precondition, check, trace & warn
  __DEBUG=2
  __TRACE=1
  __WARN=1
! if $d(DOS) && !$d(DLL)
    BD=db             # Bids Diag version mark (db for older dos libs)
! else
    BD=d              # Bids Diag version mark
! endif
  OD=d                # Owl  Diag version mark
!endif

#
# Build up compiler diag switches based on settings
#
!if $d(__DEBUG)
  CDIAG = -D__DEBUG=$(__DEBUG)
!endif
!if $d(__TRACE)
  CDIAG = $(CDIAG) -D__TRACE
!endif
!if $d(__WARN)
  CDIAG = $(CDIAG) -D__WARN
!endif

#--------------------------------------------------------------------
# dir & search paths, & precompiled headers
#--------------------------------------------------------------------

#
# BC tools BCBINDIR can be based on MAKEDIR if no BCROOT is defined
#
!if $d(BCROOT)
  BCBINDIR = $(BCROOT)\bin
!else
  BCBINDIR = $(MAKEDIR)
!endif

#
# Default bcroot to whatever is in bcroot.inc
#
!if !$d(BCROOT)
! include $(MAKEDIR)\bcroot.inc
!endif

#
# Where to find BC tools, libraries and include files
#
BCSRCDIR = $(BCROOT)\source
!if $d(WIN32)
  BCINCDIR = $(BCROOT)\include\win32;$(BCROOT)\include
!else
  BCINCDIR = $(BCROOT)\include\win16;$(BCROOT)\include
!endif
BCLIBDIR = $(BCROOT)\lib
BCBINDIR = $(BCROOT)\bin

#
# Where to find Bids dirs-- can set these for special layouts
# Build search paths differently if Bids include dir is not below BC's
#
!if !$d(BIDSSRCDIR)
  BIDSSRCDIR = $(BCSRCDIR)\classlib
!endif

!if !$d(BIDSINCDIR)
  BIDSINCDIR     = $(BCINCDIR)
  INCLUDE       = $(BCINCDIR)
  RCINCLUDEPATH = -i$(BCINCDIR)
!else
  INCLUDE       = $(BIDSINCDIR);$(BCINCDIR)
  RCINCLUDEPATH = -i$(BIDSINCDIR) -i$(BCINCDIR)
!endif

!if !$d(BIDSLIBDIR)
  BIDSLIBDIR = $(BCLIBDIR)
!endif

!if !$d(BIDSBINDIR)
  BIDSBINDIR = $(BCBINDIR)
!endif

BIDSOBJDIR = $(BIDSSRCDIR)\o\$(BD)$(KEY)   # Keep seperate diag/nondiag dirs

.PATH.obj = $(BIDSOBJDIR)
.PATH.res = $(BIDSOBJDIR)
.PATH.def = $(BIDSOBJDIR)
.PATH.lib = $(BIDSLIBDIR)
.PATH.cpp = $(BIDSSRCDIR)
.PATH.cpo = $(BIDSSRCDIR)\obsolete

#
# Define BIDSNOPCH to disable the use of Precompiled headers when building BIDS
#
!if !$d(BIDSNOPCH)
  CPCH= -H=$(BIDSLIBDIR)\$(BIDSNAME)$(BD)$(KEY).csm -H"pch.h" -D_BIDSPCH -D_WSYSPCH
! if $d(WIN32) || $(__MAKE__) > 0x0370 # -Hc is not valid in earlier 16-bit
    CPCH = $(CPCH) -Hc
! endif
!endif

#--------------------------------------------------------------------
# library names
#--------------------------------------------------------------------
!if $d(DLL)
! if $d(WIN32)
    BIDSDLL = $(BIDSBINDIR)\$(BIDSDLLNAME)$(BIDSVER)$(BD)$(MODEL).dll
! else
    BIDSDLL = $(BIDSBINDIR)\$(BIDSDLLNAME)$(BIDSVER)$(BD).dll
! endif
  BIDSDEF = bids.def
  BIDSRES = version.res  #bids.res
!endif
BIDSLIB = $(BIDSLIBDIR)\$(BIDSNAME)$(BD)$(KEY).lib

#--------------------------------------------------------------------
# Options which are memory model independent
#--------------------------------------------------------------------
!if $d(BI_REDEFINE_BOOL)
  CFLAGS = $(CFLAGS) -DBI_REDEFINE_BOOL
!endif

#--------------------------------------------------------------------
# Tools and options for Win32
#--------------------------------------------------------------------
!if $d(WIN32)
! if $d(BCC32I)
    CC     = $(BCBINDIR)\bcc32i      # Highly optimizing compiler
! else
    CC     = $(BCBINDIR)\bcc32       # Regular optimizing compiler
! endif
  RCC      = brcc32 -DWIN32          # Resource compiler
  LINK     = $(BCBINDIR)\tlink32     # Linker
  LIB      = $(BCBINDIR)\tlib        # Librarian
  IMPLIB   = $(BCBINDIR)\implib      # Import library generator
  TDSTRIP  = $(BCBINDIR)\tdstrp32    # Debug info extractor

  CFLAGS  = $(CFLAGS) -d -k- -O1gmpv # Optimizations
! if $d(CODEGUARD)                   # d=add data, c=add calls, t=check this
    CFLAGS = $(CFLAGS) -vGd -vGt
!   if $(CODEGUARD) == 2
      CFLAGS= $(CFLAGS) -vGc
!   endif
!  endif
  CFGFILE  = bcc32.cfg               # Name of compiler's config file
! if $d(DEBUG)
    LIBOPTS = /P512 /C
! else
    LIBOPTS = /P32 /0 /C
! endif

! if $d(DLL)
    CFLAGS = $(CFLAGS) -WDE -D_BUILDBIDSDLL -D_BUILDSVCSDLL -D_BUILDWSYSDLL
    LFLAGS = $(LDBG) -Tpd -s -c
    STDLIBS  = import32 cw32$(MT)i   # Libs for linking the DLL
!   if $d(CODEGUARD)
      STDLIBS  = cg32 $(STDLIBS)
!   endif
    STARTUP  = c0d32
! else
    CFLAGS = $(CFLAGS) #!TH why always windows? -W
! endif

! if $d(MT)
    CFLAGS = $(CFLAGS) -WM
! endif
! if $d(ALIGN)
    CFLAGS = $(CFLAGS) -a$(ALIGN)
! endif

#--------------------------------------------------------------------
# Tools and options for OS/2
#--------------------------------------------------------------------
!elif $d(OS2)
  CC       = $(BCBINDIR)\bcc         # Compiler
  RCC      = brcc                    # Resource compiler
  LINK     = $(BCBINDIR)\tlink       # Linker
  LIB      = $(BCBINDIR)\tlib        # Librarian
  IMPLIB   = $(BCBINDIR)\implib      # Import library generator
  TDSTRIP  = $(BCBINDIR)\tdstrip     # Debug info extractor

  CFLAGS   = $(CFLAGS) -d -k- -O1gmpv# Optimizations
  CFGFILE  = turboc.cfg              # Name of compiler's config file
! if $d(DEBUG)
    LIBOPTS = /P512 /C
! else
    LIBOPTS = /P32 /0 /C
! endif

! if $d(DLL)
    CFLAGS = $(CFLAGS) -WDE -D_BUILDBIDSDLL -D_BUILDSVCSDLL -D_BUILDWSYSDLL
    LFLAGS   = $(LDBG) -Tod -s -c
    STDLIBS  = c2$(MT)i os2     # Libs for linking the DLL
    STARTUP  = c02d
! else
    CFLAGS = $(CFLAGS) -W
! endif
! if $d(MT)
    CFLAGS = $(CFLAGS) -sm
! endif

#--------------------------------------------------------------------
# Tools and options for DOS / Win16
#--------------------------------------------------------------------
!elif $d(WIN16)
  CC      = $(BCBINDIR)\bcc          # Compiler
  RCC     = brcc                     # Resource compiler
  LINK    = $(BCBINDIR)\tlink        # Linker
  RLINK   = $(BCBINDIR)\rlink        # Resource linker
  LIB     = $(BCBINDIR)\tlib         # Librarian

  # implib needs -o switch in 16 bit for compatibility
  IMPLIB   = $(BCBINDIR)\implib -o   # Import library generator
  TDSTRIP  = $(BCBINDIR)\tdstrip     # Debug info extractor

  CFLAGS   = $(CFLAGS) -2- -d -k- -O1gmpv   # Optimizations
  CFLAGS   = $(CFLAGS) -m$(MODEL)           # Memory Model
! if $d(DLL) && $d(CODEGUARD)               # Enable compiler's CodeGuard support
    CFLAGS = $(CFLAGS) -vGd -vGt
!  endif

#! if $(MODEL) != s && $(MODEL) != m # Far data models can put strs in code seg
#    CFLAGS=$(CFLAGS) -dc
#! endif
! if $d(BIDSFARVTABLE)
    CFLAGS = $(CFLAGS) -D_BIDSFARVTABLE #;_RTLFARVTABLE
! endif
! if $d(DISABLE_EXCEPTIONS)
    CFLAGS = $(CFLAGS) -DDISABLE_EXCEPTIONS -x-
! endif
  CFGFILE = turboc.cfg

! if $d(DEBUG)
    LIBOPTS = /P512 /C
! else
    LIBOPTS = /P32 /0 /C
! endif

! if $d(DLL)                         # Build the 16bit DLL
    # Dll, explicit export, compat excptns
    CFLAGS = $(CFLAGS) -WDE -D_BUILDBIDSDLL -D_BUILDSVCSDLL -D_BUILDWSYSDLL -xc
    LFLAGS = $(LDBG) -Twd -n -s -c -C -Oc -Oi -Oa -Or
    STDLIBS  = import crtldll        # Libs for linking the DLL
!if $d(CODEGUARD)
    STDLIBS  = cg16 $(STDLIBS)
!endif
    STARTUP  = c0dl
! else
!   if $(MODEL) == h
      CFLAGS = $(CFLAGS) -D_Windows      # Fool headers to get windows incs
!   else
!     if $d(USERDLL)
        CFLAGS = $(CFLAGS) -WDE -xc      # Build static lib for use in DLLs
!     endif
!   endif
! endif
! if $d(ALIGN)
    CFLAGS = $(CFLAGS) -a$(ALIGN)
! endif

!else
! error No platform defined. Define one of: DOS, WIN16, WIN32, OS2
!endif

#--------------------------------------------------------------------
# Rules
#--------------------------------------------------------------------
.rc.res:
  $(RCC) $(RCINCLUDEPATH) -fo$@ $.

.cpp.obj:
  $(CC) {$& }

.cpo.obj:
  $(CC) -P {$& }

#-----------------------------------------------------------------------------
#
# Build the various file lists needed for dependency checking,
# and LIBing.
#
#   OBJS is the main list, conditionalized for the various targets
#       and options.
#
#   OBJS_LIB are the objs that only go in libs & implib, not the dll
#
#   OBJS_DLL are the objs that only go in the dll, not the libs
#
#   DEPOBJS is the list of object files for dependency checking
#
#   LIBOBJS is the list of object files for building the library
#
#-----------------------------------------------------------------------------

# Old Object Container files
#
!if $d(OBJECTS)
OBJS =           \
 PFXassoc.obj    \
 PFXbtree.obj    \
 PFXbtreeinn.obj \
 PFXbtreelfn.obj \
 PFXcollect.obj  \
 PFXcontain.obj  \
 PFXdbllist.obj  \
 PFXhashtbl.obj  \
 PFXldate.obj    \
 PFXlist.obj     \
 PFXltime.obj    \
 PFXobject.obj
!endif

# BIDS Container files
#
OBJS = $(OBJS)   \
 PFXbinimp.obj   \
 PFXheapsel.obj

!if $d(DOS) && !$d(DLL)
  OBJS = $(OBJS) PFXtimer.obj
!endif

# Class Library files
#
OBJS = $(OBJS)   \
 PFXcastable.obj \
 PFXdate.obj     \
 PFXdateio.obj   \
 PFXdatep.obj    \
 PFXobjstrm.obj  \
 PFXtime.obj     \
 PFXtimep.obj    \
 PFXversion.obj  \
 PFXcmdline.obj  \
 PFXfile.obj     \
 PFXtimeio.obj   \
 PFXfilename.obj

#!if $(MODEL)!=h                 # use these files for huge model
#OBJS = $(OBJS)   \
# PFXfilename.obj
#!endif

!if $d(WIN32) || $d(OS2)
  OBJS = $(OBJS) PFXthread.obj
!endif

# Services Library files. Most are not needed for BorlandC++
#
OBJS = $(OBJS)   \
  PFXmemory.obj

# WinSys Library files (some MSW specific)
#
!if $(MODEL)!=h
OBJS = $(OBJS)   \
 PFXcolor.obj
!else
!endif

!if !$d(OS2)

OBJS = $(OBJS)   \
 PFXexbase.obj   \
 PFXgeometrp.obj \
 PFXgeometrs.obj \
 PFXgeometry.obj \
 PFXsystem.obj   \
 PFXreglink.obj

! if $(MODEL)!=h                # do not compile thse when using huge model
OBJS = $(OBJS)   \
 PFXdiaginit.obj \
 PFXmsgthred.obj \
 PFXprofile.obj  \
 PFXuimetric.obj \
 PFXwsyscls.obj  \
 PFXwsysclsp.obj \
 PFXwsysclss.obj
! endif

!endif


OBJS_LIB =       \
 PFXlocale.obj   \
 PFXlocaleco.obj \
 PFXlocaleid.obj \
 PFXustring.obj  \
 PFXregheap.obj  \
 PFXregistry.obj   # needs ole2 & prev 3 need TLocaleString currently

OBJS_DLL =

!if $d(OBJECTS)
!if $d(TEMPLATES)
OBJS = $(OBJS)   \
 PFXbabstary.obj \
 PFXbdict.obj    \
 PFXbsortary.obj
!else
OBJS = $(OBJS)   \
 PFXabstarry.obj \
 PFXarray.obj    \
 PFXdeque.obj    \
 PFXdict.obj     \
 PFXsortarry.obj \
 PFXstack.obj
!endif
!endif

!if $d(DLL)
OBJS = $(OBJS) PFXclasmain.obj
!endif

!if $d(DLL) && $d(OBJECTS)

!if $d(TEMPLATES)
OBJS = $(OBJS) PFXtmpl2.obj
!else
OBJS = $(OBJS) PFXtmpl1.obj
!endif

!endif

!if $d(DLL) && !$d(OBJECTS) && !$d(OS2)
RESFILE = version.res
!endif

DEPOBJS = $(OBJS:PFX=) $(OBJS_LIB:PFX=) $(OBJS_DLL:PFX=)
!if $d(DLL)
LIBOBJS = $(OBJS_LIB:PFX=+)
LINKOBJS = $(OBJS:PFX=) $(OBJS_DLL:PFX=)
!else
LIBOBJS = $(OBJS:PFX=+) $(OBJS_LIB:PFX=+)
!endif

#-----------------------------------------------------------------------------
# These are the targets that we can make.
#
#   target: builds the target file
#
#   cfgfile: builds a .CFG file with the correct flags
#-----------------------------------------------------------------------------

!if $d(DLL)
DEFFILE=deffile
!endif

target: cfgfile $(BIDSLIB)

cfgfile:
  @-if not exist $(.PATH.cpp)\o\NUL md $(.PATH.cpp)\o
  @-if not exist $(.PATH.obj)\NUL md $(.PATH.obj)
  @copy &&|
-I$(INCLUDE)
-c -w $(CFLAGS) $(CDBG) $(CDIAG)
$(CPCH) -n$(.PATH.obj)
| $(CFGFILE) > NUL

!if $d(DLL)

$(.PATH.obj)\$(BIDSRES):
  $(RCC) $&.rc @&&|
$(RCINCLUDEPATH)
| -fo$@

!if $d(WIN32)

$(BIDSLIB): $(DEPOBJS) $(.PATH.obj)\$(BIDSDEF) $(.PATH.obj)\$(BIDSRES)
  @cd $(.PATH.obj)
  $(LINK) @&&|
$(LFLAGS) -L$(BCLIBDIR) $(STARTUP) +
$(LINKOBJS)
$(BIDSDLL)

$(STDLIBS)
$(BIDSDEF)
$(BIDSRES)
|
!if !$d(DIAGS)
  $(TDSTRIP) -s $(BIDSDLL)
!endif
  $(IMPLIB) $(BIDSLIB) $(BIDSDLL)
  $(LIB) $(LIBOPTS) $(BIDSLIB) @&&|
$(LIBOBJS)
|
  @-del $*.bak
  @cd $(.PATH.cpp)

$(.PATH.obj)\$(BIDSDEF):
  @copy &&|
LIBRARY     $(BIDSNAME)$(BIDSVER)$(BD) INITINSTANCE  #
DESCRIPTION 'Borland Class Library for C++'
#EXETYPE     WINDOWS
DATA        MULTIPLE NONSHARED
| $(.PATH.obj)\$(BIDSDEF) > NUL

!else  # ! WIN32

$(BIDSLIB): $(DEPOBJS) $(.PATH.obj)\$(BIDSDEF) $(.PATH.obj)\$(BIDSRES)
  @cd $(.PATH.obj)
  $(LINK) @&&|
$(LFLAGS) -L$(BCLIBDIR) $(STARTUP) +
$(LINKOBJS)
$(BIDSDLL)

$(STDLIBS)
$(BIDSDEF)
|
  $(RLINK) @&&|
-v -31 -k $(BIDSRES) $(BIDSDLL)
|
# $(IMPLIB) -i $(BIDSLIB) $(BIDSDEF) $(BIDSDLL) #
  $(IMPLIB) -i $(BIDSLIB) $(BIDSDLL)
  $(LIB) $(LIBOPTS) $(BIDSLIB) @&&|
$(LIBOBJS)
|
!if !$d(DIAGS)
  $(TDSTRIP) -s $(BIDSDLL)
!endif
  @-del $*.bak
  @cd $(.PATH.cpp)

$(.PATH.obj)\$(BIDSDEF):
  @copy &&|
LIBRARY     $(BIDSDLLNAME)$(BIDSVER)$(BD)
DESCRIPTION 'Borland Class Library for C++'
EXETYPE     WINDOWS
CODE        PRELOAD MOVEABLE DISCARDABLE
DATA        PRELOAD MOVEABLE SINGLE
HEAPSIZE    4096
EXPORTS
    WEP @1 RESIDENTNAME
| $(.PATH.obj)\$(BIDSDEF) > NUL

!endif # if/else WIN32

!else  # ! DLL

$(BIDSLIB): $(DEPOBJS)
  @-del $(BIDSLIB)
  @cd $(.PATH.obj)
  $(LIB) $(LIBOPTS) $(BIDSLIB) @&&|
$(LIBOBJS)
|
  @cd $(.PATH.cpp)

!endif

#-----------------------------------------------------------------------------
# We need an implicit rule for building .OBJ files, and a few
# explicit rules for special cases.
#
#   TIMER.OBJ is never built for windows, so doesn't need the
#       windows flags.
#-----------------------------------------------------------------------------
CFLAGS_WIN=-W $(CFLAGS_WIN)   

# For pre v5.0 tools, LPCWSTR is only defined via OLE headers
#
!if $(__MAKE__) <= 0x0370
 CFLAGS_WIN=$(CFLAGS_WIN) -DINC_OLE2
!endif
!if $(MODEL)==l && $d(CODEGUARD)
 CFLAGS_WIN=-vGd -vGt $(CFLAGS_WIN)
!endif

!if $(MODEL)!=h
file.obj: file.cpp
  $(CC) $(CFLAGS_WIN) {$& }

filename.obj: filename.cpp
  $(CC) $(CFLAGS_WIN) {$& }

memory.obj: memory.cpp
  $(CC) $(CFLAGS_WIN) {$& }

timeio.obj: timeio.cpp
  $(CC) $(CFLAGS_WIN) {$& }

exbase.obj: exbase.cpp
  $(CC) $(CFLAGS_WIN) {$& }

geometrp.obj: geometrp.cpp
  $(CC) $(CFLAGS_WIN) {$& }

geometrs.obj: geometrs.cpp
  $(CC) $(CFLAGS_WIN) {$& }

geometry.obj: geometry.cpp
  $(CC) $(CFLAGS_WIN) {$& }

system.obj: system.cpp
  $(CC) $(CFLAGS_WIN) {$& }

reglink.obj: reglink.cpp
  $(CC) $(CFLAGS_WIN) {$& }

locale.obj: locale.cpp
  $(CC) $(CFLAGS_WIN) {$& }

localeco.obj: localeco.cpp
  $(CC) $(CFLAGS_WIN) {$& }

localeid.obj: localeid.cpp
  $(CC) $(CFLAGS_WIN) {$& }

ustring.obj: ustring.cpp
  $(CC) $(CFLAGS_WIN) {$& }

regheap.obj: regheap.cpp
  $(CC) $(CFLAGS_WIN) {$& }

registry.obj: registry.cpp
  $(CC) $(CFLAGS_WIN) {$& }

!endif

color.obj: color.cpp
  $(CC) $(CFLAGS_WIN) {$& }

diaginit.obj: diaginit.cpp
  $(CC) $(CFLAGS_WIN) {$& }

msgthred.obj: msgthred.cpp
  $(CC) $(CFLAGS_WIN) {$& }

profile.obj: profile.cpp
  $(CC) $(CFLAGS_WIN) {$& }

uimetric.obj: uimetric.cpp
  $(CC) $(CFLAGS_WIN) {$& }

wsyscls.obj: wsyscls.cpp
  $(CC) $(CFLAGS_WIN) {$& }

wsysclss.obj: wsysclss.cpp
  $(CC) $(CFLAGS_WIN) {$& }

wsysclsp.obj: wsysclsp.cpp
  $(CC) $(CFLAGS_WIN) {$& }

