#  SCCSID = "@(#)makefile       13.37 92/02/04
###############################################################################
#
# MAKE file for building Postscript Presentation Driver
# =====================================================
#
#
# External MAKE MACROs:
# =====================
#
# debug.....generate full DEBUG version of driver
# Sample Usage: nmake debug=1
#
# cv........generate codeview only ... no logging
# Sample Usage: nmake cv=1
#
# cod.......generate COD file listing source+asm/obj
# Sample Usage: nmake cod=1
#
# perf.....generates code used in page-tuning the driver
# Sample Usage: nmake perf=1
#
###############################################################################

#   The next constants can be changed on a make invocation
# 104222 - Change paths for new build tree.

MRI       = MRI
SRC       = SRC
# 104222 Change paths
# OLDMRI    = ..\..\..\$(MRI)\prntdd\pscript

!include "..\..\h\version.mak"

!if "$(_VENDOR)" == "IBM"
OSDDPATH  = \osdd
SRCPATH   = $(OSDDPATH)\$(SRC)\pscript\post32
MRIPATH   = $(OSDDPATH)\$(MRI)\pscript\post32
DRF6      = $(OSDDPATH)\drf6
# Set the dpath to point to the translated oso0001.msg file first
DPATH     = $(OSDDPATH)\$(MRI)\txt;$(OSDDPATH)\ibmc\help;$(DPATH)
TOOLSPATH = $(DRF6)\tools;$(OSDDPATH)\ibmc\bin;$(PATH)
H         = $(OSDDPATH)\src\h
H386      = $(OSDDPATH)\ibmc\include
IBMH      = $(DRF6)\ibmh
DRF6H     = $(DRF6)\h
INC       = $(DRF6)\inc
LIB       = $(DRF6)\lib
LIB386    = $(OSDDPATH)\ibmc\lib
GPLINC    = $(OSDDPATH)\src\genplib
PPDBIN    = $(SRCPATH)\ppd
PPDPATH   = $(OSDDPATH)\$(MRI)\pscript\ppd
PPBPATH   = $(MRIPATH)\ppb

!else
#********************Begin DDK environment section**************************
OSDDPATH  = $(ROOTDIR)
SRCPATH   = $(OSDDPATH)\$(SRC)\prntdd\post32
MRIPATH   = $(OSDDPATH)\$(MRI)\prntdd\post32

DRF6      = $(SRCPATH)
# Set the dpath to point to the translated oso0001.msg file first
DPATH     = $(OSDDPATH)\$(MRI)\txt;$(OSDDPATH)\ibmc\chelp;$(DPATH)
TOOLSPATH = $(OSDDPATH)\tools;$(OSDDPATH)\ibmc\Cbin;$(PATH)
H         = $(SRCPATH)\..\h
H386      = $(OSDDPATH)\ibmc\Cinclude
IBMH      = $(DRF6)\..\ibmh
DRF6H     = $(DRF6)\..\h
INC       = $(DRF6)\..\inc
LIB       = $(DRF6)\..\lib
LIB386    = $(OSDDPATH)\ibmc\Clib
GPLINC    = $(SRCPATH)\..\genplib
PPDBIN    = $(SRCPATH)\ppd
PPDPATH   = $(OSDDPATH)\$(MRI)\prntdd\ppd
PPBPATH   = $(MRIPATH)\ppb
!endif
#******************End of DDK environment section****************************

CC         = icc
H2INC      = h2inc
LINK       = link386

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

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

# THE FOLLOWING CONSTANTS SHOULD NOT BE CHANGED FROM A MAKE INVOCATION

#   Define how deep in the tree we are
ROOT=..\..

#   Define the name of some output files
#
APPNAME=pscript
LINK=link386
APP_LFLAGS = $(APPNAME).map /m /nod /noe

#   Define source of PSCRIPT SPECIFIC INCLUDE FILES
#   do not change this to be ".\inc"
PS_INCS=inc

#   Define source of where Boca Build System can deposit include files
#   do not change this to be ".\ps_inc"
BLD_INCS=ps_inc

#   Include file path for C compiler
CINC      = -I$(H386) -I$(IBMH) -I$(PS_INCS) -I$(INC) -I$(DRF6H) -I$(GPLINC) -I$(TUNERINC)
SUB_CINC  = -I$(H386) -I$(IBMH) -I..\$(PS_INCS) -DINCL_32
SUB_LIB   = ..\$(LIB386);..\$(LIB);

#   Include file path for Macro Assembler
AINC     = -I$(PS_INCS) -I$(INC)

# Lock in the env for recursive makes
!if [set INCLUDE=$(PS_INCS);$(IBMH);$(H386);$(INC);$(DRF6H)] || \
    [set LIB=$(LIB);$(LIB386);$(SUB_LIB)] ||  \
    [set PATH=$(TOOLSPATH)] || [set IPFC=$(TOOLSPATH)] || \
    [set DPATH=$(DPATH)] || [set LANG=]
