###############################################################################
#
#   OS/2 Presentation Manager Device Driver Font Driver Makefile
#
#         IBM Confidential
#
#         Copyright (c) IBM Corporation 1990, 1992
#
#         All Rights Reserved
#
###############################################################################

.IGNORE:

#   Requirements:
#
#       MASM 5.10 or greater with the environment variable INCLUDE set
#       to the directories containing the os2 include files, and LIB
#       set to the directories containing the os2 link libraries.

#   Codeview:
#
#       This option is defined to facilitate the enabling/disabling of
#       the Codeview flags on assembly and link operations.
#

ACV=
CCV=
LCV=

#   Options:
#
#       The command line may define options to MASM by defining the OPT
#       macro.  By defining the OPT parameter in the make file, any
#       possible interaction with an environment definition is avoided.
#

OPT =

#   Includes:
#
#       Define the include on up the display driver tree for this
#       particular directory.
#

INCS = -I.

#   Define the default assemble command.  This command could actually
#   be overridden from the command line, but shouldn't be.

ASM  = masm -Mx $(INCS) $(OPT) $(ACV)
CC   = cl -nologo -c -Asnw -Ox -Zp -G2 $(INCS) $(OPT) $(CCV)

#   Define the linker to use.

LINK = link386
RLINK= link

#   Define the resource compiler to use.

RC = rc
RF = -x -p

#   Define the totally generic source directory
#   For code common to ALL devices.
#

SS = .

#   Define the destination for .OBJ files
#

O = .

#   Define the directory where the makefile is invoked, relative
#   to the $(O) directory
#

MKD = .

#   Define the default assembly command
#

ASS = $(ASM) $(SS)\$(*B).asm,$(O)\$(*B).obj;
CSS = $(CC) -Fo$(O)\$(*B).obj $(SS)\$(*B).c

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

.SUFFIXES:      .obj

{$(SS)}.c{$(O)}.obj:
    $(CSS)

{$(SS)}.asm{$(O)}.obj:
    $(ASS)

{$(SS)}.asm{$(O)}.bin:
    $(ASS)
    $(RLINK) $(*B),$(*B);
    reloc $(*B) $(*B).bin
    erase $(*B).obj
    erase $(*B).exe

{$(SS)}.rc{$(O)}.res:
    $(RC) -r $(SS)\$(*B).rc $(SS)\$(*B).res

###############################################################################
#
#   Font Driver Generation
#
###############################################################################

RESP  = $(O)\pmnlsfd1.lnk $(O)\pmnlsfd2.lnk $(O)\pmnlsfd3.lnk \
        $(O)\ps55dm28.lnk $(O)\ps55dm32.lnk $(O)\ps55dm36.lnk \
        $(O)\ps55dg28.lnk $(O)\ps55dg32.lnk $(O)\ps55dg36.lnk

DLLS  = $(O)\pmnlsfd1.dll $(O)\pmnlsfd2.dll $(O)\pmnlsfd3.dll \
        $(O)\ps55dm28.dll $(O)\ps55dm32.dll $(O)\ps55dm36.dll \
        $(O)\ps55dg28.dll $(O)\ps55dg32.dll $(O)\ps55dg36.dll

FDRS  = $(O)\pmnlsfd1.fdr $(O)\pmnlsfd2.fdr $(O)\pmnlsfd3.fdr \
        $(O)\ps55dm28.fdr $(O)\ps55dm32.fdr $(O)\ps55dm36.fdr \
        $(O)\ps55dg28.fdr $(O)\ps55dg32.fdr $(O)\ps55dg36.fdr

all:    $(FDRS)

clean:
        del $(O)\*.obj
        del $(O)\*.res
        del $(O)\???d9??.bin
        del $(O)\???font.bin
        del $(O)\cp?????.bin


