#
#   Borland C++ - (C) Copyright 1991, 1994 by Borland International
#   Makefile for building Turbo Vision 2.0
#

#
# Flags for makefile:
#
#     -DOVERLAY      Build an overlayable version of TV.LIB.
#
#     -DDOS32        Build the 32-bit version - TV32.LIB.
#
#     -DDEBUG        Turbo Vision library with full debug info.
#
#     -DNOTASM       If you didn't purchase Turbo Assembler 4.0.
#
#     -DALIGNMENT=2  Word (=2) or dword (=4) aligned library.
#     -DALIGNMENT=4
#
#     -DEXCEPTIONS   Compile with exception handling code in the
#                    library.  Note that Turbo Vision does NOT throw
#                    any exceptions.
#
#   If you installed TVISION somewhere other than directly under
#   BORLANDC or TC, you must invoke MAKE with two defines:
#
#     -DBCROOT=... specifies the path where you installed the compiler
#
#     -DTVDIR=...  specifies the path where you installed TVISION
#
#   Examples:
#
#     for a standard installation:
#
#       make
#
#     for an installation in \COMPILER and TVISION in \AF:
#
#       make -DBCROOT=\COMPILER -DTVDIR=\AF
#
#   Any of these defines can be omitted if the corresponding name
#   is defined in the environment:
#
#       set BCROOT=\COMPILER
#       set TVDIR=\AF
#       make -DOVERLAY
#
#
#
#                       !!!!!!!!CAUTION!!!!!!!!
#
#   If you did not purchase Turbo Assembler 4.0, DO NOT DELETE the
#   .OBJ files in the \BC4\LIB\COMPAT directory.  They are built from
#   .ASM files, and you will not be able to rebuild them.
#
#   If you accidentally delete any of these .OBJ files you will have
#   to reinstall them from a backup or from your original diskettes.
#
.autodepend
.swap

!if !$d(BCROOT)
BCROOT = $(MAKEDIR)\..
!endif

!if !$d(TVDIR)
TVDIR = $(BCROOT)
!endif

!if !$d(SRCDIR)
SRCDIR = $(TVDIR)\SOURCE\TVISION
!endif

!if $d(DOS32)

!if $d(DEBUG)
LIBNAME = TV32D.LIB
OBJDIR  = $(SRCDIR)\OBJS32D
!else
LIBNAME = TV32.LIB
OBJDIR  = $(SRCDIR)\OBJS32
!endif

CFGNAME = TV32.CFG
INCNAME = TVWRIT32.INC
GENEXE  = GENINC32.EXE
GENOBJ  = GENINC32.OBJ
GENSRC  = GENINC.CPP
TARGETFLAG = -WX

CC      = $(BCROOT)\BIN\BCC32
ASM     = TASM32
LIB     = $(BCROOT)\BIN\TLIB
LINK    = $(BCROOT)\BIN\TLINK32

COMPATDIR = $(BCROOT)\LIB\COMPAT\TV32

!else   # DOS32

COMPATDIR = $(BCROOT)\LIB\COMPAT\TV

!if $d(DEBUG)
LIBNAME = TVD.LIB
OBJDIR  = $(SRCDIR)\OBJS16D
!else
LIBNAME = TV.LIB
OBJDIR  = $(SRCDIR)\OBJS16
!endif

MODEL   = l
CFGNAME = TV.CFG
INCNAME = TVWRITE.INC
GENEXE  = GENINC.EXE
GENOBJ  = GENINC.OBJ
GENSRC  = GENINC.CPP
TARGETFLAG =

CC      = $(BCROOT)\BIN\BCC
ASM     = TASM
LIB     = $(BCROOT)\BIN\TLIB
LINK    = $(BCROOT)\BIN\TLINK

!endif  # DOS32