!endif

# Adobe Font Metric directory
AFM=.\afm

#   MOPT is used to set the FIREWALLS switch in the asm files
#   FIREWALLS is defined by default, when making retail use
#   MOPT =          # (blank)
#   (Note that there is no -U option (undefine) in masm)
#
#   O defines the destination directory for .OBJ files, and control files
#

# If debug then we want CodeView too
!ifdef debug
!   if [set ipmd=1]
!   endif
cv=1
!endif

# Retail options
!ifndef ipmd
O    = RETAIL
LINK_CV  =  /E
!else
# IPMD options
LINK_CV  =  /CODEVIEW
O    = DEBUG
TUNEROPT = -DIPMD=1 /Ti+
noopt = 1
gpldebug = 1
!endif

# Debug options
!ifdef debug
OPT = -DDEBUG -DPRDTRACE=0 -DPRD_P5152=1 -Ti+
MOPT = -DFIREWALLS
O    = DEBUG
PPDDEBUG = -Ti+ -O-
!endif

#
# To build a non-optimized version in debug directory
# have NOOPT=1 on make command
#
#Optimize
!ifdef noopt
OPT = /O-
O = DEBUG
!else
OPT = /O+
!endif

# Page tuning requires certain parameters as well as additional headers/libraries.
TUNERINC = $(OSDDPATH)\src\tuner
!ifdef perf
TUNEROPT = -Gh+ -DPAGE_TUNE=1
TUNERLIB = $(TUNERINC)\retail\tuner.lib
GENPLIB   = $(OSDDPATH)\src\genplib\perf
O = PERF
!endif


!if "$(_VENDOR)" == "IBM"
!ifdef gpldebug
GENPLIB   = $(OSDDPATH)\src\genplib\debug
!else
GENPLIB   = $(OSDDPATH)\src\genplib\retail
!endif
#********************DDK section*****************
!else
!ifdef gpldebug
GENPLIB   = $(OSDDPATH)\src\prntdd\genplib\debug
!else
GENPLIB   = $(OSDDPATH)\src\prntdd\genplib\retail
!endif
#****************End of DDK section**************
!endif

# For page-tuning, TUNERLIB MUST be defined first so that profile hooks access
# this library, rather than the C runtime libraries.  TUNERLIB is also an
# optional parameter.
LINKLIBS  = $(TUNERLIB) $(LIB386)\dde4nbs+$(LIB)\os2386+$(LIB)\os2386p+$(GENPLIB)\genplib

# 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

#   Define debug compiler options

# Standard C Compiler Options
CLOPT= $(TUNEROPT) $(OPT) -c $(CINC) -Q+ -Ge- -Ss -Rn -Ms -Gn -Sp -W3 -Gs- -DLINT_ARGS -Fo$(O)\$(*F).obj $(LISTING)
#CLOPT= $(TUNEROPT) $(OPT) -c $(CINC) -Q+ -Ge- -Ss -Rn -Ms -Gn  -W3 -Gs- -DLINT_ARGS -Fo$(O)\$(*F).obj $(LISTING)
TOOLS_OPT= /O+ -Ss+ -Sp -W2 -DLINT_ARGS $(LISTING)

# Inference rules


# Adobe Font Metrics files

AFM01 = $(AFM)\agb.afm   $(AFM)\agbo.afm  $(AFM)\agd.afm    \
        $(AFM)\agdo.afm  $(AFM)\bd.afm    $(AFM)\bdi.afm
AFM02 = $(AFM)\bl.afm    $(AFM)\bli.afm   $(AFM)\cb.afm     \
        $(AFM)\cbo.afm   $(AFM)\cm.afm    $(AFM)\co.afm
AFM03 = $(AFM)\gal.afm   $(AFM)\gdb.afm   $(AFM)\gdbi.afm   \
        $(AFM)\gdi.afm   $(AFM)\gdrg.afm  $(AFM)\gdsb.afm
AFM04 = $(AFM)\gdsbi.afm $(AFM)\hb.afm    $(AFM)\hbo.afm    \
        $(AFM)\hm.afm    $(AFM)\ho.afm    $(AFM)\hvn.afm
AFM05 = $(AFM)\hvnb.afm  $(AFM)\hvnbo.afm $(AFM)\hvno.afm   \
        $(AFM)\lb.afm    $(AFM)\lbo.afm   $(AFM)\ld.afm
AFM06 = $(AFM)\ldo.afm   $(AFM)\ncb.afm   $(AFM)\ncbi.afm   \
        $(AFM)\nci.afm   $(AFM)\ncr.afm   $(AFM)\pb.afm
