#****************************************************************************
#  Suffix Definition Area
#****************************************************************************

.SUFFIXES:
.SUFFIXES: .rc .c .asm .obj .res .ipf .drv


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

#***********
# Compiler Location w/ includes, libs and tools
#***********

ASM=       MASM
CC=        ICC

#***********
# Conditional Setup Area and User Defined Macros
#***********

RETAILDIR  = retail
DEBUGDIR   = debug

#                                         Make HOME = DDK\SRC\PRNTDD\42XX
HOME=      $(MAKEDIR)
HDR=       $(HOME)\..\..\DOS\TASK
42XXINC=   $(HOME)\INC
INC=       $(HOME)\..\INC
HIBM=      $(HOME)\..\IBMH
H=         $(HOME)\..\H
LIB=       $(HOME)\..\LIB
H386=      $(HOME)\..\..\..\IBMC\CINCLUDE
LIB386=    $(HOME)\..\..\..\IBMC\CLIB
CHELP=     $(HOME)\..\..\..\IBMC\CHELP
CTOOLS=    $(HOME)\..\..\..\IBMC\CBIN
MRI=       $(HOME)\..\..\..\MRI
MRIPATH=   $(MRI)\PRNTDD\42XX_SRC
TOOLS=     $(HOME)\..\..\..\TOOLS
TOOLSPATH= $(TOOLS);$(CTOOLS);
APPNAME=   DDK42XX
DEF=       $(APPNAME).DEF
LINKRSP=   $(APPNAME).LRF
SETEA=     SETEA.CMD
VERSION13= 13.450
CINC =     -I$(42XXINC)
AINC =     -I$(42XXINC)
LIBS =     $(LIB386)\DDE4NBS.LIB $(LIB)\OS2386.LIB $(LIB)\OS2386P.LIB

#***********
#   Define macro for language. If the language macro is not defined, the
#   default language is US.
#***********

!ifndef LANG
LANG=us
!endif

# **********
# Since many the compiler/linker and related tools use environment
# variables ( INCLUDE, LIB, etc ) in order to get the location of files,
# the following line will check the environment for the LIFE of the
# makefile and will be specific to this set of instruction. All MAKEFILES
# are requested to use this format in insure that they are using the correct
# level of files and tools.
# ***********


!if [set INCLUDE=$(H386);$(HIBM);$(H);$(HOME);$(INC);$(42XXINC)]    \
    || [set LIB=$(LIB386);$(LIB)] || [set PATH=$(TOOLSPATH);%PATH%] \
    || [set IPFC=$(TOOLSPATH)] || [set DPATH=$(CHELP);%DPATH%)]
!endif

#***********
# Compiler,Linker, and Debug Options.
#***********

#***********
# Debug options
#***********
!ifdef debug
RETAILDIR = debug
!   if [set ipmd=1]
!   endif
ipmd=1
!endif

#***********
# Retail options
#***********
!ifndef ipmd
OPT  = -UDEBUG -Oilt
O    = $(RETAILDIR)
LINK_IPMD  =  /E
!else
# IPMD options
LINK_IPMD  =  /CO
OPT  = -Ti+
O    = $(DEBUGDIR)
!endif

# Generate COD file if user specifies cod=1
!ifdef cod
LISTING = -Fa$(*F).out
!endif

# Generate listing
!ifdef lst
LISTING = /Fl- /Ls+ /Lp32767 /Fc+ /Kb+
!endif

DBG     = /Gs- /DIBM42XX_DRV=1
LINKFLAGS = /a:4 /E /nod /map /noe
CFLAGS = /C /Ss+ /Gn+ /Ge- /Rn /Gd- /Ms /W2  $(OPT) $(DBG) /DIBM42XX_DRV=1 /DLINT_ARGS $(CINC) -Fo$(O)\$(*F).obj $(LISTING)

!if [if not exist $(HOME)\$(O) md $(HOME)\$(O)]
!endif

#*************
# Include a makefile with all the information about MRI Codepage, Language,
# and Country for IPFC.
#*************

!include "$(H)\preipfc.mak"
!include "$(H)\version.mak"

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