!if "$(BCROOT)"=="$(TVDIR)"
INCLUDE  = $(BCROOT)\INCLUDE
LIBDIR   = $(BCROOT)\LIB
!else
INCLUDE  = $(TVDIR)\INCLUDE;$(BCROOT)\INCLUDE
LIBDIR   = $(TVDIR)\LIB;$(BCROOT)\LIB
!endif

TVLIBDIR = $(TVDIR)\LIB

!if $d(DEBUG)
LIBFLAGS   = /E /P128
CDEBUGFLAG = -v
ADEBUGFLAG = /zi
!else
LIBFLAGS   = /E /0
CDEBUGFLAG =
ADEBUGFLAG =
!endif

!if $d(OVERLAY)
!if !$d(DOS32)
CCOVYFLAGS = -Y -Vs
AOVYFLAGS  = /o
OBJDIR     = $(SRCDIR)\OBJSOVY
LIBNAME    = TVO.LIB
!else
!error Cannot use overlays with 32-bit version.
!endif
!endif

.path.obj = $(OBJDIR)

!if $d(ALIGNMENT)
ALIGNFLAG = -a$(ALIGNMENT)
!else
ALIGNFLAG =
!endif

!if $d(EXCEPTIONS)
EXCEPTFLAG = -x
!else
EXCEPTFLAG = -x-
!endif

!if $d(DOS32)
AFLAGS32 = /D__FLAT__
CFLAGS32 =
!else
AFLAGS32 =
CFLAGS32 = -m$(MODEL)
!endif

CFLAGS = $(CDEBUGFLAG) $(EXCEPTFLAG) $(ALIGNFLAG) $(CCOVYFLAGS) -P\
         $(CFLAGS32) -I$(INCLUDE) -n$(OBJDIR) -w -w-sig
AFLAGS = /ml /m2 $(ADEBUGFLAG) $(AOVYFLAGS) $(AFLAGS32)

!if $d(NO_STREAMABLE)
CFLAGS = $(CFLAGS) -DNO_STREAMABLE
!endif


AOBJS = pfxEDITS.OBJ    pfxFRAMELIN.OBJ pfxHARDWARE.OBJ pfxSWAPST.OBJ   \
        pfxSYSINT.OBJ   pfxTGRMV.OBJ    pfxTTPRVLNS.OBJ pfxTVCURSOR.OBJ \
        pfxTVEXPOSD.OBJ pfxTVWRITE.OBJ

