- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
(extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
BT game source (never mixed into CODE/). Round 1-3 state:
* 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
(BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
since 1996.
* BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
its binary-recorded line 400 exactly.
* BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
(Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
TeamScore=12 flagged [T4]).
* MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
(VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
the period compiler is the drift detector).
* Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
(per-TU verification sweep under authentic OPT.MAK flags).
* README: corrected roadmap - MECH.HPP is the capstone grown with the mech
TU reconstructions; BTREG.CPP green = the header-family milestone.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
639 lines
22 KiB
Makefile
639 lines
22 KiB
Makefile
#--------------------------------------------------------------------------#
|
|
# #
|
|
# MAKEFILE for Class Libraries #
|
|
# #
|
|
# Copyright (c) Borland International 1991, 1994 #
|
|
# All Rights Reserved #
|
|
# #
|
|
# Usage: #
|
|
# #
|
|
# maker options #
|
|
# #
|
|
# Options: #
|
|
# #
|
|
# -DDOS, -DWIN32, -DOS2 Specifies target system #
|
|
# #
|
|
# -DMT Build multi-thread version #
|
|
# #
|
|
# -DMODEL=x Specifies memory model for DOS library. #
|
|
# Required when building DOS library. #
|
|
# Must be s, c, m, l, or h. #
|
|
# #
|
|
# -DNAME=xxx Base name of the target library or DLL #
|
|
# Always required. #
|
|
# #
|
|
# -DSUFFIX=xxx Suffix to add to the base name when #
|
|
# building a DLL. For example, -DSUFFIX=d is #
|
|
# used when building the DBG DLLs. This puts #
|
|
# 'd' into the name of the dll and the name #
|
|
# of the import library. #
|
|
# #
|
|
# -DDLL Build a DLL. #
|
|
# #
|
|
# -DDBG Build the debugging version of the target. #
|
|
# #
|
|
# -DOBJECTS Also build the object-based containers #
|
|
# #
|
|
# -DBIDSFARVTABLE moves class vtables out of dgroup #
|
|
# #
|
|
# 16-bit non-diagnostic static libraries: #
|
|
# make -r -DDOS -DMODEL=s -DNAME=bidss #
|
|
# make -r -DDOS -DMODEL=c -DNAME=bidsc #
|
|
# make -r -DDOS -DMODEL=m -DNAME=bidsm #
|
|
# make -r -DDOS -DMODEL=l -DNAME=bidsl #
|
|
# make -r -DDOS -DMODEL=h -DNAME=bidsh #
|
|
# #
|
|
# 16-bit diagnostic static libraries: #
|
|
# make -r -DDOS -DMODEL=s -DDBG -DNAME=bidsdbs #
|
|
# make -r -DDOS -DMODEL=c -DDBG -DNAME=bidsdbc #
|
|
# make -r -DDOS -DMODEL=m -DDBG -DNAME=bidsdbm #
|
|
# make -r -DDOS -DMODEL=l -DDBG -DNAME=bidsdbl #
|
|
# make -r -DDOS -DMODEL=h -DDBG -DNAME=bidsdbh #
|
|
# #
|
|
# 16-bit DLLs: #
|
|
# make -r -DDOS -DDLL -DNAME=bids #
|
|
# make -r -DDOS -DDLL -DDBG -DNAME=bids -DSUFFIX=d #
|
|
# #
|
|
# WIN32 libraries: #
|
|
# make -r -DWIN32 -DNAME=bidsf #
|
|
# make -r -DWIN32 -DDBG -DNAME=bidsdf #
|
|
# #
|
|
# WIN32 DLLs: #
|
|
# make -r -DWIN32 -DDLL -DNAME=bids -DSUFFIX=f #
|
|
# make -r -DWIN32 -DDLL -DDBG -DNAME=bids -DSUFFIX=df #
|
|
# #
|
|
# OS/2 libraries: #
|
|
# make -r -DOS2 -DNAME=bids2 #
|
|
# make -r -DOS2 -DDBG -DNAME=bidsdb2 #
|
|
# #
|
|
# OS/2 DLLs: #
|
|
# make -r -DOS2 -DDLL -DNAME=bids -DSUFFIX=2 #
|
|
# make -r -DOS2 -DDLL -DDBG -DNAME=bids -DSUFFIX=d2 #
|
|
# #
|
|
#--------------------------------------------------------------------------#
|
|
|
|
.autodepend
|
|
.swap
|
|
|
|
!if !$d(DOS) && !$d(WIN32) && !$d(OS2)
|
|
!error Must specify target system DOS, WIN32, or OS2
|
|
!endif
|
|
|
|
!if $d(DOS) && !($d(MODEL) || $d(DLL))
|
|
!error When building DOS libraries, must specify MODEL or DLL
|
|
!endif
|
|
|
|
!if $d(MODEL) && ($d(OS2) || $d(WIN32))
|
|
!error When building OS2 or WIN32 libraries, cannot specify MODEL
|
|
!endif
|
|
|
|
!if $d(DLL) && !$d(NAME)
|
|
!error Must specify a NAME for a DLL.
|
|
!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
|
|
!Error MODEL must be s, c, m, l, or h
|
|
!endif
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# Set up the names of the tools to be used. If these macros have #
|
|
# already been defined in the environment, use those definitions. #
|
|
# #
|
|
# BCC is the compiler. #
|
|
# MAKE is make. #
|
|
# TLIB is the librarian. #
|
|
# TLINK is the linker. #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
|
|
!if !$d(BCC)
|
|
!if $d(WIN32)
|
|
BCC = bcc32 +turboc.cfg -v- -x
|
|
!elif $d(OS2)
|
|
BCC = bcc
|
|
!else
|
|
BCC = bcc -2- -x
|
|
!endif
|
|
!endif
|
|
|
|
!if !$d(MAKE)
|
|
!if $d(WIN32)
|
|
MAKE = maker
|
|
!else
|
|
MAKE = make
|
|
!endif
|
|
!endif
|
|
|
|
!if !$d(TLIB)
|
|
!if $d(WIN32)
|
|
TLIB = tlib /C
|
|
!else
|
|
TLIB = tlib /C
|
|
!endif
|
|
!endif
|
|
|
|
!if !$d(TLINK)
|
|
!if $d(WIN32)
|
|
TLINK = tlink32
|
|
!else
|
|
TLINK = tlink
|
|
!endif
|
|
!endif
|
|
|
|
!if !$d(BRCC)
|
|
!if $d(WIN32)
|
|
BRCC = brcc32 -dWIN32
|
|
!else
|
|
BRCC = brcc
|
|
!endif
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# Set up options for the various tools #
|
|
# #
|
|
# WFLAG does some magic to produce a library that works for both #
|
|
# DOS and Windows. #
|
|
# #
|
|
# WLFLAG is a variation of WFLAG for the implib objs #
|
|
# #
|
|
# DFLAG contains the debugging switches that will be passed to the #
|
|
# compiler through the .CFG file. #
|
|
# #
|
|
# LFLAG contains the switches that will be passed to TLIB on the #
|
|
# command line. #
|
|
# #
|
|
# XFLAG handles _RTLDLL, which is passed to the compiler in the #
|
|
# .CFG file and determines whether classes are to be exported. #
|
|
# It also handle far vtable options when they are enabled. #
|
|
# #
|
|
# LINKOPTS is the list of options for the linker. #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
!if $d(DOS) && $d(DLL)
|
|
WFLAG = -WDE -xc
|
|
WLFLAG = -Y
|
|
!elif $d(DOS) && ($(MODEL) == s || $(MODEL) == c )
|
|
WFLAG = -WE
|
|
!elif $d(DOS) && ($(MODEL) == m || $(MODEL) == l)
|
|
WFLAG = -Y
|
|
!endif
|
|
|
|
!if $d(MT)
|
|
!if $d(OS2)
|
|
MTFLAG = -sm
|
|
!else
|
|
MTFLAG = -WM
|
|
!endif
|
|
!endif
|
|
|
|
!if $d(DBG)
|
|
DFLAG = -v- -D__DEBUG=2 -D__WARN -D__TRACE
|
|
LFLAG = /0
|
|
!else
|
|
DFLAG = -v- -D__DEBUG=0
|
|
LFLAG = /0
|
|
!endif
|
|
|
|
!if $d(DLL)
|
|
XFLAG = -D_RTLDLL -D_BUILDBIDSDLL
|
|
!endif
|
|
|
|
!if $d(BIDSFARVTABLE)
|
|
XFLAG = $(XFLAG) -D_BIDSFARVTABLE #;_RTLFARVTABLE if RTL is rebuilt too
|
|
!endif
|
|
|
|
!if $d(DOS)
|
|
!if $d(DLL)
|
|
MFLAG = -ml
|
|
!else
|
|
MFLAG = -m$(MODEL)
|
|
!endif
|
|
!endif
|
|
|
|
!if $d(DOS)
|
|
LINKOPTS = /C/c/s/Twd/Oc/Oi/Oa/Or
|
|
!elif $d(OS2)
|
|
LINKOPTS = /c/s/Tod
|
|
!elif $d(WIN32)
|
|
LINKOPTS = /c/s/Tpd
|
|
!endif
|
|
|
|
!if $d(DLL)
|
|
DEFFILE=deffile
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# Build the macros to provide the startup code and library names #
|
|
# for building DLLs. #
|
|
# #
|
|
# STARTUP is the startup code. #
|
|
# #
|
|
# LINKLIBS is the list of libraries. #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
!if !$d(DLL)
|
|
|
|
TARGETLIB = $(NAME)
|
|
|
|
!else
|
|
|
|
VER = 45
|
|
|
|
!if $d(DLL) && $d(WIN32) && $d(DBG)
|
|
TARGETFILE = bds$(VER)$(SUFFIX) # name is too long if we use 'bids'
|
|
!else
|
|
TARGETFILE = $(NAME)$(VER)$(SUFFIX)
|
|
!endif
|
|
TARGETLIB = $(NAME)$(SUFFIX)i.lib
|
|
|
|
!if $d(DOS)
|
|
|
|
STARTUP = $(LIB)\c0dl.obj
|
|
LINKLIBS = $(LIB)\import.lib $(LIB)\crtldll.lib
|
|
|
|
!elif $d(OS2)
|
|
|
|
STARTUP = $(LIB)\c02d.obj
|
|
|
|
!if $d(MT)
|
|
LINKLIBS = $(LIB)\c2mti.lib $(LIB)\os2.lib
|
|
!else
|
|
LINKLIBS = $(LIB)\c2i.lib $(LIB)\os2.lib
|
|
!endif
|
|
|
|
!else
|
|
|
|
STARTUP = $(LIB)\c0d32.obj
|
|
|
|
!if $d(MT)
|
|
LINKLIBS = $(LIB)\cw32mti.lib $(LIB)\import32.lib
|
|
!else
|
|
LINKLIBS = $(LIB)\cw32i.lib $(LIB)\import32.lib
|
|
!endif
|
|
|
|
!endif
|
|
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# OBJDIRLIST is the list of subdirectories under the OBJ directory #
|
|
# #
|
|
# This is used by dirs to be sure all the subdirectories are #
|
|
# present and by clean to remove all OBJ files #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
!if $d(DOS)
|
|
OBJDIRLIST = s ds c dc m dm l dl h dh i di
|
|
!endif
|
|
|
|
!if $d(WIN32)
|
|
OBJDIRLIST = 32 d32 i32 di32
|
|
!endif
|
|
|
|
!if $d(OS2)
|
|
OBJDIRLIST = 2 d2 i2 di2
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# Set up the paths that will be needed later. #
|
|
# #
|
|
# INCLUDE is the full path to the compiler's include files and #
|
|
# to the classlib's include files. If it is not defined in the #
|
|
# environment, it is assumed to be under the directory where the #
|
|
# compiler was installed in the subdirectory INCLUDE. #
|
|
# #
|
|
# LIB is the full path to the compiler's libraries. If it is not #
|
|
# defined in the environment, it is assumed to be under the #
|
|
# directory where the compiler was installed in the subdirectory #
|
|
# LIB. #
|
|
# #
|
|
# SOURCEDIR is the full path to the source code. If it is not #
|
|
# defined in the environment, it is assumed to be under the #
|
|
# directory where the compiler was installed in the subdirectory #
|
|
# SOURCE\CLASSLIB. #
|
|
# #
|
|
# ROOTDIR is the full path to the directory in which the makefile #
|
|
# is located. If it is not defined in the environment, it is #
|
|
# assumed to be the same as SOURCEDIR. #
|
|
# #
|
|
# LIBDIR is the full path to the directory in which the libraries #
|
|
# should be placed when they are built. If it is not defined in #
|
|
# the environment, it is assumed to be the same as the directory #
|
|
# specified by LIB. #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
!if !$d(BCROOT)
|
|
!if $d(OS2)
|
|
BCROOT=$(MAKEDIR)\..
|
|
!else
|
|
!include $(MAKEDIR)\bcroot.inc
|
|
!endif
|
|
!endif
|
|
|
|
!if !$d(INCLUDE)
|
|
INCLUDE = $(BCROOT)\include
|
|
!endif
|
|
|
|
!if !$d(RCINCLUDE)
|
|
RCINCLUDE = $(BCROOT)\include
|
|
!endif
|
|
|
|
!if !$d(LIB)
|
|
LIB = $(BCROOT)\lib
|
|
!endif
|
|
|
|
!if !$d(SOURCEDIR)
|
|
SOURCEDIR = $(BCROOT)\source\classlib
|
|
!endif
|
|
|
|
!if !$d(LIBDIR)
|
|
LIBDIR = $(LIB)
|
|
!endif
|
|
|
|
!if !$d(ROOTDIR)
|
|
ROOTDIR = $(SOURCEDIR)
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# Set up the various paths that MAKE will use #
|
|
# #
|
|
# OBJDIR will only have been defined when we've decide on a target #
|
|
# platform and a set of options. Since .PATH.obj isn't used in any #
|
|
# context in which DBG and SUFFIX haven't been defined, it's ok #
|
|
# to use DBG and SUFFIX to define it. #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
.PATH.cpp = $(SOURCEDIR)
|
|
.PATH.cpo = $(SOURCEDIR)\obsolete
|
|
|
|
.PATH.lib = $(LIBDIR)
|
|
|
|
.PATH.rc = $(SOURCEDIR)
|
|
|
|
!if $d(DOS)
|
|
OBJDIR=$(MODEL)
|
|
!elif $d(OS2)
|
|
OBJDIR=2
|
|
!else
|
|
OBJDIR=32
|
|
!endif
|
|
|
|
!if $d(DLL)
|
|
OBJDIR=i$(OBJDIR)
|
|
!endif
|
|
|
|
!if $d(DBG)
|
|
.PATH.obj = $(SOURCEDIR)\d$(OBJDIR)
|
|
!else
|
|
.PATH.obj = $(SOURCEDIR)\$(OBJDIR)
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# 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 #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
!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
|
|
|
|
OBJS = $(OBJS) \
|
|
PFXbinimp.obj \
|
|
PFXcastable.obj \
|
|
PFXdate.obj \
|
|
PFXdateio.obj \
|
|
PFXdatep.obj \
|
|
PFXfile.obj \
|
|
PFXheapsel.obj \
|
|
PFXobjstrm.obj \
|
|
PFXtime.obj \
|
|
PFXtimep.obj \
|
|
PFXtimeio.obj \
|
|
PFXversion.obj
|
|
|
|
!if !$d(OS2)
|
|
OBJS = $(OBJS) \
|
|
PFXexbase.obj \
|
|
PFXgeometry.obj \
|
|
PFXgeomstrm.obj \
|
|
PFXreglink.obj
|
|
!endif
|
|
|
|
OBJS_LIB = \
|
|
PFXlocale.obj \
|
|
PFXlocaleco.obj \
|
|
PFXlocaleid.obj \
|
|
PFXregheap.obj \
|
|
PFXustring.obj
|
|
|
|
OBJS_DLL =
|
|
|
|
!if $d(DOS) && !$d(DLL)
|
|
OBJS = $(OBJS) PFXtimer.obj
|
|
!endif
|
|
|
|
!if $d(WIN32) || $d(OS2)
|
|
OBJS = $(OBJS) PFXthread.obj
|
|
!endif
|
|
|
|
!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) && $(DOS)
|
|
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
|
|
|
|
#PFXOBJS = $(OBJS:SFX=)
|
|
#SFXOBJS = $(OBJS:PFX=)
|
|
|
|
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 #
|
|
# #
|
|
# dirs: makes sure all the necessary subdirectories are present #
|
|
# #
|
|
# clean: deletes the .OBJ files #
|
|
# #
|
|
# config: builds a .CFG file with the correct flags #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
target: config $(DEFFILE) $(DEPOBJS) $(RESFILE)
|
|
!if !$d(DLL)
|
|
cd $(.PATH.obj)
|
|
$(TLIB) $(LFLAG) $(.PATH.lib)\$(TARGETLIB) @&&!
|
|
$(LIBOBJS)
|
|
!
|
|
cd $(ROOTDIR)
|
|
!else
|
|
cd $(.PATH.obj)
|
|
$(TLINK) @&&!
|
|
$(STARTUP)+
|
|
$(LINKOBJS)
|
|
$(TARGETFILE).dll
|
|
$(LINKOPTS) $(.PATH.lib)\$(TARGETFILE).map
|
|
$(LINKLIBS)
|
|
temp.def
|
|
$(RESFILE)
|
|
!
|
|
!if $(TARGET) == DOS
|
|
rc -30 $(TARGETFILE)
|
|
!endif
|
|
implib $(TARGETLIB) $(TARGETFILE).dll
|
|
tlib $(LFLAG) $(TARGETLIB) @&&|
|
|
$(LIBOBJS)
|
|
|
|
|
cd $(ROOTDIR)
|
|
copy $(.PATH.obj)\$(TARGETFILE).dll $(.PATH.lib)
|
|
del $(.PATH.obj)\$(TARGETFILE).dll
|
|
copy $(.PATH.obj)\$(TARGETLIB) $(.PATH.lib)
|
|
del $(.PATH.obj)\$(TARGETLIB)
|
|
!endif
|
|
|
|
|
|
dirs:
|
|
-for %d in ($(OBJDIRLIST)) do md $(SOURCEDIR)\%d
|
|
|
|
clean:
|
|
-for %d in ($(OBJDIRLIST)) do del $(SOURCEDIR)\%d\*.obj
|
|
|
|
config:
|
|
@-if not exist $(.PATH.obj)\..\NUL md $(.PATH.obj)\..
|
|
@-if not exist $(.PATH.obj)\NUL md $(.PATH.obj)
|
|
@type &&!
|
|
-c -n$(.PATH.obj) -I$(INCLUDE) $(DFLAG) $(XFLAG) $(MFLAG) $(TFLAG)
|
|
! >turboc.cfg
|
|
|
|
deffile:
|
|
!if $d(DOS)
|
|
@echo >$(.PATH.obj)\temp.def LIBRARY $(TARGETFILE)
|
|
!else
|
|
@echo >$(.PATH.obj)\temp.def LIBRARY $(TARGETFILE) INITINSTANCE
|
|
!endif
|
|
@echo >>$(.PATH.obj)\temp.def DESCRIPTION 'Parametrized Class Library for BC++'
|
|
!if $d(DOS)
|
|
@echo >>$(.PATH.obj)\temp.def EXETYPE WINDOWS
|
|
@echo >>$(.PATH.obj)\temp.def CODE PRELOAD MOVEABLE DISCARDABLE
|
|
@echo >>$(.PATH.obj)\temp.def DATA PRELOAD MOVEABLE SINGLE
|
|
!else
|
|
@echo >>$(.PATH.obj)\temp.def DATA MULTIPLE NONSHARED
|
|
!endif
|
|
@echo >>$(.PATH.obj)\temp.def HEAPSIZE 4096
|
|
|
|
|
|
#--------------------------------------------------------------------#
|
|
# #
|
|
# 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. #
|
|
# #
|
|
#--------------------------------------------------------------------#
|
|
|
|
timer.obj: timer.cpp
|
|
$(BCC) $(SOURCEDIR)\timer
|
|
|
|
tmpl1.obj: tmplinst.cpp
|
|
$(BCC) -o$(.PATH.obj)\tmpl1.obj $(WFLAG) $(.PATH.cpp)\tmplinst
|
|
|
|
tmpl2.obj: tmplinst.cpp
|
|
$(BCC) -o$(.PATH.obj)\tmpl2.obj -DTEMPLATES $(WFLAG) $(.PATH.cpp)\tmplinst
|
|
|
|
.cpo.obj:
|
|
$(BCC) $(WFLAG) -P {$< }
|
|
|
|
.cpp.obj:
|
|
$(BCC) $(WFLAG) $(MTFLAG) {$* }
|
|
|
|
.rc.res:
|
|
$(BRCC) -i$(RCINCLUDE) $*.rc
|
|
copy $*.res $(.PATH.obj)
|
|
del $*.res
|
|
|
|
!if $d(DOS) && $d(DLL)
|
|
$(OBJS_LIB:PFX=):
|
|
$(BCC) $(WLFLAG) $(MTFLAG) -D_BIDSDLL -U_BUILDBIDSDLL $(.PATH.cpp)\$&.cpp
|
|
!endif
|