#******************************************************************************
#  Makefile for the VKBD directory
#
#       SCCSID = src/vdev/vkbd/makefile, vkbd, c.basedd, currbld 98/01/19
#
#       IBM/Microsoft Confidential
#
#       Copyright (c) IBM Corporation 1987, 1989
#       Copyright (c) Microsoft Corporation 1987, 1989
#
#       All Rights Reserved
#
#******************************************************************************

#
# ******  NOTE  ******
#
#
#        If you are using a SED command with TAB characters, many editors
#        will expand tabs causing unpredictable results in other programs.
#
#        Documentation:
#
#        Using SED command with TABS. Besure to invoke set tab save option
#        on your editor. If you don't, the program 'xyz' will not work
#        correctly.
#

!include ..\vdevsub.mak

.c.o10:
        $(CC) -DKBD101 $(OFLAGS) $(CFLAGS) $(CINC) -Fo$@ $< ;
#
# Conditional Setup Area and User Defined Macros
#


#
# Compiler and Linker Option changes from ..\VDEVSUB.MAK
#

DEF     = ..\..\..\lib\vkbd.def
DEFBASE = $(DEF)

!ifdef DBCSVDM
DEF106  = vkbd106.def
DEF101  = vkbd101.def
DEFBASE = $(DEF106)
!endif

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

OBJS  = vkbd.obj vkbdint.obj vkbdbuf.obj vkbdio.obj vkbdreq.obj vpol.obj
OBDS  = vkbd.obd vkbdint.obd vkbdbuf.obd vkbdio.obd vkbdreq.obd vpol.obd
STUBS = vkbd.stb vkbdint.obj vkbdbuf.stb vkbdio.stb vkbdreq.obj vpol.obj
OBJ10 = vkbd.o10 vkbdint.o10 vkbdbuf.o10 vkbdio.o10 vkbdreq.o10 vpol.o10

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

all:    sys

lib:
        cd ..\..\..\lib
        $(MAKE) -c vdh.lib
        cd ..\src\vdev\vkbd

!ifdef DBCSVDM
SYSEXT = vkbd101.sys
!endif

sys:    vkbdd.sys vkbd.sys vkbdstub.sys $(SYSEXT)

clean:
        if exist *.obj del *.obj
        if exist *.obd del *.obd
        if exist *.stb del *.stb
        if exist *.lnk del *.lnk
        if exist *.sys del *.sys
        if exist *.sym del *.sym
        if exist *.exe del *.exe
        if exist *.com del *.com
        if exist *.lst del *.lst
        if exist *.lsd del *.lsd
        if exist *.ltb del *.ltb
        if exist *.sin del *.sin
        if exist *.map del *.map
        if exist *.cvk del *.cvk
        if exist *.old del *.old
        if exist *.hpl del *.hpl
        if exist *.hp2 del *.hp2
        if exist *.ppr del *.ppr
        if exist *.ppx del *.ppx
        if exist *.txt del *.txt
        if exist *.stb del *.stb
        if exist *.o10 del *.o10

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

# This section would only be for specific direction as to how to create
# unique elements that are necessary to the build process. This could
# be compiling or assembling, creation of DEF files and other unique
# files.
# If all compiler and assembly rules are the same, use an inference rule to
# perform the compilation.
#

vkbd.sys: $(OBJS) $(LIBS) $(DEFBASE) makefile
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBJS)
$@
$*.map
$(LIBS)
$(DEFBASE)
<<keep
        $(MAPSYM) $*.map

vkbd101.sys: $(OBJ10) $(LIBS) $(DEF101) makefile
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBJ10)
$@
$*.map
$(LIBS)
$(DEF101)
<<keep
        $(MAPSYM) $*.map

vkbdd.sys: $(OBDS) $(LIBS) $(DEFBASE) makefile
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(OBDS)
$@
$*.map /co
$(LIBS)
$(DEFBASE)
<<keep
        $(MAPSYM) $*.map
        debstrip -o $*.cvk $*.sys

vkbdstub.sys: $(STUBS) $(LIBS) $(DEFBASE) makefile
        $(LINK) $(LFLAGS) @<<$(@B).lnk
$(STUBS)
$@
$*.map
$(LIBS)
$(DEFBASE)
<<keep
        $(MAPSYM) $*.map



#*****************************************************************************
#       List of documentation source files
#*****************************************************************************

kbd.hpl kbd.hp2 kbd.ppr kbd.ppx kbd.txt: $(DRV6)/src/equate.sci kbd.doc \
        kbdexk.sin kbdlok.sin \
        kbdext.sin kbdlot.sin \
        kbdexp.sin kbdimp.sin kbdlop.sin \
        kbdisu.isu kbdhis.sci