TOBJS = pfxCOLORSEL.OBJ pfxDRIVERS.OBJ  pfxDRIVERS2.OBJ pfxEDITSTAT.OBJ \
        pfxGRP.OBJ      pfxHARDWRVR.OBJ pfxHELP.OBJ     pfxHELPBASE.OBJ \
        pfxHISTLIST.OBJ pfxMAPCOLOR.OBJ pfxMENU.OBJ     pfxMISC.OBJ     \
        pfxMSGBOX.OBJ   pfxNEW.OBJ      pfxNEWSTR.OBJ   pfxPALETTE.OBJ  \
        pfxSTDDLG.OBJ   pfxSYSERR.OBJ   pfxTAPPLICA.OBJ pfxTBKGRND.OBJ  \
        pfxTBUTTON.OBJ  pfxTCHDRDLG.OBJ pfxTCHECKBO.OBJ pfxTCLUSTER.OBJ \
        pfxTCMDSET.OBJ  pfxTCOLLECT.OBJ pfxTDESKTOP.OBJ pfxTDIALOG.OBJ  \
        pfxTDIRCOLL.OBJ pfxTDIRLIST.OBJ pfxTEDITOR1.OBJ pfxTEDITOR2.OBJ \
        pfxTEDITWND.OBJ pfxTEVENT.OBJ   pfxTEXTVIEW.OBJ pfxTFILDLG.OBJ  \
        pfxTFILECOL.OBJ pfxTFILEDTR.OBJ pfxTFILLIST.OBJ pfxTFRAME.OBJ   \
        pfxTGROUP.OBJ   pfxTHISTORY.OBJ pfxTHISTWIN.OBJ pfxTHSTVIEW.OBJ \
        pfxTINDICTR.OBJ pfxTINPUTLI.OBJ pfxTLABEL.OBJ   pfxTLISTBOX.OBJ \
        pfxTLSTVIEW.OBJ pfxTMEMO.OBJ    pfxTMENUBAR.OBJ pfxTMENUBOX.OBJ \
        pfxTMNUVIEW.OBJ pfxTMOUSE.OBJ   pfxTMULCHKB.OBJ pfxTOBJECT.OBJ  \
        pfxTOBJSTRM.OBJ pfxTOUTLINE.OBJ pfxTPARAMTE.OBJ pfxTSURFACE.OBJ \
        pfxTPROGRAM.OBJ pfxTRADIOBU.OBJ pfxTRESCOLL.OBJ pfxTRESFILE.OBJ \
        pfxTSCREEN.OBJ  pfxTSCRLBAR.OBJ pfxTSCROLLE.OBJ pfxTSORTCOL.OBJ \
        pfxTSTATICT.OBJ pfxTSTATUSL.OBJ pfxTSTRCOLL.OBJ pfxTSTRLIST.OBJ \
        pfxTVALIDAT.OBJ pfxTVIEW.OBJ    pfxTVTEXT1.OBJ  pfxTVTEXT2.OBJ  \
        pfxTWINDOW.OBJ  pfxTMENUPOP.OBJ pfxPOPUPMNU.OBJ pfxTSTRVIEW.OBJ \
        pfxPRNTCNST.OBJ pfxTKEY.OBJ     pfxTCLIPBRD.OBJ pfxTTIMERQU.OBJ \
        pfxSNPRINTF.OBJ pfxFMTSTR.OBJ

NOBJS = pfxNMBKGRND.OBJ pfxNMBUTTON.OBJ pfxNMCHDRDL.OBJ pfxNMCHKBOX.OBJ \
        pfxNMCLRSEL.OBJ pfxNMCLUSTR.OBJ pfxNMCOLLCT.OBJ pfxNMDIALOG.OBJ \
        pfxNMDIRBOX.OBJ pfxNMDIRCOL.OBJ pfxNMDSKTOP.OBJ pfxNMEDITOR.OBJ \
        pfxNMFILCOL.OBJ pfxNMFILDLG.OBJ pfxNMFILLST.OBJ pfxNMFRAME.OBJ  \
        pfxNMGROUP.OBJ  pfxNMHIST.OBJ   pfxNMINPTLN.OBJ pfxNMLABEL.OBJ  \
        pfxNMLSTBOX.OBJ pfxNMLSTVWR.OBJ pfxNMMNUBAR.OBJ pfxNMMNUBOX.OBJ \
        pfxNMMNUVW.OBJ  pfxNMMULCHK.OBJ pfxNMOUTLIN.OBJ pfxNMPRMTXT.OBJ \
        pfxNMRBTNS.OBJ  pfxNMRESCOL.OBJ pfxNMSCOLL.OBJ  pfxNMSCRBAR.OBJ \
        pfxNMSCROLL.OBJ pfxNMSTCTXT.OBJ pfxNMSTDDLG.OBJ pfxNMSTLINE.OBJ \
        pfxNMSTRCOL.OBJ pfxNMSTRLST.OBJ pfxNMVALIDA.OBJ pfxNMVIEW.OBJ   \
        pfxNMWINDOW.OBJ