AFM07 = $(AFM)\pbi.afm   $(AFM)\pi.afm    $(AFM)\pr.afm     \
        $(AFM)\sd.afm    $(AFM)\sdi.afm   $(AFM)\sl.afm
AFM08 = $(AFM)\sli.afm   $(AFM)\sm.afm    $(AFM)\tb.afm     \
        $(AFM)\tbi.afm   $(AFM)\ti.afm    $(AFM)\tr.afm
AFM09 = $(AFM)\zc.afm    $(AFM)\zd.afm

AFMS = $(AFM01) $(AFM02) $(AFM03) $(AFM04) $(AFM05)         \
       $(AFM06) $(AFM07) $(AFM08) $(AFM09)

# List of all Printer description files
PPD = $(PPDPATH)

PPD01 = $(PPD)\39300os2.ppd $(PPD)\39600os2.ppd $(PPD)\401917us.ppd     \
        $(PPD)\401939us.ppd $(PPD)\40291730.ppd $(PPD)\40291760.ppd
PPD02 = $(PPD)\40293930.ppd $(PPD)\40293960.ppd $(PPD)\agfa94us.ppd     \
        $(PPD)\agfa__us.ppd $(PPD)\amchr518.ppd $(PPD)\apl230us.ppd
PPD03 = $(PPD)\apl380us.ppd $(PPD)\apl422us.ppd $(PPD)\ast470us.ppd     \
        $(PPD)\cc6603ps.ppd $(PPD)\cc6613ps.ppd $(PPD)\cc6613xf.ppd
PPD04 = $(PPD)\cp_pse31.ppd $(PPD)\cpper241.ppd $(PPD)\cppro518.ppd     \
        $(PPD)\cppsna10.ppd $(PPD)\cppsnb10.ppd $(PPD)\cpqpm153.ppd
PPD05 = $(PPD)\cpqpm203.ppd $(PPD)\datap_us.ppd $(PPD)\dclf02_1.ppd     \
        $(PPD)\dclf02f1.ppd $(PPD)\decln_us.ppd $(PPD)\declp_us.ppd
PPD06 = $(PPD)\dj1200c3.ppd $(PPD)\dp470_us.ppd $(PPD)\ep826051.ppd     \
        $(PPD)\epl75523.ppd $(PPD)\fs_1500.ppd  $(PPD)\fs_1500a.ppd
PPD07 = $(PPD)\fs_3500.ppd  $(PPD)\fs_3500a.ppd $(PPD)\fs_5500.ppd      \
        $(PPD)\fs_5500a.ppd $(PPD)\fs_850.ppd   $(PPD)\gener_us.ppd
PPD08 = $(PPD)\hl_10h.ppd   $(PPD)\hl_10ps.ppd  $(PPD)\hl_4ps.ppd       \
        $(PPD)\hl_8ps.ppd   $(PPD)\hp3dl2.ppd   $(PPD)\hp3l2.ppd
PPD09 = $(PPD)\hp3pl2.ppd   $(PPD)\hp3si523.ppd $(PPD)\hp4plus3.ppd     \
        $(PPD)\hp4plus6.ppd $(PPD)\hp4si_30.ppd $(PPD)\hp_3d522.ppd
PPD10 = $(PPD)\hp_3p522.ppd $(PPD)\hp_650c1.ppd $(PPD)\hpiid522.ppd     \
        $(PPD)\hpiii522.ppd $(PPD)\hpiip522.ppd $(PPD)\hplj4_30.ppd
PPD11 = $(PPD)\hplj4ml3.ppd $(PPD)\hplj4ml4.ppd $(PPD)\hplj4mp4.ppd     \
        $(PPD)\hppjxl3.ppd  $(PPD)\hs_1ps.ppd   $(PPD)\ibm20_us.ppd
PPD12 = $(PPD)\ibm30_us.ppd $(PPD)\ibm31_us.ppd $(PPD)\ibm4039p.ppd     \
        $(PPD)\ibm4079.ppd  $(PPD)\iipx.ppd     $(PPD)\imageser.ppd
PPD13 = $(PPD)\l1_380us.ppd $(PPD)\l1_425us.ppd $(PPD)\l2_471us.ppd     \
        $(PPD)\l2_493us.ppd $(PPD)\l3_470us.ppd $(PPD)\l3_471us.ppd
PPD14 = $(PPD)\l3_493us.ppd $(PPD)\l5_493us.ppd $(PPD)\lw_nt_us.ppd     \
        $(PPD)\lw_ntxus.ppd $(PPD)\n2090522.ppd $(PPD)\n2290520.ppd
PPD15 = $(PPD)\n890x505.ppd $(PPD)\nc62p__1.ppd $(PPD)\nc95___1.ppd     \
        $(PPD)\nc95f__1.ppd $(PPD)\nc97f__1.ppd $(PPD)\nc_10971.ppd
