#******************************************************************************
#
#  Makefile for the PMDISP\EGAFAM\EGAVGA subdirectory
#
#       IBM/Microsoft Confidential
#
#       Copyright (c) IBM Corporation 1987, 1989
#       Copyright (c) Microsoft Corporation 1987, 1989
#
#       All Rights Reserved
#
#  09/10/94  @V2.2TSU00  96178   Add module versioning-ID to base v executables
#
#******************************************************************************

#******************************************************************************
#  Dot directive definition area (usually just suffixes)
#****************************************************************************

.SUFFIXES:      .obj

#****************************************************************************
#  Environment Setup for the component(s).
#****************************************************************************

O       = debug
OPT     = -DFIREWALLS

!ifdef DEBUG
O       = debug
OPT     = -DFIREWALLS
!endif

!ifdef RETAIL
O       = retail
OPT     =
!endif

!ifdef PROFILE
O       = profile
OPT     = -DATTRPROF
!endif

!ifdef VGADEB
O       = debug
OPT     = -DFIREWALLS
!endif

!ifdef VGARET
O       = retail
OPT     =
!endif

#
# Compiler Location w/ includes, libs and tools relative to the
# Global Source (GS), Family Source (FS), and Specific Source (SS)
# directories, PMDISP, PMDISP\EGAFAM, and PMDISP\EGAFAM\EGAVGA,
# respectively.
#

GS      = ..\..
FS      = ..
SS      = .

SEAMLESS = 1

H       = $(GS)\..\..\h
INC     = $(GS)\..\..\inc
LIB     = $(GS)\..\..\lib
TOOLSPATH = $(GS)\..\..\tools

!if [set INCLUDE=$(SS);$(FS);$(GS);$(H);$(INC)] || \
    [set LIB=$(LIB)] || [set PATH=$(TOOLSPATH)]
!endif

#
# Compiler/tools Macros
#

AS      = masm
CC      = cl
IMPLIB  = implib
IPF     = ipfc
LIBUTIL = lib
LINK    = link386
MAPSYM  = mapsym
RC      = rc

#
# Compiler and Linker Options
#

AFLAGS  = -ML -v -DDOS5 -DHIRES -DBITS_PEL=4 -DSCAN_CNT=350 -DSLITE $(OPT) $(CCV)
AINC    = -I$(SS) -I$(FS) -I$(GS) -I$(INC) -I$(H) -I$(MAKEDIR)
CINC    = -I$(SS) -I$(FS) -I$(GS) -I$(H) -I$(INC) -I$(MAKEDIR)
CFLAGS  = -c -nologo -u -W3
LFLAGS  = /far /map /nod /noe /EXEPACK /ALIGN:16
RFLAGS  = -r
RF      = -x -p

!if $(SEAMLESS)
SEAMINC = $(GS)\seamless.inc
SEAMFLAGS = -DSEAMLESS
SEAMADD = +
SEAMDEFS = seamless.def
!else
SEAMINC =
SEAMFLAGS =
SEAMADD =
SEAMDEFS =
!endif

#****************************************************************************
# Set up Macros that will contain all the different dependencies for the
# executables and dlls etc. that are generated.
#****************************************************************************

# critsec.obj MUST be linked first

EOBJ0   = $(O)\critsec.obj  $(O)\bmc_ite.obj  $(O)\celldraw.obj
EOBJ1   = $(O)\data.obj     $(O)\dither.obj   $(O)\enable.obj
EOBJ2   = $(O)\egainit.obj  $(O)\egastate.obj $(O)\egamemd.obj
EOBJ3   = $(O)\phycolor.obj $(O)\resolve.obj  $(O)\init.obj
EOBJ4   = $(O)\enter.obj

VOBJ0   = $(O)\vcritsec.obj $(O)\vbmc_ite.obj $(O)\vcelldrw.obj
VOBJ1   = $(O)\vdata.obj    $(O)\vdither.obj  $(O)\venable.obj
VOBJ2A  = $(O)\vgainit.obj  $(O)\vgastate.obj $(O)\vgamemd.obj
VOBJ2B  = $(O)\vgainit2.obj  $(O)\vgastate.obj $(O)\vgamemd2.obj
VOBJ3   = $(O)\vphycolr.obj $(O)\vresolve.obj $(O)\vinit.obj
VOBJ4   = $(O)\venter.obj