OBJ1 =  $(O)\fontxfrm.obj $(O)\prddyna.obj  $(O)\asmutils.obj $(O)\prdinit.obj
OBJ2 =  $(O)\prdakern.obj $(O)\prdapage.obj $(O)\prdaqery.obj $(O)\prdarfnt.obj
OBJ3 =  $(O)\prdarsub.obj $(O)\prdasetb.obj $(O)\prdasetg.obj $(O)\prdbblt.obj
OBJ4 =  $(O)\prdbcrea.obj $(O)\prdbctab.obj $(O)\prdbdata.obj $(O)\prdbdelt.obj
OBJ5 =  $(O)\prdbexin.obj $(O)\prdbgetb.obj $(O)\prdbgetp.obj $(O)\prdbgrey.obj
OBJ6 =  $(O)\prdbimag.obj $(O)\prdbinex.obj $(O)\prdbmark.obj $(O)\prdbsele.obj
OBJ7 =  $(O)\prdbsetp.obj $(O)\prdbsubr.obj $(O)\prdcctab.obj $(O)\prdcqery.obj
OBJ8 =  $(O)\prdcqtab.obj $(O)\prdcsubr.obj $(O)\prddntft.obj $(O)\prdd42ft.obj
OBJ9 =  $(O)\prdd42XX.obj $(O)\prddata.obj  $(O)\prddest.obj  $(O)\prdebcls.obj
OBJ10 = $(O)\prdecopn.obj $(O)\prdeddc.obj  $(O)\prdedpdb.obj $(O)\prdeedc.obj
OBJ11 = $(O)\prdefldb.obj $(O)\prdefont.obj $(O)\prdefpdb.obj $(O)\prdenabl.obj
OBJ12 = $(O)\prderset.obj $(O)\prderstr.obj $(O)\prdesave.obj $(O)\prdesub1.obj
OBJ13 = $(O)\prdesub2.obj $(O)\prdesub3.obj $(O)\prdesubr.obj $(O)\prdfdfnt.obj
OBJ14 = $(O)\prdgaccb.obj $(O)\prdgaddb.obj $(O)\prdgconv.obj $(O)\prdgheap.obj
OBJ15 = $(O)\prdgpraw.obj $(O)\prdgxfrm.obj $(O)\prdiclip.obj $(O)\prdiline.obj
OBJ16 = $(O)\prdjsubr.obj $(O)\prdjqstd.obj $(O)\prdldraw.obj $(O)\prdlgetc.obj
OBJ17 = $(O)\prdlgeto.obj $(O)\prdlgrat.obj $(O)\prdlpoly.obj $(O)\prdlsetc.obj
OBJ18 = $(O)\prdlseto.obj $(O)\prdlshrt.obj $(O)\prdlsubr.obj $(O)\prdmconn.obj
OBJ19 = $(O)\prdmconv.obj $(O)\prdmcpge.obj $(O)\prdmdev.obj  $(O)\prdmdfnt.obj
OBJ20 = $(O)\prdmdlg.obj  $(O)\prdmdsub.obj $(O)\prdmentr.obj $(O)\prdmfile.obj
OBJ21 = $(O)\prdmhelp.obj $(O)\prdmjob.obj  $(O)\prdmmain.obj $(O)\prdmsub1.obj
OBJ22 = $(O)\prdmsubr.obj $(O)\prdngpim.obj $(O)\prdodc.obj   $(O)\prdodraw.obj
OBJ23 = $(O)\prdpinit.obj $(O)\prdpprep.obj $(O)\prdprint.obj $(O)\prdpwrit.obj
OBJ24 = $(O)\prdperr.obj  $(O)\prdprast.obj $(O)\prdpstrt.obj $(O)\prdpsubr.obj
OBJ25 = $(O)\prdptext.obj $(O)\prdqedoc.obj $(O)\prdqesc.obj  $(O)\prdqesub.obj
OBJ26 = $(O)\prdqhcc.obj  $(O)\prdqname.obj $(O)\prdqqery.obj $(O)\prdring3.obj
OBJ27 = $(O)\prdspoly.obj $(O)\prdtcstr.obj $(O)\prdupatt.obj $(O)\prdssubr.obj
OBJ28 = $(O)\prdtdfnt.obj $(O)\prdtefnt.obj $(O)\prdtesub.obj $(O)\prdtqery.obj
OBJ29 = $(O)\prdtsubr.obj $(O)\prdutils.obj $(O)\prdtxfrm.obj $(O)\prdzdriv.obj
OBJ30 = $(O)\prdztrac.obj $(O)\prd42sr2.obj $(O)\newbmps.obj
OBJS  = $(OBJ1) $(OBJ2) $(OBJ3) $(OBJ4) $(OBJ5) $(OBJ6) $(OBJ7) $(OBJ8)  \
        $(OBJ9) $(OBJ10) $(OBJ11) $(OBJ12) $(OBJ13) $(OBJ14) $(OBJ15)    \
        $(OBJ16) $(OBJ17) $(OBJ18) $(OBJ19) $(OBJ20) $(OBJ21) $(OBJ22)   \
        $(OBJ23) $(OBJ24) $(OBJ25) $(OBJ26) $(OBJ27) $(OBJ28) $(OBJ29)   \
        $(OBJ30)

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

.asm{$(O)}.obj:
        $(ASM) $(AINC) -DINCL_32 $(*F).asm,$(O)\$(*F).obj;