PPD16 = $(PPD)\ncol_519.ppd $(PPD)\ncps40_1.ppd $(PPD)\ncps80_1.ppd     \
        $(PPD)\nec470us.ppd $(PPD)\okol8701.ppd $(PPD)\ol830525.ppd
PPD17 = $(PPD)\ol840518.ppd $(PPD)\ol850525.ppd $(PPD)\oliv50us.ppd     \
        $(PPD)\p4455514.ppd $(PPD)\p_2000.ppd   $(PPD)\pers_cp.ppd
PPD18 = $(PPD)\q1000mc2.ppd $(PPD)\q1700524.ppd $(PPD)\q860pls2.ppd     \
        $(PPD)\q860psys.ppd $(PPD)\q_8010.ppd   $(PPD)\qcs1000.ppd
PPD19 = $(PPD)\qcs10010.ppd $(PPD)\qcs10030.ppd $(PPD)\qcsm30si.ppd     \
        $(PPD)\qms10602.ppd $(PPD)\qms16602.ppd $(PPD)\qms1725.ppd
PPD20 = $(PPD)\qms2025.ppd  $(PPD)\qms3225.ppd  $(PPD)\qms420.ppd       \
        $(PPD)\qms4525.ppd  $(PPD)\qmscs210.ppd $(PPD)\qmscs230.ppd
PPD21 = $(PPD)\qmscs_us.ppd $(PPD)\qps1500.ppd  $(PPD)\qps2000.ppd      \
        $(PPD)\qps2200.ppd  $(PPD)\qps2210.ppd  $(PPD)\qps2220.ppd
PPD22 = $(PPD)\qps410.ppd   $(PPD)\qps800.ppd   $(PPD)\qps800p.ppd      \
        $(PPD)\qps810.ppd   $(PPD)\qps810t.ppd  $(PPD)\qps815.ppd
PPD23 = $(PPD)\qps815mr.ppd $(PPD)\qps820.ppd   $(PPD)\qps820t.ppd      \
        $(PPD)\qps825.ppd   $(PPD)\qps825mr.ppd $(PPD)\qume47us.ppd
PPD24 = $(PPD)\seiko_04.ppd $(PPD)\seiko_14.ppd $(PPD)\shtfdrus.ppd     \
        $(PPD)\star_ls5.ppd $(PPD)\t1513470.ppd $(PPD)\t1535470.ppd
PPD25 = $(PPD)\tek_cpus.ppd $(PPD)\ti08__us.ppd $(PPD)\ti15__us.ppd     \
        $(PPD)\til23521.ppd $(PPD)\tim17521.ppd $(PPD)\tim35521.ppd
PPD26 = $(PPD)\timlp231.ppd $(PPD)\titrb161.ppd $(PPD)\titrbo61.ppd     \
        $(PPD)\titrbo91.ppd $(PPD)\tix17521.ppd $(PPD)\tix35521.ppd
PPD27 = $(PPD)\tk200171.ppd $(PPD)\tk200391.ppd $(PPD)\tk220171.ppd     \
        $(PPD)\tk220391.ppd $(PPD)\tkp200i1.ppd $(PPD)\tkp200j1.ppd
PPD28 = $(PPD)\tkp220i1.ppd $(PPD)\tkp220j1.ppd $(PPD)\tkp2sdj1.ppd     \
        $(PPD)\tkp2sdx1.ppd $(PPD)\tkp300i1.ppd $(PPD)\tkp300j1.ppd
PPD29 = $(PPD)\tkp480j1.ppd $(PPD)\tkph2sd1.ppd $(PPD)\tkph4801.ppd     \
        $(PPD)\tkphpx.ppd   $(PPD)\tkphpxi1.ppd $(PPD)\tkphz2j1.ppd
PPD30 = $(PPD)\tkphz3j1.ppd $(PPD)\tkphzr21.ppd $(PPD)\tkphzr31.ppd     \
        $(PPD)\tkpxe171.ppd $(PPD)\tkpxe391.ppd $(PPD)\vt600_us.ppd
PPD31 = $(PPD)\wang15us.ppd $(PPD)\wangfpus.ppd $(PPD)\xrx4215.ppd      \
        $(PPD)\xrx4219.ppd  $(PPD)\hs_1ps2.ppd  $(PPD)\p3954101.ppd
PPD32 = $(PPD)\skpsfcd1.ppd $(PPD)\tkph4401.ppd $(PPD)\fs_400.ppd       \
        $(PPD)\fs_400a.ppd  $(PPD)\fs_1550.ppd  $(PPD)\fs_1550a.ppd