OBJ5    = $(O)\cmplcode.obj $(O)\pelsup.obj   $(O)\exit.obj
OBJ6    = $(O)\bmsup.obj    $(O)\memman.obj   $(O)\validate.obj

OBJ7    = $(O)\bundle.obj   $(O)\winattrs.obj $(O)\strblt.obj
OBJ8    = $(O)\query.obj    $(O)\mkvalid.obj  $(O)\pointer.obj
OBJ9    = $(O)\cursors.obj  $(O)\rasterop.obj $(O)\strbltc.obj

OBJ10   = $(O)\major01.obj  $(O)\rect.obj     $(O)\bounds.obj
OBJ11   = $(O)\getclip.obj  $(O)\enumclip.obj $(O)\bitblt.obj

OBJ12   = $(O)\clrconv.obj  $(O)\dispatch.obj $(O)\winstr.obj
OBJ13   = $(O)\resolvec.obj $(O)\colortbl.obj $(O)\major0b.obj
OBJ14   = $(O)\winbits.obj  $(O)\drawbord.obj $(O)\smartpro.obj

OBJ15   = $(O)\cblt.obj     $(O)\ssb.obj      $(O)\buildstr.obj
OBJ16   = $(O)\bmc_eti.obj  $(O)\clip.obj     $(O)\smartfix.obj
OBJ17   = $(O)\drawline.obj $(O)\scanline.obj $(O)\strdraw.obj

OBJ18   = $(O)\marker.obj   $(O)\slcorr.obj   $(O)\shortln.obj
OBJ19   = $(O)\plysolid.obj $(O)\polybitm.obj $(O)\polyline.obj
OBJ20   = $(O)\polystyl.obj $(O)\scancorr.obj $(O)\firewall.obj

OBJ21   = $(O)\error.obj    $(O)\pixel.obj    $(O)\escape.obj
OBJ22   = $(O)\drawbits.obj $(O)\rlebm.obj    $(O)\strchblt.obj

# VIO Segs

OBJ23   = $(O)\cellcp.obj   $(O)\cellblt.obj  $(O)\cellscan.obj

# Objects specific to EGA and VGA, respectively

EOBJS = $(EOBJ0) $(EOBJ1) $(EOBJ2) $(EOBJ3) $(EOBJ4) \
        $(OBJ5)  $(OBJ6)  $(OBJ7)  $(OBJ8)  $(OBJ9)  \
        $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14) \
        $(OBJ15) $(OBJ16) $(OBJ17) $(OBJ18) $(OBJ19) \
         $(OBJ20) $(OBJ21) $(OBJ22) $(OBJ23)

VOBJS = $(VOBJ0) $(VOBJ1) $(VOBJ2A) $(VOBJ3) $(VOBJ4) \
        $(OBJ5)  $(OBJ6)  $(OBJ7)   $(OBJ8)  $(OBJ9)  \
        $(OBJ10) $(OBJ11) $(OBJ12)  $(OBJ13) $(OBJ14) \
        $(OBJ15) $(OBJ16) $(OBJ17)  $(OBJ18) $(OBJ19) \
        $(OBJ20) $(OBJ21) $(OBJ22)  $(OBJ23)

VOBJS2 = $(VOBJ0) $(VOBJ1) $(VOBJ2B) $(VOBJ3) $(VOBJ4) \
         $(OBJ5)  $(OBJ6)  $(OBJ7)   $(OBJ8)  $(OBJ9)  \
         $(OBJ10) $(OBJ11) $(OBJ12)  $(OBJ13) $(OBJ14) \
         $(OBJ15) $(OBJ16) $(OBJ17)  $(OBJ18) $(OBJ19) \
         $(OBJ20) $(OBJ21) $(OBJ22)  $(OBJ23)

#****************************************************************************
#   Setup the inference rules for compiling and assembling source to object
#****************************************************************************

{$(SS)}.asm{$(O)}.obj:
        $(AS) $(AFLAGS) $(AINC) $<,$(O)\$(<B).obj;

{$(FS)}.asm{$(O)}.obj:
        $(AS) $(AFLAGS) $(AINC) $<,$(O)\$(<B).obj;

{$(GS)}.asm{$(O)}.obj:
        $(AS) $(AFLAGS) $(AINC) $<,$(O)\$(<B).obj;

#****************************************************************************
#   Target Information
#****************************************************************************