$(O)\fdinit.obj:    $(SS)\resmap.h
$(O)\fdapi.obj:     $(SS)\resmap.h
$(O)\fdfont.obj:    $(SS)\resmap.h
$(O)\fdpm.obj:      $(SS)\resmap.h
$(O)\fdcp.obj:      $(SS)\resmap.h
$(O)\fdwin.obj:     $(SS)\resmap.h
$(O)\fdbits.obj:    $(SS)\resmap.inc
$(O)\fddecomp.obj:  $(SS)\resmap.inc
$(O)\dllinit.obj:

# NOTE: be sure to leave one blank line ABOVE this line!
# NOTE: object lists must begin with "OBJn = ".  All but last must have
# a "\" on the last line, and there must be one line separating each group.

OBJ0 =  $(O)\fdinit.obj   $(O)\fdapi.obj    $(O)\fdfont.obj
OBJ1 =  $(O)\fdcp.obj     $(O)\fdpm.obj     $(O)\fdwin.obj
OBJ2 =  $(O)\fdbits.obj   $(O)\fddecomp.obj $(O)\dllinit.obj
OBJ9 =

$(RESP):            $(SS)\makefile
    tabify -d makefile | qgrep -B OBJ        > $(O)\$(*B).lnk
    rep "OBJ[0-9]+\s=[\t\s]*" \s               $(O)\$(*B).lnk
    rep "\$$(O)\\" \s                          $(O)\$(*B).lnk
    rep obj\s*$$ obj\s\s\+                     $(O)\$(*B).lnk
    echo $(*B).dll/EXEPACK/ALIGN:16         >> $(O)\$(*B).lnk
    echo $(*B).map/MAP/FAR                  >> $(O)\$(*B).lnk
    echo OS2286 OS2286P SLIBCEP /NOD/NOE    >> $(O)\$(*B).lnk
    echo $(*B).def                          >> $(O)\$(*B).lnk

$(DLLS):            $(O)\$(*B).lnk $(SS)\$(*B).def $(OBJ0) $(OBJ1) $(OBJ2)
    cd $(O)
    $(LINK) $(LCV) @$(*B).lnk
    mapsym $(*B)
    cd $(MKD)

$(FDRS):            $(O)\$(*B).dll $(O)\$(*B).res
    copy $(O)\$(*B).dll $(O)\$(*B).fdr
    $(RC) $(RF) $(O)\$(*B).res $(O)\$(*B).fdr

###############################################################################
#
#   Font Driver Resources Generation
#
###############################################################################

FD1RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\fd1d932.bin  $(O)\fd1d934.bin  $(O)\fd1d938.bin  \
        $(O)\fd1font.bin                                      \
        $(O)\mh12pro.bin  $(O)\mh15pro.bin  $(O)\mh18pro.bin  \
        $(O)\mz12pro.bin  $(O)\mz15pro.bin  $(O)\mz18pro.bin  \
        $(O)\mh08sys.bin  $(O)\mh10sys.bin  $(O)\mh12sys.bin  \
        $(O)\mh14sys.bin  $(O)\mh15sys.bin  $(O)\mh18sys.bin  \
        $(O)\mz08sys.bin  $(O)\mz10sys.bin  $(O)\mz12sys.bin  \
        $(O)\mz14sys.bin  $(O)\mz15sys.bin  $(O)\mz18sys.bin  \
        $(O)\mh08min.bin  $(O)\mh10min.bin  $(O)\mh12min.bin  \
        $(O)\mh14min.bin  $(O)\mh15min.bin  $(O)\mh18min.bin  \
        $(O)\mz08min.bin  $(O)\mz10min.bin  $(O)\mz12min.bin  \
        $(O)\mz14min.bin  $(O)\mz15min.bin  $(O)\mz18min.bin  \
        $(O)\mh08trm.bin  $(O)\mh10trm.bin                    \
        $(O)\mz08trm.bin  $(O)\mz10trm.bin                    \
        $(O)\min12pro.fnt $(O)\min15pro.fnt $(O)\min18pro.fnt \
        $(O)\min10sys.fnt $(O)\min14sys.fnt $(O)\min15sys.fnt \
        $(O)\min18sys.fnt