PPD33 = $(PPD)\hp__clj1.ppd $(PPD)\hplj4mv1.ppd $(PPD)\hl_1260.ppd      \
        $(PPD)\xr_49001.ppd $(PPD)\xr_42201.ppd $(PPD)\xr_45051.ppd
PPD34 = $(PPD)\xr_45201.ppd $(PPD)\lexoptra.ppd $(PPD)\lex4039p.ppd     \
        $(PPD)\xr_49001.ppd $(PPD)\qcs10002.ppd $(PPD)\qms3825.ppd
PPD35 = $(PPD)\fs-3400.ppd  $(PPD)\fs-1600.ppd  $(PPD)\fs-1600a.ppd     \
        $(PPD)\fs-3400a.ppd $(PPD)\fs-850a.ppd  $(PPD)\hp1600c1.ppd
PPD36 = $(PPD)\hplj5p_1.ppd $(PPD)\timpe231.ppd $(PPD)\timp3232.ppd     \
        $(PPD)\timlp672.ppd $(PPD)\timlp233.ppd $(PPD)\timl6231.ppd

PPDS = $(PPD01) $(PPD02) $(PPD03) $(PPD04) $(PPD05) $(PPD06) $(PPD07)   \
       $(PPD08) $(PPD09) $(PPD10) $(PPD11) $(PPD12) $(PPD13) $(PPD14)   \
       $(PPD15) $(PPD16) $(PPD17) $(PPD18) $(PPD19) $(PPD20) $(PPD21)   \
       $(PPD22) $(PPD23) $(PPD24) $(PPD25) $(PPD26) $(PPD27) $(PPD28)   \
       $(PPD29) $(PPD30) $(PPD31) $(PPD32) $(PPD33) $(PPD34) $(PPD35)   \
       $(PPD36)

# Object file list  C and asm

OBJ01 = $(O)\arcs.obj     $(O)\asm2c.obj    $(O)\attrs.obj      \
        $(O)\bitmaps.obj  $(O)\bounds.obj   $(O)\box.obj
OBJ02 = $(O)\charstr.obj  $(O)\charstr2.obj $(O)\colortab.obj   \
        $(O)\config.obj   $(O)\devblock.obj $(O)\devesc.obj
OBJ03 = $(O)\devmode.obj  $(O)\download.obj $(O)\effects.obj    \
        $(O)\enable.obj   $(O)\flchkdlg.obj $(O)\fonts.obj
OBJ04 = $(O)\memory.obj   $(O)\noinstal.obj $(O)\patfill.obj    \
        $(O)\path.obj     $(O)\path2.obj    $(O)\polystuf.obj
OBJ05 = $(O)\prdevect.obj $(O)\psource.obj  $(O)\pstuner.obj    \
        $(O)\query.obj    $(O)\querybox.obj $(O)\querychr.obj
OBJ06 = $(O)\stub.obj     $(O)\surface.obj  $(O)\utlchnl.obj    \
        $(O)\utllog.obj   $(O)\utlprint.obj  $(O)\utlps.obj
OBJ07 = $(O)\xforms.obj

OBJS = $(OBJ01) $(OBJ02) $(OBJ03) $(OBJ04) $(OBJ05) $(OBJ06) $(OBJ07)   \

# These files should be built first in the order specified

ZH = $(PS_INCS)\fontres.h $(PS_INCS)\prdvect.h $(PPBPATH)\ppbs.rc

# ================================================================
#  Start of dependency list
# ================================================================
# Please DON'T remove the following line
#


all:    dofirst $(ZH)                   \
        $(MRIPATH)\$(O)\res_done        \
        $(MRIPATH)\$(O)\eas_done        \
        $(MRIPATH)\$(O)\complete.app    \
        cleanup

# Clean for the MRI directory
clean:
    cd $(MRIPATH)
    -del *.drv *.res $(APPNAME).rc *.hlp *.map *.sym
    -del $(O)\*.
    -del $(O)\post32.*
    cd $(SRCPATH)
    -del $(PPBPATH)\*.ppb
    -del $(PPBPATH)\*.rc

# This a total clean will rebuld from scratch
purge: clean
    -del *.bin *.cod *.exe *.obj seteas.cmd
    cd $(AFM)
    -del *.exe *.map *.obj *.pfm *.txt
    cd ..
    cd $(PS_INCS)
    -del *. *.? *.?? *.???
    cd ..
    cd  $(O)
!ifndef perf
    -del *.obj
!endif
    cd ..

# Clean up the HOME directory after each make - has local copies of MRI files
cleanup:
    -del *.drv *.sym
    if exist *.rc del *.dlg *.hlp *.rc
!ifdef perf
    if exist $(MRIPATH)\$(O)\*.* del $(MRIPATH)\$(O)\*.* /n
    if exist $(MRIPATH)\$(O) rd $(MRIPATH)\$(O)