!include      "$(H)\version.mak"   #@V2.2TSU00

all:    debug   retail  profile

makeall: $(O)\ibmvga.dll $(O)\ibmvg132.dll $(O)\vga.dll $(O)\vga132.dll \
         $(O)\ibmega.dll $(O)\ega.dll

debug:  resource
    if not exist debug md debug
    $(MAKE) DEBUG=  makeall -$(MAKEFLAGS)

retail: resource
    if not exist retail md retail
    $(MAKE) RETAIL=  makeall -$(MAKEFLAGS)

profile: resource
    if not exist profile md profile
    $(MAKE) PROFILE=  makeall -$(MAKEFLAGS)

resource: vgares egares

egares:
    cd egares
    $(MAKE) -$(MAKEFLAGS)
    cd ..

vgares:
    cd vgares
    $(MAKE) -$(MAKEFLAGS)
    cd ..

clean:  dbgclean rtlclean prfclean

dbgclean:       resclean
    -echo y | del debug > nul 2>&1

rtlclean:       resclean
    -echo y | del retail > nul 2>&1

prfclean:       resclean
    -echo y | del profile > nul 2>&1

resclean:
    cd egares
    $(MAKE) clean -$(MAKEFLAGS)
    cd ..\vgares
    $(MAKE) clean -$(MAKEFLAGS)
    cd ..

#****************************************************************************
#    Target information for VGA16 DAK
#****************************************************************************

vgadeb: resour
    if not exist debug md debug
    $(MAKE) VGADEB=1 makevga -$(MAKEFLAGS)

vgaret: resour
    if not exist retail md retail
    $(MAKE) VGARET=1 makevga -$(MAKEFLAGS)

makevga: $(O)\ibmvga.dll $(O)\ibmvg132.dll $(O)\vga.dll $(O)\vga132.dll

resour: vgarsc

vgarsc:
    cd vgares
    $(MAKE) -$(MAKEFLAGS)
    cd ..



#*****************************************************************************
#   Specific Description Block Information
#*****************************************************************************

#
# VGA specific objects that depend on EGA specific objects
#

$(O)\vbmc_ite.obj:      $(O)\bmc_ite.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(FS)\bmc_ite.asm,$@;

$(O)\vcelldrw.obj:      $(O)\celldraw.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(SS)\celldraw.asm,$@;

$(O)\vcritsec.obj:      $(O)\critsec.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(SS)\critsec.asm,$@;

$(O)\vdata.obj:         $(O)\data.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(GS)\data.asm,$@;

$(O)\vdither.obj:       $(O)\dither.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(GS)\dither.asm,$@;

$(O)\venable.obj:       $(O)\enable.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(GS)\enable.asm,$@;

$(O)\vgastate.obj:      $(O)\egastate.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(SS)\egastate.asm,$@;

$(O)\vgamemd.obj:       $(O)\egamemd.obj
        $(AS) $(AFLAGS) $(AINC) -DSCAN_CNT=480 $(SS)\egamemd.asm,$@;

#
# This one for the 132 column (664 pel wide) VGA version
#

$(O)\vgamemd2.obj:      $(O)\egamemd.obj
        $(AS) $(AFLAGS) $(AINC) -DSCAN_CNT=480 -DVGA132 $(SS)\egamemd.asm,$@;

$(O)\vphycolr.obj:      $(O)\phycolor.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA $(FS)\phycolor.asm,$@;

$(O)\vresolve.obj:      $(O)\resolve.obj
        $(AS) $(AFLAGS) $(AINC) -DSCAN_CNT=480 $(SS)\resolve.asm,$@;

#
# This one for the 132 column (664 pel wide) VGA version
#

$(O)\vgainit2.obj:       $(O)\egainit.obj
        $(AS) $(AFLAGS) $(AINC) -DVGA -DVGA132 $(SS)\egainit.asm,$@;

#
# These are made VGA specific because of SEAMLESS
#

$(O)\vgainit.obj:       $(O)\egainit.obj $(SEAMINC)
        $(AS) $(AFLAGS) $(AINC) -DVGA $(SEAMFLAGS) $(SS)\egainit.asm,$@;

$(O)\venter.obj:       $(O)\enter.obj $(SEAMINC)
        $(AS) $(AFLAGS) $(AINC) -DVGA $(SEAMFLAGS) $(GS)\enter.asm,$@;