FD2RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\fd2d932.bin  $(O)\fd2d934.bin  $(O)\fd2d938.bin  \
        $(O)\fd2font.bin                                      \
        $(O)\mh08drf.bin  $(O)\mh10drf.bin  $(O)\mh12drf.bin  \
        $(O)\mh14drf.bin  $(O)\mh15drf.bin  $(O)\mh17drf.bin  \
        $(O)\mh24drf.bin  $(O)\mh27drf.bin  $(O)\mh36drf.bin  \
        $(O)\mz08drf.bin  $(O)\mz10drf.bin  $(O)\mz12drf.bin  \
        $(O)\mz14drf.bin  $(O)\mz15drf.bin  $(O)\mz17drf.bin  \
        $(O)\mz24drf.bin  $(O)\mz27drf.bin  $(O)\mz36drf.bin

FD3RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\fd3d932.bin  $(O)\fd3d934.bin  $(O)\fd3d938.bin  \
        $(O)\fd3font.bin                                      \
        $(O)\gh12pro.bin  $(O)\gh15pro.bin                    \
        $(O)\gz12pro.bin  $(O)\gz15pro.bin                    \
        $(O)\gh08sys.bin  $(O)\gh10sys.bin  $(O)\gh12sys.bin  \
        $(O)\gh14sys.bin  $(O)\gh15sys.bin  $(O)\gh18sys.bin  \
        $(O)\gz08sys.bin  $(O)\gz10sys.bin  $(O)\gz12sys.bin  \
        $(O)\gz14sys.bin  $(O)\gz15sys.bin  $(O)\gz18sys.bin  \
        $(O)\gh08got.bin  $(O)\gh10got.bin  $(O)\gh12got.bin  \
        $(O)\gh14got.bin  $(O)\gh15got.bin  $(O)\gh18got.bin  \
        $(O)\gz08got.bin  $(O)\gz10got.bin  $(O)\gz12got.bin  \
        $(O)\gz14got.bin  $(O)\gz15got.bin  $(O)\gz18got.bin  \
        $(O)\gh08trm.bin  $(O)\gh10trm.bin                    \
        $(O)\gz08trm.bin  $(O)\gz10trm.bin                    \
        $(O)\got12pro.fnt $(O)\got15pro.fnt $(O)\got10sys.fnt \
        $(O)\got14sys.fnt $(O)\got15sys.fnt $(O)\got18sys.fnt

M28RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\m28d932.bin  $(O)\m28d934.bin  $(O)\m28d938.bin  \
        $(O)\m28font.bin                                      \
        $(O)\mh21sys.bin  $(O)\mh23sys.bin                    \
        $(O)\mz21sys.bin  $(O)\mz23sys.bin                    \
        $(O)\mh21min.bin  $(O)\mh23min.bin                    \
        $(O)\mz21min.bin  $(O)\mz23min.bin                    \
        $(O)\min23sys.fnt

M32RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\m32d932.bin  $(O)\m32d934.bin  $(O)\m32d938.bin  \
        $(O)\m32font.bin                                      \
        $(O)\mh24sys.bin                                      \
        $(O)\mz24sys.bin                                      \
        $(O)\mh24min.bin                                      \
        $(O)\mz24min.bin                                      \
        $(O)\min24sys.fnt

M36RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\m36d932.bin  $(O)\m36d934.bin  $(O)\m36d938.bin  \
        $(O)\m36font.bin                                      \
        $(O)\mh27sys.bin  $(O)\mh30sys.bin                    \
        $(O)\mz27sys.bin  $(O)\mz30sys.bin                    \
        $(O)\mh27min.bin  $(O)\mh30min.bin                    \
        $(O)\mz27min.bin  $(O)\mz30min.bin                    \
        $(O)\min30sys.fnt