kbd2.doc: kbd.doc
        sed -e "s;:h3;:h1;" -e "s;:h4;:h3;" -e "s;:h5;:h4;" kbd.doc >kbd2.doc

kbd2.hpl kbd2.hp2 kbd2.ppr kbd2.ppx kbd2.txt: $(DRV6)/src/equate.sci kbd2.doc \
        kbdexk.sin kbdlok.sin \
        kbdext.sin kbdlot.sin \
        kbdexp.sin kbdimp.sin kbdlop.sin \
        kbdisu.isu kbdhis.sci

vpol.txt vpol.hpl vpol.hp2 vpol.ppr: vpol.doc  \
        ..\..\equate.sci ..\..\macros.sci


#       Document .sin dependencies

kbdexk.sin: $(DRV6)\h\vkbdpdd.h
        echo .fo off > kbd.tmp
        echo .gml off >> kbd.tmp
        echo $$include $(DRV6)\h\vkbdpdd.h, EK >> kbd.tmp
        echo .gml on >> kbd.tmp
        echo .fo on >> kbd.tmp
        sinc kbd.tmp > kbdexk.sin
        -del kbd.tmp

kbdlok.sin: vkbdp.h
        echo .fo off > kbd.tmp
        echo .gml off >> kbd.tmp
        echo $$include vkbdp.h, LK >> kbd.tmp
        echo .gml on >> kbd.tmp
        echo .fo on >> kbd.tmp
        sinc kbd.tmp > kbdlok.sin
        -del kbd.tmp

kbdext.sin: $(DRV6)\h\vkbdpdd.h
        echo .fo off > kbd.tmp
        echo .gml off >> kbd.tmp
        echo $$include $(DRV6)\h\vkbdpdd.h, ET >> kbd.tmp
        echo .gml on >> kbd.tmp
        echo .fo on >> kbd.tmp
        sinc kbd.tmp > kbdext.sin
        -del kbd.tmp

kbdlot.sin: vkbdp.h
        echo .fo off > kbd.tmp
        echo .gml off >> kbd.tmp
        echo $$include vkbdp.h, LT >> kbd.tmp
        echo .gml on >> kbd.tmp
        echo .fo on >> kbd.tmp
        sinc kbd.tmp > kbdlot.sin
        -del kbd.tmp

kbdexp.sin: vkbd.c vkbdint.c vkbdbuf.c vkbdio.c vkbdreq.c vpol.c
        echo .fo off > kbd.tmp
        echo .gml off >> kbd.tmp
        echo $$include vkbd.c, EP >> kbd.tmp
        echo $$include vkbdint.c, EP >> kbd.tmp
        echo $$include vkbdbuf.c, EP >> kbd.tmp
        echo $$include vkbdio.c, EP >> kbd.tmp
        echo $$include vkbdreq.c, EP >> kbd.tmp
        echo $$include vpol.c, EP >> kbd.tmp
        echo .gml on >> kbd.tmp
        echo .fo on >> kbd.tmp
        sinc kbd.tmp > kbdexp.sin
        -del kbd.tmp

kbdimp.sin: vkbd.c vkbdint.c vkbdbuf.c vkbdio.c vkbdreq.c
        echo :ul > kbdimp.sin
        qgrep -X "VDH[A-Za-z]*(" vkbd.c vkbdint.c vkbdio.c vkbdreq.c >1.tmp
        sed -e "s/.*\(VDH[A-Za-z]*(\).*/:li.\1)/" <1.tmp >2.tmp
        sort                                      <2.tmp >3.tmp
        uniq                                      <3.tmp >>kbdimp.sin
        echo :eul >> kbdimp.sin
        -del 1.tmp 2.tmp 3.tmp

kbdlop.sin: vkbd.c vkbdint.c vkbdbuf.c vkbdio.c vkbdreq.c vpol.c
        echo .fo off > kbd.tmp
        echo .gml off >> kbd.tmp
        echo $$include vkbd.c, LP >> kbd.tmp
        echo $$include vkbdint.c, LP >> kbd.tmp
        echo $$include vkbdbuf.c, LP >> kbd.tmp
        echo $$include vkbdio.c, LP >> kbd.tmp
        echo $$include vkbdreq.c, LP >> kbd.tmp
        echo $$include vpol.c, LP >> kbd.tmp
        echo .gml on >> kbd.tmp
        echo .fo on >> kbd.tmp
        sinc kbd.tmp > kbdlop.sin
        -del kbd.tmp

