# minidriver makefile

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

TOOLSPATH = $(TOP)\ibmc\Cbin;
H386      = $(TOP)\ibmc\Cinclude
LIB386    = $(TOP)\ibmc\Clib
DPATH     = $(TOP)\IBMC\CHELP;
IH        = ..\h
IBMH      = ..\ibmh
INC       = ..\inc
LIB       = ..\lib

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

H = assert.h def.h driver.h funcs.h innergre.h
CCBASE   = icc /c /Gd- /Ss /Gm+ /Q+ /Kb+ -I..\ibmh -I..\h
LINKBASE = link386 /nod /map /noe
DRVLIBS  = ..\..\..\..\IBMC\CLIB\DDE4NBS.LIB ..\..\LIB\OS2386.LIB


# retail version settings
BIN     = retail
CC      = $(CCBASE) /DNDEBUG /Fo$*.obj /Ge- /DNDEBUG
LINK    = $(LINKBASE)


# overrides for debug kernel version
!ifdef DEBUG
BIN     = debug
CC      = $(CCBASE) /Fo$*.obj /Ge- /O- /DKDB
LINK    = $(LINKBASE)
!endif


# overrides for IPMD  version
!ifdef IPMD
BIN     = ipmd
CC      = $(CCBASE) /Ti+ /Fo$*.obj /Ge- /O- /DIPMD
LINK    = $(LINKBASE) /DEBUG
!endif


OBJ = \
$(BIN)\assert.obj       \
$(BIN)\attrib.obj       \
$(BIN)\bitmap.obj       \
$(BIN)\clrtable.obj     \
$(BIN)\devfunc2.obj     \
$(BIN)\devfunc3.obj     \
$(BIN)\dlg.obj          \
$(BIN)\driver.obj       \
$(BIN)\enable.obj       \
$(BIN)\escape.obj       \
$(BIN)\handler.obj      \
$(BIN)\helper.obj       \
$(BIN)\initterm.obj     \
$(BIN)\line.obj         \
$(BIN)\marker.obj       \
$(BIN)\memory.obj       \
$(BIN)\newframe.obj     \
$(BIN)\query.obj        \
$(BIN)\text.obj


#-----------------------------------------------------------------------
# pseudo targets

all: $(BIN)\mdriver.drv

debug:
  nmake DEBUG=1

retail:
  nmake

ipmd:
  nmake IPMD=1

zip:
  nmake source.zip



#-----------------------------------------------------------------------
# make target directory for obj, drv, map, sym
!if [ mkdir $(BIN) 2>nul ]
!endif



#-----------------------------------------------------------------------
# implicit build rules: to get a listing file of driver.c enter: nmake driver.lst
# implicit build rules: to get a preprocessed outfile enter: nmake driver.i

.c.lst:
        $(CCBASE) /La+e+s+j+ $*.c

.c.i:
        $(CCBASE) /P+ $*.c

.c.asm:
        $(CCBASE) /Fa+ $*.c

.c{$(BIN)}.obj:
    $(CC) $(@B).c



#-----------------------------------------------------------------------
# build a linker response file

$(BIN)\MDRIVER.RSP: makefile setea.cmd
  @echo Updating linker response file <<$(BIN)\MDRIVER.RSP
assert.obj       +
attrib.obj       +
bitmap.obj       +
clrtable.obj     +
devfunc2.obj     +
devfunc3.obj     +
dlg.obj          +
driver.obj       +
enable.obj       +
escape.obj       +
handler.obj      +
helper.obj       +
initterm.obj     +
line.obj         +
marker.obj       +
memory.obj       +
newframe.obj     +
query.obj        +
text.obj
mdriver.drv
mdriver.map
$(DRVLIBS)
..\driver.def
<<KEEP


#-----------------------------------------------------------------------
# link the drv

$(BIN)\MDRIVER.DRV: $(OBJ) driver.res driver.def  $(BIN)\MDRIVER.RSP SETEA.CMD
  cd $(BIN)
  $(LINK) @MDRIVER.RSP
  mapsym mdriver
  rc ..\driver.res mdriver.drv
  ea -e .version=$(FILEVER) mdriver.drv
  ..\setea mdriver
  cd ..




#-----------------------------------------------------------------------
# rc file

driver.res: driver.rc def.h driver.dlg
  rc -r -I ..\ibmh $*.rc


#-----------------------------------------------------------------------
# C sources compile via rule

$(BIN)\assert.obj:           assert.c         $(H)

$(BIN)\attrib.obj:           attrib.c         $(H)

$(BIN)\bitmap.obj:           bitmap.c         $(H)

$(BIN)\clrtable.obj:         clrtable.c       $(H)

$(BIN)\devfunc2.obj:         devfunc2.c       $(H)

$(BIN)\devfunc3.obj:         devfunc3.c       $(H)

$(BIN)\dlg.obj:              dlg.c            $(H)

$(BIN)\driver.obj:           driver.c         $(H)

$(BIN)\enable.obj:           enable.c         $(H)

$(BIN)\escape.obj:           escape.c         $(H)

$(BIN)\handler.obj:          handler.c        $(H)

$(BIN)\helper.obj:           helper.c         $(H)

$(BIN)\initterm.obj:         initterm.c       $(H)

$(BIN)\line.obj:             line.c           $(H)

$(BIN)\marker.obj:           marker.c         $(H)

$(BIN)\memory.obj:           memory.c         $(H)

$(BIN)\newframe.obj:         newframe.c       $(H)

$(BIN)\query.obj:            query.c          $(H)

$(BIN)\text.obj:             text.c           $(H)




#-----------------------------------------------------------------------
# zip it
source.zip: *.c *.h *.rc *.def *.dlg *.cmd readme makefile
  if exist source.zip erase source.zip
  pkzip2 source.zip $**