G28RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\g28d932.bin  $(O)\g28d934.bin  $(O)\g28d938.bin  \
        $(O)\g28font.bin                                      \
        $(O)\gh21sys.bin  $(O)\gh23sys.bin                    \
        $(O)\gz21sys.bin  $(O)\gz23sys.bin                    \
        $(O)\gh21got.bin  $(O)\gh23got.bin                    \
        $(O)\gz21got.bin  $(O)\gz23got.bin                    \
        $(O)\got23sys.fnt

G32RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\g32d932.bin  $(O)\g32d934.bin  $(O)\g32d938.bin  \
        $(O)\g32font.bin                                      \
        $(O)\gh24sys.bin                                      \
        $(O)\gz24sys.bin                                      \
        $(O)\gh24got.bin                                      \
        $(O)\gz24got.bin                                      \
        $(O)\got24sys.fnt

G36RES= $(O)\cp932.bin    $(O)\cp934.bin    $(O)\cp938.bin    \
        $(O)\g36d932.bin  $(O)\g36d934.bin  $(O)\g36d938.bin  \
        $(O)\g36font.bin                                      \
        $(O)\gh27sys.bin  $(O)\gh30sys.bin                    \
        $(O)\gz27sys.bin  $(O)\gz30sys.bin                    \
        $(O)\gh27got.bin  $(O)\gh30got.bin                    \
        $(O)\gz27got.bin  $(O)\gz30got.bin                    \
        $(O)\got30sys.fnt


$(O)\fd1d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\fd2d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\fd3d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\m28d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\m32d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\m36d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\g28d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\g32d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc
$(O)\g36d932.bin:   $(SS)\resmap.inc $(SS)\resource.inc $(SS)\metrics.inc

