- 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>
999 lines
25 KiB
Makefile
999 lines
25 KiB
Makefile
#-----------------------------------------------------------------------------
|
|
# ObjectWindows - (C) Copyright 1991, 1993 by Borland International
|
|
#
|
|
# MAKEFILE for ObjectWindows Libraries
|
|
#
|
|
# Defines:
|
|
# MODEL=<d|s|m|l|f> one of: dll(default), small, medium, large or flat
|
|
# WIN32 enables win32 static (flat) or DLL
|
|
# DIAGS enables runtime diagnostics (adds 'd' to lib name before 'w')
|
|
# DEBUG enables debug info for TDW & TD32
|
|
# NOOWLPCH disables precompiled headers for owl
|
|
# OWLSECTION enables sectioning of sources into multiple small objs
|
|
# OWLNAME=Xxx lib & DLL name base, Defaults to 'Owl'. Req. for non-diag DLLs
|
|
# OWLVER=nnn version for Owl DLL. Defaults to 250. Req. for non-diag DLLs
|
|
# USERDLL builds Owl for use in a user DLL (adds 'u' to lib name after
|
|
# model)
|
|
# OWLFARVTABLE moves owl class vtables out of dgroup
|
|
# DISABLE_EXCEPTIONS disables exception use in Owl & in macros
|
|
#
|
|
# Define these for alternate owl build directories:
|
|
# OWLSRCDIR defaults to: $(BCROOT)\source\owl
|
|
# OWLINCDIR defaults to: $(BCROOT)\include
|
|
# OWLLIBDIR defaults to: $(BCROOT)\lib
|
|
# OWLBINDIR defaults to: $(BCROOT)\bin
|
|
#
|
|
# Standard builds:
|
|
# make MODEL=s -DOWLSECTION small model library (owlws.lib)
|
|
# make MODEL=m -DOWLSECTION medium model library (owlwm.lib)
|
|
# make MODEL=l -DOWLSECTION large model library (owlwl.lib)
|
|
# make OWLNAME=Owl OWLVER=250 16bit DLL (owlwi.lib, owl250.dll)
|
|
# make -DWIN32 -DOWLSECTION 32bit flat model library (owlwf.lib)
|
|
# make -DWIN32 OWLNAME=Owl OWLVER=250 32bit DLL (owlwfi.lib, owl250f.dll)
|
|
#
|
|
# Diagnostic builds:
|
|
# make MODEL=s -DOWLSECTION -DDIAGS small model diag library (owldws.lib)
|
|
# make MODEL=m -DOWLSECTION -DDIAGS medium model diag library (owldwm.lib)
|
|
# make MODEL=l -DOWLSECTION -DDIAGS large model diag library (owldwl.lib)
|
|
# make -DDIAGS 16bit diag DLL (owldwi.lib, owl250d.dll)
|
|
# make -DWIN32 -DOWLSECTION -DDIAGS 32bit flat model diag lib (owldwf.lib)
|
|
# make -DWIN32 -DDIAGS 32bit diag DLL (owldwfi.lib, owl250df.dll)
|
|
#
|
|
# Notes:
|
|
# The owl16.ord file should be maintained if Owl functions are changed
|
|
# otherwise warnings will be generated during the DLL link.
|
|
#
|
|
#-----------------------------------------------------------------------------
|
|
|
|
.autodepend
|
|
.cacheautodepend
|
|
.swap
|
|
|
|
#--------------------------------------------------------------------
|
|
# fill in defaults
|
|
#--------------------------------------------------------------------
|
|
!if !$d(MODEL) || $(MODEL) == d
|
|
DLL = 1
|
|
!endif
|
|
!if $(MODEL) == f
|
|
WIN32 = 1
|
|
!endif
|
|
!if $d(WIN32)
|
|
MODEL = f
|
|
!elif $d(DLL) || !$d(MODEL)
|
|
MODEL = l
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------
|
|
# dir & name components
|
|
#--------------------------------------------------------------------
|
|
!if $d(DLL)
|
|
|
|
! if !$d(OWLNAME) && !$d(DIAGS)
|
|
! error MUST DEFINE LIBRARY NAME, e.g. "MAKE MODEL=d OWLNAME=YourName"
|
|
! endif
|
|
! if $d(WIN32)
|
|
KEY = wfi # 32bit DLL import library
|
|
! else
|
|
KEY = wi # 16bit DLL import library
|
|
! endif
|
|
|
|
!else
|
|
|
|
KEY = w$(MODEL) # Static library
|
|
|
|
!endif # if/else $d(DLL)
|
|
|
|
! if $d(USERDLL)
|
|
KEY = $(KEY)u # Static or import library for use by dlls
|
|
! endif
|
|
|
|
!if !$d(OWLNAME)
|
|
OWLNAME=Owl
|
|
! if !$d(OWLVER)
|
|
OWLVER=250
|
|
! 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
|
|
BD=d # Use Bids Diag version when Owl lib is diag
|
|
OD=d # Owl libs & dll get a 'd' for Diag versions
|
|
!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)
|
|
#BCROOT = $(MAKEDIR)\..
|
|
!include $(MAKEDIR)\bcroot.inc
|
|
!endif
|
|
|
|
#
|
|
# Where to find Owl dirs-- can set these for special layouts
|
|
#
|
|
!if !$d(OWLSRCDIR)
|
|
OWLSRCDIR = $(BCROOT)\source\owl
|
|
!endif
|
|
|
|
!if !$d(OWLINCDIR)
|
|
OWLINCDIR = $(BCROOT)\include
|
|
!endif
|
|
|
|
!if !$d(OWLLIBDIR)
|
|
OWLLIBDIR = $(BCROOT)\lib
|
|
!endif
|
|
|
|
!if !$d(OWLBINDIR)
|
|
OWLBINDIR = $(BCROOT)\bin
|
|
!endif
|
|
|
|
#
|
|
# Where to find BC tools, libraries and include files
|
|
#
|
|
BCINCDIR = $(BCROOT)\include
|
|
BCLIBDIR = $(BCROOT)\lib
|
|
|
|
#
|
|
# Build search paths differently if Owl include dir is not below BC's
|
|
#
|
|
!if "$(OWLINCDIR)" == "$(BCINCDIR)"
|
|
INCLUDE = $(BCINCDIR)
|
|
RCINCLUDEPATH = -i$(BCINCDIR)
|
|
!else
|
|
INCLUDE = $(OWLINCDIR);$(BCINCDIR)
|
|
RCINCLUDEPATH = -i$(OWLINCDIR) -i$(BCINCDIR)
|
|
!endif
|
|
|
|
OWLOBJDIR = $(OWLSRCDIR)\object\$(OD)$(KEY) # Keep seperate diag/nondiag dirs
|
|
|
|
.PATH.obj = $(OWLOBJDIR)
|
|
.PATH.res = $(OWLOBJDIR)
|
|
.PATH.def = $(OWLOBJDIR)
|
|
.PATH.lib = $(OWLLIBDIR)
|
|
.PATH.cpp = $(OWLSRCDIR)
|
|
|
|
#
|
|
# Define NOOWLPCH to disable the use of Precompiled headers when building Owl
|
|
#
|
|
!if !$d(NOOWLPCH)
|
|
CPCH= -H=$(OWLLIBDIR)\$(OWLNAME)$(OD)$(KEY).csm -H"owl/owlpch.h" -D_OWLPCH
|
|
! if $d(WIN32)
|
|
CPCH= $(CPCH) -Hc
|
|
! endif
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------
|
|
# library names
|
|
#--------------------------------------------------------------------
|
|
!if $d(DLL)
|
|
! if $d(WIN32)
|
|
OWLDLL = $(OWLBINDIR)\$(OWLNAME)$(OWLVER)$(OD)f.dll
|
|
! else
|
|
OWLDLL = $(OWLBINDIR)\$(OWLNAME)$(OWLVER)$(OD).dll
|
|
! endif
|
|
OWLDEF = owl.def
|
|
OWLRES = owl.res
|
|
!endif
|
|
OWLLIB = $(OWLLIBDIR)\$(OWLNAME)$(OD)$(KEY).lib
|
|
|
|
#--------------------------------------------------------------------
|
|
# tools and options for 32bit
|
|
#--------------------------------------------------------------------
|
|
!if $d(WIN32)
|
|
BCC = $(BCBINDIR)\bcc32 # Compiler
|
|
BRCC = brcc32 # Resource compiler
|
|
BCCASM = $(BCBINDIR)\tasm32 # Assembler
|
|
TLINK = $(BCBINDIR)\tlink32 # Linker
|
|
TLIB = $(BCBINDIR)\tlib # Librarian
|
|
IMPLIB = $(BCBINDIR)\implib # Import library generator
|
|
TDSTRIP = $(BCBINDIR)\tdstrp32 # Debug info extractor
|
|
|
|
COPTS = -d -k- -O1gmpv # Optimizations
|
|
CFGFILE = bcc32.cfg # Name of compiler's config file
|
|
! if $d(DEBUG)
|
|
TLIBOPTS = /P512
|
|
! else
|
|
TLIBOPTS = /P32 /0
|
|
! endif
|
|
|
|
! if $d(DLL)
|
|
CWIN = -WDE -D_BUILDOWLDLL
|
|
LFLAGS = $(LDBG) -Tpd -aa -s -c
|
|
! if !$d(BIDSILIB)
|
|
BIDSILIB = bids$(BD)fi
|
|
! endif
|
|
STDLIBS = import32 cw32i # Libs for linking the Owl DLL
|
|
! else
|
|
CWIN = -W
|
|
! endif
|
|
|
|
#--------------------------------------------------------------------
|
|
# tools and options for 16bit
|
|
#--------------------------------------------------------------------
|
|
!else
|
|
BCC = $(BCBINDIR)\bcc # Compiler
|
|
BRCC = brcc # Resource compiler
|
|
BCCASM = $(BCBINDIR)\tasm # Assembler
|
|
TLINK = $(BCBINDIR)\tlink # Linker
|
|
TLIB = $(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
|
|
|
|
CMDL = -m$(MODEL)
|
|
COPTS = -3 -d -k- -O1gmpv # Optimizations
|
|
|
|
! if $(MODEL) != s && $(MODEL) != m # Large models can put strs in code seg
|
|
COPTS = $(COPTS) -dc
|
|
! endif
|
|
! if $(MODEL) == s # Small model turns off some options
|
|
DISABLE_EXCEPTIONS = 1
|
|
COPTS = $(COPTS) -DNO_GDI_ORPHAN_CONTROL
|
|
! endif
|
|
! if $d(OWLFARVTABLE)
|
|
COPTS = $(COPTS) -D_OWLFARVTABLE;_BIDSFARVTABLE #;_RTLFARVTABLE
|
|
! endif
|
|
! if $d(DISABLE_EXCEPTIONS)
|
|
COPTS = $(COPTS) -DDISABLE_EXCEPTIONS -x-
|
|
! endif
|
|
CFGFILE = turboc.cfg
|
|
|
|
! if $d(DEBUG)
|
|
TLIBOPTS = /P512
|
|
! else
|
|
TLIBOPTS = /P32 /0
|
|
! endif
|
|
|
|
! if $d(DLL) # Build the 16bit Owl DLL
|
|
# Dll, explicit export, far data into seg named OWL_FARDATA, compat excptns
|
|
CWIN = -WDE -D_BUILDOWLDLL -zEOWL_FARDATA -xc
|
|
LFLAGS = $(LDBG) -Twd -n -s -c -C -Oc -Oi -Oa -Or
|
|
! if !$d(BIDSILIB)
|
|
BIDSILIB = bids$(BD)i
|
|
! endif
|
|
STDLIBS = import crtldll # Libs for linking the Owl DLL
|
|
|
|
! else
|
|
! if $d(USERDLL)
|
|
CWIN = -WDE -xc # Build static Owl lib for use in DLLs
|
|
! else
|
|
CWIN = -WSE # Build static Owl lib for use in EXEs
|
|
! endif
|
|
! endif
|
|
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------
|
|
# rules
|
|
#--------------------------------------------------------------------
|
|
.rc.res:
|
|
$(BRCC) $(RCINCLUDEPATH) -fo$@ $.
|
|
|
|
.cpp.obj:
|
|
$(BCC) {$. }
|
|
|
|
#--------------------------------------------------------------------
|
|
# Various file lists needed for dependency checking and LIBing.
|
|
#
|
|
# OBJS_CMN are the objs common to static libs and the dll
|
|
# OBJS_LIB are the objs that go into libs and implibs only, not the dlls
|
|
# OBJS_DLL are the objs that go into the owl dll only
|
|
# LIBDEPOBJS is the list of object files for lib/implib dependency checking
|
|
# LIBOBJS is the list of object files for building/addingto the libraries
|
|
# LINKOBJS is the list of object files for building the DLL
|
|
#--------------------------------------------------------------------
|
|
|
|
# Common Objs go into static libs and DLLs
|
|
#
|
|
OBJS_CMN =\
|
|
PFXappdict.obj\
|
|
PFXbitmap.obj\
|
|
PFXbitmapga.obj\
|
|
PFXbitset.obj\
|
|
PFXbrush.obj\
|
|
PFXbuttonga.obj\
|
|
PFXcelarray.obj\
|
|
PFXchooseco.obj\
|
|
PFXchoosefo.obj\
|
|
PFXclipboar.obj\
|
|
PFXclipview.obj\
|
|
PFXcolor.obj\
|
|
PFXcommdial.obj\
|
|
PFXcompat.obj\
|
|
PFXcontrolb.obj\
|
|
PFXcontrolg.obj\
|
|
PFXcreatedc.obj\
|
|
PFXcursor.obj\
|
|
PFXdc.obj\
|
|
PFXdispatch.obj\
|
|
PFXeventhan.obj\
|
|
PFXexcept.obj\
|
|
PFXfont.obj\
|
|
PFXgadget.obj\
|
|
PFXgadgetwi.obj\
|
|
PFXgauge.obj\
|
|
PFXgdibase.obj\
|
|
PFXgdiobjec.obj\
|
|
PFXicon.obj\
|
|
PFXlayoutwi.obj\
|
|
PFXmemorydc.obj\
|
|
PFXmenu.obj\
|
|
PFXmessageb.obj\
|
|
PFXmetafile.obj\
|
|
PFXmetafldc.obj\
|
|
PFXmoduleob.obj\
|
|
PFXowl.obj\
|
|
PFXowldiag.obj\
|
|
PFXpaintdc.obj\
|
|
PFXpalette.obj\
|
|
PFXpen.obj\
|
|
PFXpreview.obj\
|
|
PFXprintdc.obj\
|
|
PFXprofile.obj\
|
|
PFXregion.obj\
|
|
PFXstatusba.obj\
|
|
PFXswindow.obj\
|
|
PFXtextgadg.obj\
|
|
PFXtoolbox.obj\
|
|
PFXuihandle.obj\
|
|
PFXversion.obj\
|
|
PFXwindow.obj\
|
|
PFXwindowdc.obj
|
|
|
|
# Add in these objs when sectioning
|
|
#
|
|
!if $d(OWLSECTION)
|
|
OBJS_CMN = $(OBJS_CMN)\
|
|
PFXapplica1.obj\
|
|
PFXapplica2.obj\
|
|
PFXapplica3.obj\
|
|
PFXapplica4.obj\
|
|
PFXbutton1.obj\
|
|
PFXbutton2.obj\
|
|
PFXcheckbo1.obj\
|
|
PFXcheckbo2.obj\
|
|
PFXcombobo1.obj\
|
|
PFXcombobo2.obj\
|
|
PFXcontrol1.obj\
|
|
PFXcontrol2.obj\
|
|
PFXdecfram1.obj\
|
|
PFXdecfram2.obj\
|
|
PFXdecmdif1.obj\
|
|
PFXdecmdif2.obj\
|
|
PFXdialog1.obj\
|
|
PFXdialog2.obj\
|
|
PFXdib1.obj\
|
|
PFXdib2.obj\
|
|
PFXdib3.obj\
|
|
PFXdib4.obj\
|
|
PFXdib5.obj\
|
|
PFXdib6.obj\
|
|
PFXdocmang1.obj\
|
|
PFXdocmang2.obj\
|
|
PFXdoctpl1.obj\
|
|
PFXdoctpl2.obj\
|
|
PFXdocview1.obj\
|
|
PFXdocview2.obj\
|
|
PFXedit1.obj\
|
|
PFXedit2.obj\
|
|
PFXeditfil1.obj\
|
|
PFXeditfil2.obj\
|
|
PFXeditsea1.obj\
|
|
PFXeditsea2.obj\
|
|
PFXeditvie1.obj\
|
|
PFXeditvie2.obj\
|
|
PFXfiledoc1.obj\
|
|
PFXfiledoc2.obj\
|
|
PFXfiltval1.obj\
|
|
PFXfiltval2.obj\
|
|
PFXfindrep1.obj\
|
|
PFXfindrep2.obj\
|
|
PFXfloatfr1.obj\
|
|
PFXfloatfr2.obj\
|
|
PFXframewi1.obj\
|
|
PFXframewi2.obj\
|
|
PFXframewi3.obj\
|
|
PFXgroupbo1.obj\
|
|
PFXgroupbo2.obj\
|
|
PFXhslider1.obj\
|
|
PFXhslider2.obj\
|
|
PFXinputdi1.obj\
|
|
PFXinputdi2.obj\
|
|
PFXlistbox1.obj\
|
|
PFXlistbox2.obj\
|
|
PFXlistvie1.obj\
|
|
PFXlistvie2.obj\
|
|
PFXlookval1.obj\
|
|
PFXlookval2.obj\
|
|
PFXmdichil1.obj\
|
|
PFXmdichil2.obj\
|
|
PFXmdiclie1.obj\
|
|
PFXmdiclie2.obj\
|
|
PFXmdifram1.obj\
|
|
PFXmdifram2.obj\
|
|
PFXmenudes1.obj\
|
|
PFXmenudes2.obj\
|
|
PFXmodule1.obj\
|
|
PFXmodule2.obj\
|
|
PFXmodule3.obj\
|
|
PFXmodule4.obj\
|
|
PFXopensav1.obj\
|
|
PFXopensav2.obj\
|
|
PFXpictval1.obj\
|
|
PFXpictval2.obj\
|
|
PFXprintdi1.obj\
|
|
PFXprintdi2.obj\
|
|
PFXprinter1.obj\
|
|
PFXprinter2.obj\
|
|
PFXprintou1.obj\
|
|
PFXprintou2.obj\
|
|
PFXradiobu1.obj\
|
|
PFXradiobu2.obj\
|
|
PFXrangevl1.obj\
|
|
PFXrangevl2.obj\
|
|
PFXscrollb1.obj\
|
|
PFXscrollb2.obj\
|
|
PFXscrolle1.obj\
|
|
PFXscrolle2.obj\
|
|
PFXslider1.obj\
|
|
PFXslider2.obj\
|
|
PFXstatic1.obj\
|
|
PFXstatic2.obj\
|
|
PFXtinycap1.obj\
|
|
PFXtinycap2.obj\
|
|
PFXvalidat1.obj\
|
|
PFXvalidat2.obj\
|
|
PFXvslider1.obj\
|
|
PFXvslider2.obj
|
|
|
|
# Add in these objs when not sectioning
|
|
#
|
|
!else
|
|
OBJS_CMN = $(OBJS_CMN)\
|
|
PFXapplicat.obj\
|
|
PFXbutton.obj\
|
|
PFXcheckbox.obj\
|
|
PFXcombobox.obj\
|
|
PFXcontrol.obj\
|
|
PFXdecframe.obj\
|
|
PFXdib.obj\
|
|
PFXdialog.obj\
|
|
PFXdecmdifr.obj\
|
|
PFXdocmanag.obj\
|
|
PFXdoctpl.obj\
|
|
PFXdocview.obj\
|
|
PFXedit.obj\
|
|
PFXeditfile.obj\
|
|
PFXeditsear.obj\
|
|
PFXeditview.obj\
|
|
PFXfiledoc.obj\
|
|
PFXfiltval.obj\
|
|
PFXfindrepl.obj\
|
|
PFXfloatfra.obj\
|
|
PFXframewin.obj\
|
|
PFXgroupbox.obj\
|
|
PFXhslider.obj\
|
|
PFXinputdia.obj\
|
|
PFXlistbox.obj\
|
|
PFXlistview.obj\
|
|
PFXlookval.obj\
|
|
PFXmdichild.obj\
|
|
PFXmdiclien.obj\
|
|
PFXmdiframe.obj\
|
|
PFXmenudesc.obj\
|
|
PFXmodule.obj\
|
|
PFXopensave.obj\
|
|
PFXpictval.obj\
|
|
PFXprinter.obj\
|
|
PFXprintdia.obj\
|
|
PFXprintout.obj\
|
|
PFXradiobut.obj\
|
|
PFXrangeval.obj\
|
|
PFXscrollba.obj\
|
|
PFXscroller.obj\
|
|
PFXslider.obj\
|
|
PFXstatic.obj\
|
|
PFXtinycapt.obj\
|
|
PFXvalidate.obj\
|
|
PFXvslider.obj
|
|
!endif
|
|
|
|
# Objs that go into static libs and import libs, but not in the owl dll itself
|
|
# These also get built differently when in the import library. Note that
|
|
# classes in the modules are declared _USERCLASS instead of _OWLCLASS
|
|
#
|
|
OBJS_LIB =\
|
|
PFXglobal.obj
|
|
|
|
# OLE 2 classes get put into the lib. Small & medium model not supported
|
|
#
|
|
!if $(MODEL) == l || $(MODEL) == f
|
|
OBJS_OLE2=\
|
|
PFXstgdoc.obj\
|
|
PFXolewindo.obj\
|
|
PFXoledoc.obj\
|
|
PFXoleframe.obj\
|
|
PFXolemdifr.obj\
|
|
PFXoleview.obj
|
|
!if $(MODEL) == l
|
|
OBJS_OLE2=$(OBJS_OLE2)\
|
|
PFXoledlg.obj\
|
|
PFXchgicon.obj\
|
|
PFXinsobj.obj\
|
|
PFXpastespc.obj\
|
|
PFXlinks.obj\
|
|
PFXlinkguid.obj\
|
|
PFXolemeta.obj
|
|
!endif
|
|
OBJS_LIB = $(OBJS_LIB) $(OBJS_OLE2)
|
|
!endif
|
|
|
|
OBJS_LIB = $(OBJS_LIB)\
|
|
PFXvbxctl.obj
|
|
|
|
!if $d(USERDLL) || $d(WIN32) # Lib for use by DLLs
|
|
OBJS_LIB = $(OBJS_LIB)\
|
|
PFXlibmain.obj\
|
|
PFXowlmain.obj
|
|
!endif
|
|
!if !$d(USERDLL) || $d(WIN32) # Lib for use in EXEs
|
|
OBJS_LIB = $(OBJS_LIB)\
|
|
PFXwinmain.obj
|
|
!endif
|
|
|
|
# Objs that go into the Owl DLL only
|
|
#
|
|
!if $d(DLL)
|
|
OBJS_DLL =
|
|
!endif
|
|
|
|
# Put together obj groups into lists for different dependencies & tools
|
|
#
|
|
LIBDEPOBJS = $(OBJS_CMN:PFX=) $(OBJS_LIB:PFX=) $(OBJS_DLL:PFX=)
|
|
!if $(DLL)
|
|
LIBOBJS = $(OBJS_LIB:PFX=+)
|
|
LINKOBJS = $(OBJS_CMN:PFX=) $(OBJS_DLL:PFX=)
|
|
!else
|
|
LIBOBJS = $(OBJS_CMN:PFX=+) $(OBJS_LIB:PFX=+)
|
|
!endif
|
|
|
|
#--------------------------------------------------------------------
|
|
# targets
|
|
#--------------------------------------------------------------------
|
|
all: cfgfile $(OWLLIB)
|
|
|
|
cfgfile:
|
|
@-if not exist $(OWLSRCDIR)\object\NUL md $(OWLSRCDIR)\object
|
|
@-if not exist $(OWLOBJDIR)\NUL md $(OWLOBJDIR)
|
|
@copy &&|
|
|
-I$(INCLUDE)
|
|
-c -w $(CMDL) $(CWIN) $(COPTS)
|
|
$(CDBG) $(CDIAG)
|
|
$(CPCH) -n$(.PATH.obj) $(CCFOWL)
|
|
| $(CFGFILE) > NUL
|
|
|
|
!if $d(DLL)
|
|
|
|
!if $d(WIN32)
|
|
|
|
$(OWLLIB): $(LIBDEPOBJS) $(.PATH.obj)\$(OWLDEF) $(.PATH.obj)\$(OWLRES)
|
|
@cd $(.PATH.obj)
|
|
$(TLINK) @&&|
|
|
$(LFLAGS) -L$(BCLIBDIR) c0d32 +
|
|
$(LINKOBJS)
|
|
$(OWLDLL)
|
|
|
|
$(BIDSILIB) $(STDLIBS)
|
|
$(OWLDEF)
|
|
$(OWLRES)
|
|
|
|
|
!if !$d(DIAGS)
|
|
$(TDSTRIP) -s $(OWLDLL)
|
|
!endif
|
|
$(IMPLIB) $(OWLLIB) $(OWLDLL)
|
|
$(TLIB) $(TLIBOPTS) $(OWLLIB) @&&|
|
|
$(LIBOBJS)
|
|
|
|
|
@-del $*.bak
|
|
@cd $(.PATH.cpp)
|
|
|
|
$(.PATH.obj)\$(OWLRES):
|
|
$(BRCC) $(RCINCLUDEPATH) -fo$@ $&.rc
|
|
|
|
$(.PATH.obj)\$(OWLDEF):
|
|
@cd $(.PATH.obj)
|
|
@copy &&|
|
|
LIBRARY $(OWLNAME)$(OWLVER)$(OD)
|
|
DESCRIPTION 'ObjectWindows DLL'
|
|
EXETYPE WINDOWS
|
|
DATA MULTIPLE NONSHARED
|
|
| $(OWLDEF) > NUL
|
|
@cd $(.PATH.cpp)
|
|
|
|
# Compile objs that aren't part of the Owl DLL as if they were user EXE or
|
|
# user DLL objs
|
|
#
|
|
$(OBJS_LIB:PFX=):
|
|
!if $d(USERDLL)
|
|
$(BCC) -D_OWLDLL -U_BUILDOWLDLL {$&.cpp }
|
|
!else
|
|
$(BCC) -W -D_OWLDLL -U_BUILDOWLDLL {$&.cpp }
|
|
!endif
|
|
|
|
!else # ! WIN32
|
|
|
|
#
|
|
# link once to get dll ordinals for implib,
|
|
# finish lib by adding additional objs,
|
|
# then re-link stripping name tables, add resources & tdstrip debug info
|
|
#
|
|
$(OWLLIB): $(LIBDEPOBJS) $(.PATH.obj)\$(OWLDEF) $(.PATH.obj)\$(OWLRES)
|
|
@cd $(.PATH.obj)
|
|
$(TLINK) @&&|
|
|
$(LFLAGS) -Gn -L$(BCLIBDIR) c0dl +
|
|
$(LINKOBJS)
|
|
$(OWLDLL)
|
|
|
|
$(BIDSILIB) $(STDLIBS)
|
|
$(OWLDEF)
|
|
|
|
|
|
|
$(IMPLIB) -i $(OWLLIB) $(OWLDEF) $(OWLDLL)
|
|
$(TLIB) $(TLIBOPTS) $(OWLLIB) @&&|
|
|
$(LIBOBJS)
|
|
|
|
|
$(TLINK) @&&|
|
|
$(LFLAGS) -Gr -Gn -L$(BCLIBDIR) c0dl +
|
|
$(LINKOBJS)
|
|
$(OWLDLL)
|
|
|
|
$(BIDSILIB) $(STDLIBS)
|
|
$(OWLDEF)
|
|
$(OWLRES)
|
|
|
|
|
!if !$d(DIAGS)
|
|
$(TDSTRIP) -s $(OWLDLL)
|
|
!endif
|
|
@-del $*.bak
|
|
@cd $(.PATH.cpp)
|
|
|
|
$(.PATH.obj)\$(OWLRES):
|
|
$(BRCC) $(RCINCLUDEPATH) -fo$@ $&.rc
|
|
|
|
$(.PATH.obj)\$(OWLDEF): $(LIBDEPOBJS) $(.PATH.cpp)\owl16.ord
|
|
@copy &&|
|
|
LIBRARY $(OWLNAME)$(OWLVER)$(OD)
|
|
DESCRIPTION 'ObjectWindows DLL'
|
|
EXETYPE WINDOWS
|
|
CODE PRELOAD MOVEABLE DISCARDABLE
|
|
DATA PRELOAD MOVEABLE SINGLE
|
|
HEAPSIZE 4096
|
|
EXPORTS
|
|
WEP @1 RESIDENTNAME
|
|
| + $(.PATH.cpp)\owl16.ord $(.PATH.obj)\$(OWLDEF) > NUL
|
|
|
|
# Compile objs that aren't part of the Owl DLL as if they were user EXE or
|
|
# user DLL objs
|
|
#
|
|
$(OBJS_LIB:PFX=):
|
|
!if $d(USERDLL)
|
|
$(BCC) -D_OWLDLL -U_BUILDOWLDLL {$&.cpp }
|
|
!else
|
|
# smart callback, far data into normal data seg DATA, could use CODE if RO
|
|
$(BCC) -WS -D_OWLDLL -U_BUILDOWLDLL -zFDATA {$&.cpp }
|
|
!endif
|
|
|
|
localex.obj: locale.cpp
|
|
$(BCC) -o$< locale.cpp
|
|
|
|
!endif # if/else WIN32
|
|
|
|
!else # ! DLL
|
|
|
|
$(OWLLIB): $(LIBDEPOBJS)
|
|
@-del $(OWLLIB)
|
|
@cd $(.PATH.obj)
|
|
$(TLIB) $(TLIBOPTS) $(OWLLIB) @&&|
|
|
$(LIBOBJS)
|
|
|
|
|
@cd $(.PATH.cpp)
|
|
|
|
!endif
|
|
|
|
clean:
|
|
@echo Removing .OBJs from $(.PATH.obj)
|
|
@-if exist $(.PATH.obj)\*.obj del $(.PATH.obj)\*.obj
|
|
@-if exist $(.PATH.obj)\*.csm del $(.PATH.obj)\*.csm
|
|
|
|
applica1.obj: applicat.cpp
|
|
$(BCC) -o$< -DSECTION=1 applicat.cpp
|
|
applica2.obj: applicat.cpp
|
|
$(BCC) -o$< -DSECTION=2 applicat.cpp
|
|
applica3.obj: applicat.cpp
|
|
$(BCC) -o$< -DSECTION=3 applicat.cpp
|
|
applica4.obj: applicat.cpp
|
|
$(BCC) -o$< -DSECTION=4 applicat.cpp
|
|
|
|
button1.obj: button.cpp
|
|
$(BCC) -o$< -DSECTION=1 button.cpp
|
|
button2.obj: button.cpp
|
|
$(BCC) -o$< -DSECTION=2 button.cpp
|
|
|
|
checkbo1.obj: checkbox.cpp
|
|
$(BCC) -o$< -DSECTION=1 checkbox.cpp
|
|
checkbo2.obj: checkbox.cpp
|
|
$(BCC) -o$< -DSECTION=2 checkbox.cpp
|
|
|
|
combobo1.obj: combobox.cpp
|
|
$(BCC) -o$< -DSECTION=1 combobox.cpp
|
|
combobo2.obj: combobox.cpp
|
|
$(BCC) -o$< -DSECTION=2 combobox.cpp
|
|
|
|
control1.obj: control.cpp
|
|
$(BCC) -o$< -DSECTION=1 control.cpp
|
|
control2.obj: control.cpp
|
|
$(BCC) -o$< -DSECTION=2 control.cpp
|
|
|
|
decfram1.obj: decframe.cpp
|
|
$(BCC) -o$< -DSECTION=1 decframe.cpp
|
|
decfram2.obj: decframe.cpp
|
|
$(BCC) -o$< -DSECTION=2 decframe.cpp
|
|
|
|
decmdif1.obj: decmdifr.cpp
|
|
$(BCC) -o$< -DSECTION=1 decmdifr.cpp
|
|
decmdif2.obj: decmdifr.cpp
|
|
$(BCC) -o$< -DSECTION=2 decmdifr.cpp
|
|
|
|
dialog1.obj: dialog.cpp
|
|
$(BCC) -o$< -DSECTION=1 dialog.cpp
|
|
dialog2.obj: dialog.cpp
|
|
$(BCC) -o$< -DSECTION=2 dialog.cpp
|
|
|
|
dib1.obj: dib.cpp
|
|
$(BCC) -o$< -DSECTION=1 dib.cpp
|
|
dib2.obj: dib.cpp
|
|
$(BCC) -o$< -DSECTION=2 dib.cpp
|
|
dib3.obj: dib.cpp
|
|
$(BCC) -o$< -DSECTION=3 dib.cpp
|
|
dib4.obj: dib.cpp
|
|
$(BCC) -o$< -DSECTION=4 dib.cpp
|
|
dib5.obj: dib.cpp
|
|
$(BCC) -o$< -DSECTION=5 dib.cpp
|
|
dib6.obj: dib.cpp
|
|
$(BCC) -o$< -DSECTION=6 dib.cpp
|
|
|
|
docmang1.obj: docmanag.cpp
|
|
$(BCC) -o$< -DSECTION=1 docmanag.cpp
|
|
docmang2.obj: docmanag.cpp
|
|
$(BCC) -o$< -DSECTION=2 docmanag.cpp
|
|
|
|
doctpl1.obj: doctpl.cpp
|
|
$(BCC) -o$< -DSECTION=1 doctpl.cpp
|
|
doctpl2.obj: doctpl.cpp
|
|
$(BCC) -o$< -DSECTION=2 doctpl.cpp
|
|
|
|
docview1.obj: docview.cpp
|
|
$(BCC) -o$< -DSECTION=1 docview.cpp
|
|
docview2.obj: docview.cpp
|
|
$(BCC) -o$< -DSECTION=2 docview.cpp
|
|
|
|
edit1.obj: edit.cpp
|
|
$(BCC) -o$< -DSECTION=1 edit.cpp
|
|
edit2.obj: edit.cpp
|
|
$(BCC) -o$< -DSECTION=2 edit.cpp
|
|
|
|
editfil1.obj: editfile.cpp
|
|
$(BCC) -o$< -DSECTION=1 editfile.cpp
|
|
editfil2.obj: editfile.cpp
|
|
$(BCC) -o$< -DSECTION=2 editfile.cpp
|
|
|
|
editsea1.obj: editsear.cpp
|
|
$(BCC) -o$< -DSECTION=1 editsear.cpp
|
|
editsea2.obj: editsear.cpp
|
|
$(BCC) -o$< -DSECTION=2 editsear.cpp
|
|
|
|
editvie1.obj: editview.cpp
|
|
$(BCC) -o$< -DSECTION=1 editview.cpp
|
|
editvie2.obj: editview.cpp
|
|
$(BCC) -o$< -DSECTION=2 editview.cpp
|
|
|
|
filedoc1.obj: filedoc.cpp
|
|
$(BCC) -o$< -DSECTION=1 filedoc.cpp
|
|
filedoc2.obj: filedoc.cpp
|
|
$(BCC) -o$< -DSECTION=2 filedoc.cpp
|
|
|
|
filtval1.obj: filtval.cpp
|
|
$(BCC) -o$< -DSECTION=1 filtval.cpp
|
|
filtval2.obj: filtval.cpp
|
|
$(BCC) -o$< -DSECTION=2 filtval.cpp
|
|
|
|
findrep1.obj: findrepl.cpp
|
|
$(BCC) -o$< -DSECTION=1 findrepl.cpp
|
|
findrep2.obj: findrepl.cpp
|
|
$(BCC) -o$< -DSECTION=2 findrepl.cpp
|
|
|
|
floatfr1.obj: floatfra.cpp
|
|
$(BCC) -o$< -DSECTION=1 floatfra.cpp
|
|
floatfr2.obj: floatfra.cpp
|
|
$(BCC) -o$< -DSECTION=2 floatfra.cpp
|
|
|
|
framewi1.obj: framewin.cpp
|
|
$(BCC) -o$< -DSECTION=1 framewin.cpp
|
|
framewi2.obj: framewin.cpp
|
|
$(BCC) -o$< -DSECTION=2 framewin.cpp
|
|
framewi3.obj: framewin.cpp
|
|
$(BCC) -o$< -DSECTION=3 framewin.cpp
|
|
|
|
groupbo1.obj: groupbox.cpp
|
|
$(BCC) -o$< -DSECTION=1 groupbox.cpp
|
|
groupbo2.obj: groupbox.cpp
|
|
$(BCC) -o$< -DSECTION=2 groupbox.cpp
|
|
|
|
hslider1.obj: hslider.cpp
|
|
$(BCC) -o$< -DSECTION=1 hslider.cpp
|
|
hslider2.obj: hslider.cpp
|
|
$(BCC) -o$< -DSECTION=2 hslider.cpp
|
|
|
|
inputdi1.obj: inputdia.cpp
|
|
$(BCC) -o$< -DSECTION=1 inputdia.cpp
|
|
inputdi2.obj: inputdia.cpp
|
|
$(BCC) -o$< -DSECTION=2 inputdia.cpp
|
|
|
|
listbox1.obj: listbox.cpp
|
|
$(BCC) -o$< -DSECTION=1 listbox.cpp
|
|
listbox2.obj: listbox.cpp
|
|
$(BCC) -o$< -DSECTION=2 listbox.cpp
|
|
|
|
listvie1.obj: listview.cpp
|
|
$(BCC) -o$< -DSECTION=1 listview.cpp
|
|
listvie2.obj: listview.cpp
|
|
$(BCC) -o$< -DSECTION=2 listview.cpp
|
|
|
|
lookval1.obj: lookval.cpp
|
|
$(BCC) -o$< -DSECTION=1 lookval.cpp
|
|
lookval2.obj: lookval.cpp
|
|
$(BCC) -o$< -DSECTION=2 lookval.cpp
|
|
|
|
mdichil1.obj: mdichild.cpp
|
|
$(BCC) -o$< -DSECTION=1 mdichild.cpp
|
|
mdichil2.obj: mdichild.cpp
|
|
$(BCC) -o$< -DSECTION=2 mdichild.cpp
|
|
|
|
mdiclie1.obj: mdiclien.cpp
|
|
$(BCC) -o$< -DSECTION=1 mdiclien.cpp
|
|
mdiclie2.obj: mdiclien.cpp
|
|
$(BCC) -o$< -DSECTION=2 mdiclien.cpp
|
|
|
|
mdifram1.obj: mdiframe.cpp
|
|
$(BCC) -o$< -DSECTION=1 mdiframe.cpp
|
|
mdifram2.obj: mdiframe.cpp
|
|
$(BCC) -o$< -DSECTION=2 mdiframe.cpp
|
|
|
|
menudes1.obj: menudesc.cpp
|
|
$(BCC) -o$< -DSECTION=1 menudesc.cpp
|
|
menudes2.obj: menudesc.cpp
|
|
$(BCC) -o$< -DSECTION=2 menudesc.cpp
|
|
|
|
module1.obj: module.cpp
|
|
$(BCC) -o$< -DSECTION=1 module.cpp
|
|
module2.obj: module.cpp
|
|
$(BCC) -o$< -DSECTION=2 module.cpp
|
|
module3.obj: module.cpp
|
|
$(BCC) -o$< -DSECTION=3 module.cpp
|
|
module4.obj: module.cpp
|
|
$(BCC) -o$< -DSECTION=4 module.cpp
|
|
|
|
opensav1.obj: opensave.cpp
|
|
$(BCC) -o$< -DSECTION=1 opensave.cpp
|
|
opensav2.obj: opensave.cpp
|
|
$(BCC) -o$< -DSECTION=2 opensave.cpp
|
|
|
|
pictval1.obj: pictval.cpp
|
|
$(BCC) -o$< -DSECTION=1 pictval.cpp
|
|
pictval2.obj: pictval.cpp
|
|
$(BCC) -o$< -DSECTION=2 pictval.cpp
|
|
|
|
printou1.obj: printout.cpp
|
|
$(BCC) -o$< -DSECTION=1 printout.cpp
|
|
printou2.obj: printout.cpp
|
|
$(BCC) -o$< -DSECTION=2 printout.cpp
|
|
|
|
printer1.obj: printer.cpp
|
|
$(BCC) -o$< -DSECTION=1 printer.cpp
|
|
printer2.obj: printer.cpp
|
|
$(BCC) -o$< -DSECTION=2 printer.cpp
|
|
|
|
printdi1.obj: printdia.cpp
|
|
$(BCC) -o$< -DSECTION=1 printdia.cpp
|
|
printdi2.obj: printdia.cpp
|
|
$(BCC) -o$< -DSECTION=2 printdia.cpp
|
|
|
|
radiobu1.obj: radiobut.cpp
|
|
$(BCC) -o$< -DSECTION=1 radiobut.cpp
|
|
radiobu2.obj: radiobut.cpp
|
|
$(BCC) -o$< -DSECTION=2 radiobut.cpp
|
|
|
|
rangevl1.obj: rangeval.cpp
|
|
$(BCC) -o$< -DSECTION=1 rangeval.cpp
|
|
rangevl2.obj: rangeval.cpp
|
|
$(BCC) -o$< -DSECTION=2 rangeval.cpp
|
|
|
|
scrolle1.obj: scroller.cpp
|
|
$(BCC) -o$< -DSECTION=1 scroller.cpp
|
|
scrolle2.obj: scroller.cpp
|
|
$(BCC) -o$< -DSECTION=2 scroller.cpp
|
|
|
|
scrollb1.obj: scrollba.cpp
|
|
$(BCC) -o$< -DSECTION=1 scrollba.cpp
|
|
scrollb2.obj: scrollba.cpp
|
|
$(BCC) -o$< -DSECTION=2 scrollba.cpp
|
|
|
|
slider1.obj: slider.cpp
|
|
$(BCC) -o$< -DSECTION=1 slider.cpp
|
|
slider2.obj: slider.cpp
|
|
$(BCC) -o$< -DSECTION=2 slider.cpp
|
|
|
|
static1.obj: static.cpp
|
|
$(BCC) -o$< -DSECTION=1 static.cpp
|
|
static2.obj: static.cpp
|
|
$(BCC) -o$< -DSECTION=2 static.cpp
|
|
|
|
tinycap1.obj: tinycapt.cpp
|
|
$(BCC) -o$< -DSECTION=1 tinycapt.cpp
|
|
tinycap2.obj: tinycapt.cpp
|
|
$(BCC) -o$< -DSECTION=2 tinycapt.cpp
|
|
|
|
validat1.obj: validate.cpp
|
|
$(BCC) -o$< -DSECTION=1 validate.cpp
|
|
validat2.obj: validate.cpp
|
|
$(BCC) -o$< -DSECTION=2 validate.cpp
|
|
|
|
vslider1.obj: vslider.cpp
|
|
$(BCC) -o$< -DSECTION=1 vslider.cpp
|
|
vslider2.obj: vslider.cpp
|
|
$(BCC) -o$< -DSECTION=2 vslider.cpp
|