!endif

#   check using a known existing file
#   delete whole inc directory only if a ps_inc directory exists
#   -if not exist $(BLD_INCS)\config.h del $(PS_INCS)\psfont.rc
#   -if not exist $(BLD_INCS)\config.h del $(PS_INCS)\prdvect.h
#   -if     exist $(BLD_INCS)\config.h del $(PS_INCS) <yes

# Make any needed directories
dofirst:
    if not exist $(O) md $(O)
!ifdef perf
# Ensure that the performance version of GENPLIB is built before
# continuing.
    cd ..\..\genplib
    nmake all perf=1
    cd $(SRCPATH)

!endif
    if not exist $(MRIPATH)\$(O) md $(MRIPATH)\$(O)
    if not exist $(PS_INCS) md $(PS_INCS)
    if not exist $(MRIPATH) md $(MRIPATH)
    if not exist $(PPBPATH) md $(PPBPATH)
#Copy to private includes directory (to maintain source compat w/MS driver)
#   -gf -s $(BLD_INCS)\* $(PS_INCS) 2>&1 1> $(O)\gf.log

seteas.cmd: $(ROOT)\dos\task\header.inc makefile $(H)\version.mak
#   Use the 16 bit EAs since driver won't load on 2.0 build machine
    echo ea -e VendorName=PSCRIPT   PSCRIPT.Drv                     >seteas.cmd
    echo ea -e RequiredDriverFiles=PSCRIPT.DRV,PSCRIPT.HLP     PSCRIPT.Drv >> seteas.cmd
    echo ea -e OptionalDriverFiles=PSCRIPT.SYM,PSHLP.SYM,*.PFA,*.PFM PSCRIPT.Drv >> seteas.cmd
    echo ea -e .VERSION=$(_VERSION21) $(APPNAME).drv   >>seteas.cmd
    echo ea -e .VERSION=$(_VERSION21) $(APPNAME).sym   >>seteas.cmd
    echo devnames -e pscript.drv                            >>seteas.cmd
    echo ea PSCRIPT.Drv                                     >>seteas.cmd

$(MRIPATH)\$(O)\res_done: $(MRIPATH)\$(O)\$(APPNAME).drv $(MRIPATH)\$(APPNAME).res
    rc $(MRIPATH)\$(APPNAME).res $(MRIPATH)\$(APPNAME).drv
    @echo Resources for $(MRI) attatched to .DRV >$(MRIPATH)\$(O)\res_done

$(MRIPATH)\$(O)\eas_done: $(MRIPATH)\$(O)\res_done seteas.cmd
    cd $(MRIPATH)
    $(SRCPATH)\seteas
    @echo EA's attatched to latest .DRV >$(O)\eas_done
    cd $(SRCPATH)

$(MRIPATH)\$(O)\complete.app: $(MRIPATH)\$(O)\eas_done
    copy $(MRIPATH)\$(APPNAME).drv $(MRIPATH)\$(O)
    copy $(MRIPATH)\$(APPNAME).sym $(MRIPATH)\$(O)
    copy $(MRIPATH)\$(APPNAME).map $(MRIPATH)\$(O)
    @echo EA's attatched to latest .DRV >$(MRIPATH)\$(O)\complete.app
!   ifdef cv
        if exist makedone.cmd makedone
        copy $(MRIPATH)\$(APPNAME).drv $(MRIPATH)\$(O)
!   endif

# Link the driver

# PAGE_TUNE
# For page-tuning, QueryTunerProcData must be exported.
$(APPNAME).def: makefile
  @echo Writing new  @<<$(APPNAME).def
LIBRARY PSCRIPT  INITINSTANCE  TERMINSTANCE

DESCRIPTION 'PRINTER DEVICE DRIVER DYNA-LINK'

PROTMODE

DATA SINGLE READWRITE LOADONCALL

CODE LOADONCALL

SEGMENTS
  DDE4_DATA32 CLASS  'DATA' NONSHARED
  global      CLASS  'DATA' SHARED
  perprocess  CLASS  'DATA' NONSHARED

EXPORTS
        OS2_PM_DRV_ENABLE           @200
        OS2_PM_DRV_DEVMODE          @201
        OS2_PM_DRV_DEVICENAMES      @202
        QueryDeviceSurface          @203
        QueryTunerProcData          @204

IMPORTS
        GetDriverInfo      = PMGRE.37
        SetDriverInfo      = PMGRE.38
        Debug32Output      = PMWIN.955
        DosQueryModFromEIP = DOSCALL1.360
<<KEEP

$(MRIPATH)\$(O)\$(APPNAME).drv: $(OBJS) $(APPNAME).def $(MRIPATH)\$(APPNAME).res \
                                $(GENPLIB)\genplib.lib
    $(LINK) /map /nod /a:4 /noe /packcode $(LINK_CV) @<<$(APPNAME).lnk