SOBJS = pfxSBKGRND.OBJ  pfxSBUTTON.OBJ  pfxSCHDRDLG.OBJ pfxSCHECKBO.OBJ \
        pfxSCLRSEL.OBJ  pfxSCLUSTER.OBJ pfxSDESKTOP.OBJ pfxSDIALOG.OBJ  \
        pfxSDIRCOLL.OBJ pfxSDIRLIST.OBJ pfxSEDITORS.OBJ pfxSFILCOLL.OBJ \
        pfxSFILDLG.OBJ  pfxSFILELST.OBJ pfxSFINFPNE.OBJ pfxSFINPUTL.OBJ \
        pfxSFRAME.OBJ   pfxSGROUP.OBJ   pfxSHISTORY.OBJ pfxSINPUTLI.OBJ \
        pfxSLABEL.OBJ   pfxSLISTBOX.OBJ pfxSLSTVIEW.OBJ pfxSMENUBAR.OBJ \
        pfxSMENUBOX.OBJ pfxSMNUVIEW.OBJ pfxSMULCHKB.OBJ pfxSOUTLINE.OBJ \
        pfxSPARAMTE.OBJ pfxSRADIOBU.OBJ pfxSRESCOLL.OBJ pfxSSCRLBAR.OBJ \
        pfxSSCROLLE.OBJ pfxSSTATICT.OBJ pfxSSTATUSL.OBJ pfxSSTRCOLL.OBJ \
        pfxSSTRLST.OBJ  pfxSTRMSTAT.OBJ pfxSVALID.OBJ   pfxSVIEW.OBJ    \
        pfxSWINDOW.OBJ

OBJS  = $(AOBJS) $(TOBJS) $(NOBJS) $(SOBJS)


.cpp.obj:
     $(CC) -c +$(CFGNAME) {$. }

.asm.obj:
!if !$d(NOTASM)
     $(ASM) $(AFLAGS) $&.ASM $(OBJDIR)\$&.OBJ
!else
     COPY $(COMPATDIR)\$&.obj $(OBJDIR)
!endif

all: $(CFGNAME) dirs $(TVLIBDIR)\$(LIBNAME)
    DEL $(CFGNAME)

dirs:
    IF NOT EXIST $(OBJDIR) MD $(OBJDIR)

$(CFGNAME):
    ECHO $(TARGETFLAG) $(CFLAGS) > $(CFGNAME)

*.cpp: $(CFGNAME)

!if !$d(NOTASM)
*.asm: $(INCNAME)

$(INCNAME): $(GENEXE)
     $(GENEXE) > $(INCNAME)

$(GENEXE): $(GENOBJ)
     $(CC) +$(CFGNAME) -f- $(TARGETFLAG) -e$(GENEXE) -L$(LIBDIR) -n. $(OBJDIR)\$(GENOBJ)

$(GENOBJ): $(GENSRC)
     $(CC) +$(CFGNAME) -f- $(TARGETFLAG) -c -o$(OBJDIR)\$(GENOBJ) $(GENSRC)

!endif

OBJPFX=+$(OBJDIR)\\

$(TVLIBDIR)\$(LIBNAME): $(OBJS:pfx=)
     @if not exist $(TVLIBDIR) md $(TVLIBDIR)
     @if exist $(TVLIBDIR)\$(LIBNAME) del $(TVLIBDIR)\$(LIBNAME)
     $(LIB) $(LIBFLAGS) $(TVLIBDIR)\$(LIBNAME) @&&|
     $(OBJS:pfx=$(OBJPFX))
|
!if $d(OVERLAY)
     @if exist $(TVLIBDIR)\tvno.lib del $(TVLIBDIR)\tvno.lib
     $(LIB) $(LIBFLAGS) $(TVLIBDIR)\$(LIBNAME) @&&|
     -*syserr -*tscreen -*drivers -*drivers2 -*swapst -*tevent &
     -*sysint -*hardware
|
     $(LIB) $(LIBFLAGS) $(TVLIBDIR)\tvno.lib @&&|
     +syserr +tscreen +drivers +drivers2 +swapst +tevent +sysint +hardware
|
!endif

clean:
     del $(OBJDIR)\*.obj

# End of Turbo Vision 2.0 Makefile!