$(O)\vinit.obj:       $(O)\init.obj $(SEAMINC)
        $(AS) $(AFLAGS) $(AINC) -DVGA $(SEAMFLAGS) $(GS)\init.asm,$@;

#
#  Definition files
#

vga.def:        makefile $(FS)\egafam.def $(SEAMDEFS)
        echo LIBRARY DISPLAY >$@
        echo DESCRIPTION '$(FILEVER) VGA OS/2 PM Display Driver Library' >>$@
        copy $@+$(FS)\egafam.def$(SEAMADD)$(SEAMDEFS) $@ >nul

ega.def:        makefile $(FS)\egafam.def
        echo LIBRARY DISPLAY >$@
        echo DESCRIPTION '$(FILEVER) EGA OS/2 PM Display Driver Library' >>$@
        copy $@+$(FS)\egafam.def $@ >nul

vga132.def:     makefile $(FS)\egafam.def
        echo LIBRARY DISPLAY >$@
        echo DESCRIPTION '$(FILEVER) VGA OS/2 PM Display Driver Library' >>$@
        copy $@+$(FS)\egafam.def $@ >nul

ibmvga.def:        makefile $(FS)\egafam.def $(SEAMDEFS)
        echo LIBRARY $(@B) >$@
        echo DESCRIPTION '$(FILEVER) VGA OS/2 PM Display Driver Library' >>$@
        copy $@+$(FS)\egafam.def$(SEAMADD)$(SEAMDEFS) $@ >nul

ibmega.def:        makefile $(FS)\egafam.def
        echo LIBRARY $(@B) >$@
        echo DESCRIPTION '$(FILEVER) EGA OS/2 PM Display Driver Library' >>$@
        copy $@+$(FS)\egafam.def $@ >nul

ibmvg132.def:     makefile $(FS)\egafam.def
        echo LIBRARY $(@B) >$@
        echo DESCRIPTION '$(FILEVER) VGA OS/2 PM Display Driver Library' >>$@
        copy $@+$(FS)\egafam.def $@ >nul

#
#  VGA Display Driver
#

$(O)\ibmvga.dll:   $(VOBJS) ibmvga.def vgares\ibmvga.res \
        $(LIB)\os2286.lib $(LIB)\os2286p.lib
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(VOBJ0)  +
$(VOBJ1)  +
$(VOBJ2A) +
$(VOBJ3)  +
$(VOBJ4)  +
$(OBJ5)   +
$(OBJ6)   +
$(OBJ7)   +
$(OBJ8)   +
$(OBJ9)   +
$(OBJ10)  +
$(OBJ11)  +
$(OBJ12)  +
$(OBJ13)  +
$(OBJ14)  +
$(OBJ15)  +
$(OBJ16)  +
$(OBJ17)  +
$(OBJ18)  +
$(OBJ19)  +
$(OBJ20)  +
$(OBJ21)  +
$(OBJ22)  +
$(OBJ23)
$@
$(@R).map
OS2286 OS2286P
$(@B).def
<<keep
        $(RC) $(RF) vgares\$(@B).res $@
        cd $(O)
        ..\$(TOOLSPATH)\$(MAPSYM) $(@B)
        cd ..

$(O)\vga.dll:   $(VOBJS) vga.def vgares\vga.res \
        $(LIB)\os2286.lib $(LIB)\os2286p.lib
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(VOBJ0)  +
$(VOBJ1)  +
$(VOBJ2A) +
$(VOBJ3)  +
$(VOBJ4)  +
$(OBJ5)   +
$(OBJ6)   +
$(OBJ7)   +
$(OBJ8)   +
$(OBJ9)   +
$(OBJ10)  +
$(OBJ11)  +
$(OBJ12)  +
$(OBJ13)  +
$(OBJ14)  +
$(OBJ15)  +
$(OBJ16)  +
$(OBJ17)  +
$(OBJ18)  +
$(OBJ19)  +
$(OBJ20)  +
$(OBJ21)  +
$(OBJ22)  +
$(OBJ23)
$@
$(@R).map
OS2286 OS2286P
$(@B).def
<<keep
        $(RC) $(RF) vgares\$(@B).res $@
        cd $(O)
        ..\$(TOOLSPATH)\$(MAPSYM) $(@B)
        cd ..

#
#  EGA Display Driver
#