$(OBJ01)+
$(OBJ02)+
$(OBJ03)+
$(OBJ04)+
$(OBJ05)+
$(OBJ06)+
$(OBJ07)
$(APPNAME).drv
$(APP_LFLAGS)
$(LINKLIBS)
$(APPNAME).def
<<KEEP
    mapsym $(APPNAME).map
    copy $(APPNAME).drv $(MRIPATH)
    copy $(APPNAME).sym $(MRIPATH)
    copy $(APPNAME).map $(MRIPATH)


# resource creation programs

$(PS_INCS)\prdvect.h: makevect.exe $(IBMH)\pmddim.h
  makevect $(IBMH)\pmddim.h

makevect.exe: makevect.c $(IBMH)\pmddim.h
  $(CC) $(TOOLS_OPT) $(CINC) makevect.c

# Make things in the AFM subdir

$(PS_INCS)\psfont.rc $(PS_INCS)\fontres.h: $(AFM)\afm2bin.exe   \
            $(AFM)\fontprep.exe $(AFMS)
  cd $(AFM)
  fontprep
  cd ..

$(AFM)\fontprep.exe: $(AFM)\fontprep.h $(AFM)\fontprep.c
  cd $(AFM)
  $(CC) $(TOOLS_OPT) $(SUB_CINC) fontprep.c
  cd ..

$(AFM)\afm2bin.exe: $(AFM)\afm2bin.h $(AFM)\afm2bin.c
  cd $(AFM)
  $(CC) $(TOOLS_OPT) $(SUB_CINC) afm2bin.c
  cd ..

$(AFM)\fntremap.txt: $(AFM)\fntremap.exe
  cd $(AFM)
  fntremap
  cd ..

$(AFM)\fntremap.exe: $(AFM)\fntremap.c $(PS_INCS)\mapping.h
  cd $(AFM)
  $(CC) $(TOOLS_OPT) $(SUB_CINC) fntremap.c
  cd ..

# Make things in the PPD subdir
# The PPDs are kept in the MRI tree while the PPD compiler is in the SRCPATH

$(PPBPATH)\ppbs.rc $(PPBPATH)\directry.ppb: $(PPDBIN)\ppd2bin.exe  \
                            $(PPDBIN)\ppdfile.lst $(PPDS)
  cd $(PPDPATH)
  copy $(PPDBIN)\*.lst
  $(PPDBIN)\ppd2bin -i $(PPDBIN)\ppdfile.lst -o $(PPBPATH)\ -g gener_us
#   copy ppbs.rc $(PPBPATH)
#   del ppbs.rc
  -del *.lst
  cd $(SRCPATH)

$(PPDBIN)\ppd2bin.exe: $(PPDBIN)\ppd2bin.h $(PPDBIN)\ppd2bin.c $(PS_INCS)\ppdialog.h  \
                    $(PS_INCS)\fontres.h
  cd $(PPDBIN)
  $(CC) $(TOOLS_OPT) $(SUB_CINC) $(PPDDEBUG) ppd2bin.c

# Resource for the iocn file
laser.ico: $(OSDDPATH)\$(SRC)\prntdd\laser.ico
    copy $(OSDDPATH)\$(SRC)\prntdd\laser.ico
### copy $? $@  this form does not work for all makes

#Copy old pscript files
# $(MRIPATH)\update.mri: $(OLDMRI)\ppd\ppbs.rc
#     -xcopy $(OLDMRI)\ppd\*.* $(MRIPATH)\ppd /S
#     @echo MRI updated > $(MRIPATH)\update.mri

# Build the main resouce file - needs to be done in Home dir
$(MRIPATH)\$(APPNAME).res: $(MRIPATH)\config.dlg                        \
        $(PS_INCS)\config.h $(PS_INCS)\fremap.h $(PPBPATH)\ppbs.rc      \
        $(PS_INCS)\psfont.rc $(AFM)\fntremap.txt $(MRIPATH)\postscr.rc  \
        $(MRIPATH)\$(APPNAME).hlp laser.ico
  copy $(MRIPATH)\config.dlg
  copy $(MRIPATH)\postscr.rc
  copy $(MRIPATH)\$(APPNAME).hlp
  type postscr.rc $(PS_INCS)\psfont.rc $(PPBPATH)\ppbs.rc > $(APPNAME).rc
  echo icon 01 "laser.ico"  >> $(APPNAME).rc
  rc -r $(APPNAME).rc $(APPNAME).res
  copy $(APPNAME).rc  $(MRIPATH)
  copy $(APPNAME).res $(MRIPATH)