$(O)\pmnlsfd1.res:  $(FD1RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\pmnlsfd2.res:  $(FD2RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\pmnlsfd3.res:  $(FD3RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\ps55dm28.res:  $(M28RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\ps55dm32.res:  $(M32RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\ps55dm36.res:  $(M36RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\ps55dg28.res:  $(G28RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\ps55dg32.res:  $(G32RES) $(SS)\resmap.inc $(SS)\resource.inc
$(O)\ps55dg36.res:  $(G36RES) $(SS)\resmap.inc $(SS)\resource.inc

###############################################################################
#
#   Focafont Data Generation
#
###############################################################################

MPRO  = $(O)\mh12pro.bin  $(O)\mh15pro.bin  $(O)\mh18pro.bin  \
        $(O)\mz12pro.bin  $(O)\mz15pro.bin  $(O)\mz18pro.bin

MSYS  = $(O)\mh08sys.bin  $(O)\mh10sys.bin  $(O)\mh12sys.bin  \
        $(O)\mh14sys.bin  $(O)\mh15sys.bin  $(O)\mh18sys.bin  \
        $(O)\mh21sys.bin  $(O)\mh23sys.bin  $(O)\mh24sys.bin  \
        $(O)\mh27sys.bin  $(O)\mh30sys.bin                    \
        $(O)\mz08sys.bin  $(O)\mz10sys.bin  $(O)\mz12sys.bin  \
        $(O)\mz14sys.bin  $(O)\mz15sys.bin  $(O)\mz18sys.bin  \
        $(O)\mz21sys.bin  $(O)\mz23sys.bin  $(O)\mz24sys.bin  \
        $(O)\mz27sys.bin  $(O)\mz30sys.bin

MMIN  = $(O)\mh08min.bin  $(O)\mh10min.bin  $(O)\mh12min.bin  \
        $(O)\mh14min.bin  $(O)\mh15min.bin  $(O)\mh18min.bin  \
        $(O)\mh21min.bin  $(O)\mh23min.bin  $(O)\mh24min.bin  \
        $(O)\mh27min.bin  $(O)\mh30min.bin  $(O)\mh36min.bin  \
        $(O)\mz08min.bin  $(O)\mz10min.bin  $(O)\mz12min.bin  \
        $(O)\mz14min.bin  $(O)\mz15min.bin  $(O)\mz18min.bin  \
        $(O)\mz21min.bin  $(O)\mz23min.bin  $(O)\mz24min.bin  \
        $(O)\mz27min.bin  $(O)\mz30min.bin  $(O)\mz36min.bin

MTRM  = $(O)\mh08trm.bin  $(O)\mh10trm.bin                    \
        $(O)\mz08trm.bin  $(O)\mz10trm.bin

MDRF  = $(O)\mh08drf.bin  $(O)\mh10drf.bin  $(O)\mh12drf.bin  \
        $(O)\mh14drf.bin  $(O)\mh15drf.bin  $(O)\mh17drf.bin  \
        $(O)\mh24drf.bin  $(O)\mh27drf.bin  $(O)\mh36drf.bin  \
        $(O)\mz08drf.bin  $(O)\mz10drf.bin  $(O)\mz12drf.bin  \
        $(O)\mz14drf.bin  $(O)\mz15drf.bin  $(O)\mz17drf.bin  \
        $(O)\mz24drf.bin  $(O)\mz27drf.bin  $(O)\mz36drf.bin

GPRO  = $(O)\gh12pro.bin  $(O)\gh15pro.bin                    \
        $(O)\gz12pro.bin  $(O)\gz15pro.bin

GSYS  = $(O)\gh08sys.bin  $(O)\gh10sys.bin  $(O)\gh12sys.bin  \
        $(O)\gh14sys.bin  $(O)\gh15sys.bin  $(O)\gh18sys.bin  \
        $(O)\gh21sys.bin  $(O)\gh23sys.bin  $(O)\gh24sys.bin  \
        $(O)\gh27sys.bin  $(O)\gh30sys.bin                    \
        $(O)\gz08sys.bin  $(O)\gz10sys.bin  $(O)\gz12sys.bin  \
        $(O)\gz14sys.bin  $(O)\gz15sys.bin  $(O)\gz18sys.bin  \
        $(O)\gz21sys.bin  $(O)\gz23sys.bin  $(O)\gz24sys.bin  \
        $(O)\gz27sys.bin  $(O)\gz30sys.bin

GGOT  = $(O)\gh08got.bin  $(O)\gh10got.bin  $(O)\gh12got.bin  \
        $(O)\gh14got.bin  $(O)\gh15got.bin  $(O)\gh18got.bin  \
        $(O)\gh21got.bin  $(O)\gh23got.bin  $(O)\gh24got.bin  \
        $(O)\gh27got.bin  $(O)\gh30got.bin  $(O)\gh36got.bin  \
        $(O)\gz08got.bin  $(O)\gz10got.bin  $(O)\gz12got.bin  \
        $(O)\gz14got.bin  $(O)\gz15got.bin  $(O)\gz18got.bin  \
        $(O)\gz21got.bin  $(O)\gz23got.bin  $(O)\gz24got.bin  \
        $(O)\gz27got.bin  $(O)\gz30got.bin  $(O)\gz36got.bin

GTRM  = $(O)\gh08trm.bin  $(O)\gh10trm.bin                    \
        $(O)\gz08trm.bin  $(O)\gz10trm.bin


$(MPRO) $(MSYS) $(MMIN) $(MTRM) $(MDRF): \
                    $(SS)\metrics.asm $(SS)\metrics.inc $(SS)\mincho.inc
    $(ASM) -DMINCHO -D$(*B) $(SS)\metrics.asm,$(O)\$(*B).obj;
    $(RLINK) $(*B),$(*B);
    reloc $(*B) $(*B).bin
    erase $(*B).obj
    erase $(*B).exe

$(GPRO) $(GSYS) $(GGOT) $(GTRM): \
                    $(SS)\metrics.asm $(SS)\metrics.inc $(SS)\gothic.inc
    $(ASM) -DGOTHIC -D$(*B) $(SS)\metrics.asm,$(O)\$(*B).obj;
    $(RLINK) $(*B),$(*B);
    reloc $(*B) $(*B).bin
    erase $(*B).obj
    erase $(*B).exe