$(O)\ibmega.dll:   $(EOBJS) ibmega.def egares\ibmega.res \
        $(LIB)\os2286.lib $(LIB)\os2286p.lib
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(EOBJ0) +
$(EOBJ1) +
$(EOBJ2) +
$(EOBJ3) +
$(EOBJ4) +
$(OBJ5)  +
$(OBJ6)  +
$(OBJ7)  +
$(OBJ8)  +
$(OBJ9)  +
$(OBJ10) +
$(OBJ11) +
$(OBJ12) +
$(OBJ13) +
$(OBJ14) +
$(OBJ15) +
$(OBJ16) +
$(OBJ17) +
$(OBJ18) +
$(OBJ19) +
$(OBJ20) +
$(OBJ21) +
$(OBJ22) +
$(OBJ23)
$@
$(@R).map
OS2286 OS2286P
$(@B).def
<<keep
        $(RC) $(RF) egares\$(@B).res $@
        cd $(O)
        ..\$(TOOLSPATH)\$(MAPSYM) $(@B)
        cd ..

$(O)\ega.dll:   $(EOBJS) ega.def egares\ega.res \
        $(LIB)\os2286.lib $(LIB)\os2286p.lib
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(EOBJ0) +
$(EOBJ1) +
$(EOBJ2) +
$(EOBJ3) +
$(EOBJ4) +
$(OBJ5)  +
$(OBJ6)  +
$(OBJ7)  +
$(OBJ8)  +
$(OBJ9)  +
$(OBJ10) +
$(OBJ11) +
$(OBJ12) +
$(OBJ13) +
$(OBJ14) +
$(OBJ15) +
$(OBJ16) +
$(OBJ17) +
$(OBJ18) +
$(OBJ19) +
$(OBJ20) +
$(OBJ21) +
$(OBJ22) +
$(OBJ23)
$@
$(@R).map
OS2286 OS2286P
$(@B).def
<<keep
        $(RC) $(RF) egares\$(@B).res $@
        cd $(O)
        ..\$(TOOLSPATH)\$(MAPSYM) $(@B)
        cd ..

#
#  VGA 132 column (664 pel wide) Display Driver
#

$(O)\ibmvg132.dll:   $(VOBJS2) ibmvg132.def vgares\ibmvga.res \
        $(LIB)\os2286.lib $(LIB)\os2286p.lib
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(VOBJ0)  +
$(VOBJ1)  +
$(VOBJ2B) +
$(VOBJ3)  +
$(VOBJ4)  +
$(OBJ5)   +
$(OBJ6)   +
$(OBJ7)   +
$(OBJ8)   +
$(OBJ9)   +
$(OBJ10)  +
$(OBJ11)  +
$(OBJ12)  +
$(OBJ13)  +
$(OBJ14)  +
$(OBJ15)  +
$(OBJ16)  +
$(OBJ17)  +
$(OBJ18)  +
$(OBJ19)  +
$(OBJ20)  +
$(OBJ21)  +
$(OBJ22)  +
$(OBJ23)
$@
$(@R).map
OS2286 OS2286P
$(@B).def
<<keep
        $(RC) $(RF) vgares\ibmvga.res $@
        cd $(O)
        ..\$(TOOLSPATH)\$(MAPSYM) $(@B)
        cd ..

$(O)\vga132.dll:   $(VOBJS2) vga132.def vgares\vga.res \
        $(LIB)\os2286.lib $(LIB)\os2286p.lib
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(VOBJ0)  +
$(VOBJ1)  +
$(VOBJ2B) +
$(VOBJ3)  +
$(VOBJ4)  +
$(OBJ5)   +
$(OBJ6)   +
$(OBJ7)   +
$(OBJ8)   +
$(OBJ9)   +
$(OBJ10)  +
$(OBJ11)  +
$(OBJ12)  +
$(OBJ13)  +
$(OBJ14)  +
$(OBJ15)  +
$(OBJ16)  +
$(OBJ17)  +
$(OBJ18)  +
$(OBJ19)  +
$(OBJ20)  +
$(OBJ21)  +
$(OBJ22)  +
$(OBJ23)
$@
$(@R).map
OS2286 OS2286P
$(@B).def
<<keep
        $(RC) $(RF) vgares\vga.res $@
        cd $(O)
        ..\$(TOOLSPATH)\$(MAPSYM) $(@B)
        cd ..

#****************************************************************************