# Make the hlp file
$(MRIPATH)\$(APPNAME).hlp: $(MRIPATH)\$(APPNAME).itl ..\..\..\mri\prntdd\drvmri\common.itl
        cd $(MRIPATH)
        ipfc $(APPNAME).itl /l=$(L) /codepage=$(P) /country=$(C)
        cd $(SRCPATH)

# Compilation Commands for C files
$(O)\arcs.obj: arcs.c
    $(CC) $(CLOPT) $(*F).c

$(O)\asm2c.obj: asm2c.c
    $(CC) $(CLOPT) $(*F).c

$(O)\attrs.obj: attrs.c
    $(CC) $(CLOPT) $(*F).c

$(O)\bitmaps.obj: bitmaps.c
    $(CC) $(CLOPT) $(*F).c

$(O)\bounds.obj: bounds.c
    $(CC) $(CLOPT) $(*F).c

$(O)\box.obj : box.c
    $(CC) $(CLOPT) $(*F).c

$(O)\charstr.obj: charstr.c
    $(CC) $(CLOPT) $(*F).c

$(O)\charstr2.obj: charstr2.c
    $(CC) $(CLOPT) $(*F).c

$(O)\colortab.obj: colortab.c
    $(CC) $(CLOPT) $(*F).c

$(O)\config.obj: config.c
    $(CC) $(CLOPT) $(*F).c

$(O)\devblock.obj: devblock.c
    $(CC) $(CLOPT) $(*F).c

$(O)\devesc.obj: devesc.c
    $(CC) $(CLOPT) $(*F).c

$(O)\devmode.obj: devmode.c
    $(CC) $(CLOPT) $(*F).c

$(O)\download.obj: download.c
    $(CC) $(CLOPT) $(*F).c

$(O)\effects.obj : effects.c
    $(CC) $(CLOPT) $(*F).c

$(O)\enable.obj: enable.c
    $(CC) $(CLOPT) $(*F).c

$(O)\flchkdlg.obj: flchkdlg.c
    $(CC) $(CLOPT) $(*F).c

$(O)\fonts.obj: fonts.c
    $(CC) $(CLOPT) $(*F).c

$(O)\memory.obj: memory.c
    $(CC) $(CLOPT) $(*F).c

$(O)\noinstal.obj: noinstal.c
    $(CC) $(CLOPT) $(*F).c

$(O)\patfill.obj: patfill.c
    $(CC) $(CLOPT) $(*F).c

$(O)\path.obj: path.c
    $(CC) $(CLOPT) $(*F).c

$(O)\path2.obj: path2.c
    $(CC) $(CLOPT) $(*F).c

$(O)\polystuf.obj: polystuf.c
    $(CC) $(CLOPT) $(*F).c

$(O)\prdevect.obj: prdevect.c
    $(CC) $(CLOPT) $(*F).c

$(O)\psource.obj : psource.c
    $(CC) $(CLOPT) $(*F).c

# Include '-Gh-' as the LAST option.
# See the header in PSTUNER.C for more information.
$(O)\pstuner.obj : pstuner.c
    $(CC) $(CLOPT) -Gh- $(*F).c

$(O)\query.obj: query.c
    $(CC) $(CLOPT) $(*F).c

$(O)\querybox.obj: querybox.c
    $(CC) $(CLOPT) $(*F).c

$(O)\querychr.obj: querychr.c
    $(CC) $(CLOPT) $(*F).c

$(O)\surface.obj: surface.c
    $(CC) $(CLOPT) $(*F).c

$(O)\utlchnl.obj: utlchnl.c
    $(CC) $(CLOPT) $(*F).c

$(O)\utllog.obj: utllog.c
    $(CC) $(CLOPT) $(*F).c

$(O)\utlprint.obj: utlprint.c
    $(CC) $(CLOPT) $(*F).c

$(O)\utlps.obj: utlps.c
    $(CC) $(CLOPT) $(*F).c

$(O)\xforms.obj: xforms.c
    $(CC) $(CLOPT) $(*F).c

# Assembler

$(O)\stub.obj: stub.asm
    masm  $(AINC) $(MOPT) -DINCL_32 $(*F).asm,$(O)\$(*F).obj;

$(O)\prddyna.obj: prddyna.asm
    masm  $(AINC) $(MOPT) -DINCL_32 $(*F).asm,$(O)\$(*F).obj;

$(O)\math.obj: math.asm
    masm  $(AINC) $(MOPT)  -DINCL_32 -DPSCRIPT math.asm,$(O)\$(*F).obj;

$(O)\utlasm.obj: utlasm.asm
    masm  $(AINC) $(MOPT)  -DINCL_32 -B63 utlasm.asm,$(O)\$(*F).obj;

$(O)\errorchk.obj: errorchk.asm
    masm  $(AINC) $(MOPT)  -DINCL_32 errorchk.asm,$(O)\$(*F).obj;

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