.c{$(O)}.obj:
        $(CC) $(CFLAGS) $(*F).c

#
# Should be the default tag for all general processing
#

all: $(APPNAME).res $(MRIPATH)\prd42xx.ipf makegen prdutils.obj $(OBJS) $(LIBS)
        link386 @$(LINKRSP)
        rc $(APPNAME).res $(APPNAME).drv
        mapsym $(APPNAME).map
        devnames -e$(APPNAME).drv
        call setea

$(APPNAME).res: $(MRIPATH)\prd42xx.rc $(MRIPATH)\prd42fmf.rc \
                $(MRIPATH)\prd42xx.dlg $(42XXINC)\prdd42xx.h \
                $(MRIPATH)\prd42xxh.rc
    copy $(MRIPATH)\PRD42XX.DLG $(HOME)\PRD42XX.DLG
    copy $(MRIPATH)\PRD42XX.RC  $(HOME)\PRD42XX.RC
    copy $(MRIPATH)\PRD42XXH.RC $(HOME)\PRD42XXH.RC
    copy $(MRIPATH)\PRD42FMF.RC $(HOME)\PRD42FMF.RC
    rc -r prd42xx.rc $(APPNAME).res

$(MRIPATH)\prd42xx.ipf:
    ipfc $(MRIPATH)\prd42xx.ipf /l=$(L) /codepage=$(P) /country=$(C)
    copy prd42xx.hlp $(APPNAME).hlp

#*************
#   MAKEFILE generated files
#*************

makegen: setea linkrsp linkdef

setea: makefile
    Rem  Create the SETEA.CMD file <<$(SETEA)
eautil $(APPNAME).drv $(APPNAME).ea /s /r /p
eautil $(APPNAME).drv $(APPNAME).ea /j /m
ea -e VendorName=$(APPNAME) $(APPNAME).Drv
ea -e RequiredDriverFiles=$(APPNAME).DRV $(APPNAME).Drv
ea -e OptionalDriverFiles=$(APPNAME).hlp $(APPNAME).drv
ea -e .version=$(VERSION13) $(APPNAME).drv
ea -e .version=$(VERSION13) $(APPNAME).sym
<<keep

linkrsp: makefile
   Rem Create the Linker Response File <<$(LINKRSP)
$(OBJ1)+$(OBJ2)+
$(OBJ3)+$(OBJ4)+
$(OBJ5)+$(OBJ6)+
$(OBJ7)+$(OBJ8)+
$(OBJ9)+$(OBJ10)+
$(OBJ11)+$(OBJ12)+
$(OBJ13)+$(OBJ14)+
$(OBJ15)+$(OBJ16)+
$(OBJ17)+$(OBJ18)+
$(OBJ19)+$(OBJ20)+
$(OBJ21)+$(OBJ22)+
$(OBJ23)+$(OBJ24)+
$(OBJ25)+$(OBJ26)+
$(OBJ27)+$(OBJ28)+
$(OBJ29)+$(OBJ30)
$(APPNAME).drv
$(APPNAME).map $(LINKFLAGS)
$(LIB)\os2386.lib+
$(LIB)\os2386p.lib+
$(LIB386)\dde4nbs.lib
$(DEF)
<<keep

linkdef: makefile
   Rem Create the Linker Definition File <<$(DEF)
LIBRARY DDK42XX INITGLOBAL TERMGLOBAL
DESCRIPTION '$(FILEVER) DDK 42XX PRINTER DEVICE DRIVER DYNA-LINK'
DATA MOVEABLE SINGLE
HEAPSIZE 65535
STACKSIZE 65535

SEGMENTS
         _42XX     CLASS 'CODE'   CONFORMING

EXPORTS
        prdm_MainDlgProc               @2
        OS2_PM_DRV_ENABLE              @200
        OS2_PM_DRV_DEVMODE             @201
        OS2_PM_DRV_DEVICENAMES         @202
        DrvInstall                     @210

IMPORTS
    ;   GreGetClipRects               =PMGRE.3
    ;   GreConvert                    =PMGRE.3
    ;   GreCreateJournal              =PMGRE.3
    ;   GreDeleteJournal              =PMGRE.3
    ;   GreStartJournal               =PMGRE.3
    ;   GreStopJournal                =PMGRE.3
    ;   GrePlayJournal                =PMGRE.3
    ;   GreOpenJournal                =PMGRE.3
    ;   GreQueryCodePageVector        =PMGRE.3
        GetDriverInfo                 =PMGRE.37
        WinCreateHelpInstance         =HELPMGR.51
        WinDestroyHelpInstance        =HELPMGR.52
        WinAssociateHelpInstance      =HELPMGR.54
<<keep
