# InterWave Kernel Makefile for Microsoft Windows Driver using C/C++ v8.0
# $Revision: 1.9 $
#

!if [SET ML=-DMASM -D_WINDOWS -Sa -Fl]
!endif
DEBUG = -Zi
PROCESSOR = -DPROC386
EXTRA =
DIR = mwdllm
LIBNAME = iw_osdm.lib
!IF "$(MODEL)"=="T"
EXTRA = $(EXTRA) -D__t__
!endif
!if "$(MODEL)"=="T" || "$(MODEL)"=="S" || "$(MODEL)"=="C"
CODESIZE = -DNEARCODE=1
!else
CODESIZE = -DNEARCODE=0
!endif
!if "$(MODEL)"=="T" || "$(MODEL)"=="S" || "$(MODEL)"=="M"
DATASIZE = -DNEARDATA=1
!else
DATASIZE = -DNEARDATA=0
!endif
!if "$(MODEL)"=="T"
MODELlc = t
!endif
!if "$(MODEL)"=="S"
MODELlc = s
!endif
!if "$(MODEL)"=="M"
MODELlc = m
!endif
!if "$(MODEL)"=="C"
MODELlc = c
!endif
!if "$(MODEL)"=="L"
MODELlc = l
!endif
!if "$(MODEL)"=="H"
MODELlc = h
!endif
!if "$(PROCESSOR)"=="-DPROC386"
EXTRA = $(EXTRA) $(PROCESSOR)
CPROC = -G3
!else
CPROC = -G2
!endif
!if "$(DEBUG)"=="-Zi"
CPROC = -G2
COPT = -W3 -Od
!else
COPT = -w -Ox -Os
!endif
OSINCDIR = os\windows
CONFIGDIR = configs\windows
CFLAGS = -nologo $(DEBUG) -Zp1 -I. -I$(OSINCDIR) -I$(CONFIGDIR) $(DATASIZE) $(CODESIZE) $(CPROC) $(COPT) -A$(MODEL) -Aw $(PROCESSOR) -Gs -GA -DIWU_PATCH_EDIT
ASMFLAGS = -nologo $(PROCESSOR) $(DEBUG) -D__$(MODELlc)__ $(CODESIZE) $(DATASIZE) /Fo$*.obj

.c.obj:
	cl -c $(CFLAGS) -Fo$(DIR)\$*.obj $*.c

OBJS= 	$(DIR)\iwinit2.obj \
	$(DIR)\iwisr1.obj \
	$(DIR)\iwisr.obj \
	$(DIR)\iwsem.obj \
	$(DIR)\iwinit.obj \
	$(DIR)\iwpnp.obj \
	$(DIR)\iwsynth.obj \
	$(DIR)\iwload.obj \
	$(DIR)\iwdetct.obj \
	$(DIR)\globals.obj \
	$(DIR)\iwmem.obj \
	$(DIR)\iwdram.obj \
	$(DIR)\iwutils.obj \
	$(DIR)\iwvoice.obj \
	$(DIR)\iwdma.obj \
	$(DIR)\iwaddr.obj \
	$(DIR)\iwatten.obj \
	$(DIR)\iwllist.obj \
	$(DIR)\iwnote.obj \
	$(DIR)\iwnote1.obj \
	$(DIR)\iwnote2.obj \
	$(DIR)\iwlfo.obj \
	$(DIR)\iwscale.obj \
	$(DIR)\timer.obj \
	$(DIR)\iwerror.obj \
	$(DIR)\iwmidi.obj \
	$(DIR)\iwuart.obj \
	$(DIR)\iwsound.obj \
	$(DIR)\iwdig.obj \
	$(DIR)\play.obj \
	$(DIR)\record.obj \
	$(DIR)\codec.obj \
	$(DIR)\play16.obj \
	$(DIR)\irq16.obj \
	$(DIR)\vars16.obj \
	$(DIR)\util16.obj \
	$(DIR)\mixer.obj \
	$(DIR)\profile.obj \
	$(DIR)\profile1.obj \
	$(DIR)\mixctl.obj \
	$(DIR)\mixbld.obj \
	$(DIR)\iwmls.obj \
	$(DIR)\list.obj \
	$(DIR)\patch.obj \
	$(DIR)\os.obj

LANGUAGES = english\kernel.mls english\patch.mls

all: $(DIR)\iw_osdm.lib $(LANGUAGES)

dist: $(LANGUAGES)
	cp english\kernel.mls $(IWPROJ)\dist\language\english
	cp english\patch.mls $(IWPROJ)\dist\language\english

english\kernel.mls: english\kernel.txt
	$(TOOLS)\mlscomp\mlscomp english\kernel.txt
english\patch.mls: english\patch.txt
	$(TOOLS)\mlscomp\mlscomp english\patch.txt
	
$(DIR)\iwainit.obj: iwainit.asm iwasm.inc globals.inc iwl.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwainit.asm
$(DIR)\iwwmem.obj: iwwmem.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwmem.asm
$(DIR)\iwwvoic.obj: iwwvoic.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwvoic.asm
$(DIR)\iwwdma.obj: iwwdma.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwdma.asm
$(DIR)\wdigital.obj: wdigital.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 wdigital.asm
$(DIR)\wrecord.obj: wrecord.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 wrecord.asm
$(DIR)\iwwnote.obj: iwwnote.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwnote.asm
$(DIR)\iwwlfo.obj: iwwlfo.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwlfo.asm
$(DIR)\iwwcodec.obj: iwwcodec.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwcodec.asm
$(DIR)\wtimer.obj: wtimer.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 wtimer.asm
$(DIR)\iwwuart.obj: iwwuart.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwuart.asm
$(DIR)\iwwsnd.obj: iwwsnd.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwwsnd.asm
$(DIR)\iwinit2.obj: iwinit2.asm iwinit.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwinit2.asm
$(DIR)\iwisr1.obj: iwisr1.asm iwasm.inc globals.inc iwl.inc
	ml -c $(ASMFLAGS) -DSEGNAME=_TEXT2 iwisr1.asm
$(DIR)\iwisr.obj: iwisr.c iw.h iwl.h globals.h
	cl -c $(CFLAGS)  -NT _TEXT2 -Fo$(DIR)\iwisr.obj iwisr.c
$(DIR)\iwsem.obj: iwsem.c iw.h iwl.h globals.h
	cl -c $(CFLAGS)  -NT _TEXT2 -Fo$(DIR)\iwsem.obj iwsem.c
$(DIR)\iwinit.obj: iwinit.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwinit.obj iwinit.c
$(DIR)\iwpnp.obj: iwpnp.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwpnp.obj iwpnp.c
$(DIR)\iwsynth.obj: iwsynth.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwsynth.obj iwsynth.c
$(DIR)\iwload.obj: iwload.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwload.obj iwload.c
$(DIR)\iwdetct.obj: iwdetct.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwdetct.obj iwdetct.c
$(DIR)\globals.obj: globals.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -Fo$(DIR)\globals.obj globals.c
$(DIR)\iwmem.obj: iwmem.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwmem.obj iwmem.c
$(DIR)\iwmem1.obj: iwmem1.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwmem1.obj iwmem1.c
$(DIR)\iwdram.obj: iwdram.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwdram.obj iwdram.c
$(DIR)\iwutils.obj: iwutils.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwutils.obj iwutils.c
$(DIR)\iwvoice.obj: iwvoice.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwvoice.obj iwvoice.c
$(DIR)\iwdma.obj: iwdma.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwdma.obj iwdma.c
$(DIR)\iwdma1.obj: iwdma1.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwdma1.obj iwdma1.c
$(DIR)\iwaddr.obj: iwaddr.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwaddr.obj iwaddr.c
$(DIR)\divisor.obj: divisor.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\divisor.obj divisor.c
$(DIR)\digital.obj: digital.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\digital.obj digital.c
$(DIR)\digpause.obj: digpause.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\digpause.obj digpause.c
$(DIR)\dignext.obj: dignext.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\dignext.obj dignext.c
$(DIR)\digpos.obj: digpos.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\digpos.obj digpos.c
$(DIR)\iwatten.obj: iwatten.c iw.h iwl.h globals.h iwatten.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwatten.obj iwatten.c
$(DIR)\iwllist.obj: iwllist.c iw.h iwl.h globals.h iwllist.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwllist.obj iwllist.c
$(DIR)\iwnote.obj: iwnote.c iw.h iwl.h globals.h iwnote.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwnote.obj iwnote.c
$(DIR)\iwnote1.obj: iwnote1.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwnote1.obj iwnote1.c
$(DIR)\iwnote2.obj: iwnote2.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwnote2.obj iwnote2.c
$(DIR)\iwlfo.obj: iwlfo.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwlfo.obj iwlfo.c
$(DIR)\iwscale.obj: iwscale.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -Fo$(DIR)\iwscale.obj iwscale.c
$(DIR)\timer.obj: timer.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\timer.obj timer.c
$(DIR)\iwerror.obj: iwerror.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwerror.obj iwerror.c
$(DIR)\iwmidi.obj: iwmidi.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwmidi.obj iwmidi.c
$(DIR)\iwuart.obj: iwuart.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwuart.obj iwuart.c
$(DIR)\iwrec.obj: iwrec.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwrec.obj iwrec.c
$(DIR)\icsmixer.obj: icsmixer.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -Fo$(DIR)\icsmixer.obj icsmixer.c
$(DIR)\voltab.obj: voltab.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\voltab.obj voltab.c
$(DIR)\iwsound.obj: iwsound.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwsound.obj iwsound.c
$(DIR)\iwdig.obj: iwdig.c iw.h iwl.h globals.h digital.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\iwdig.obj iwdig.c
$(DIR)\play.obj: play.c iw.h iwl.h globals.h digital.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\play.obj play.c
$(DIR)\record.obj: record.c iw.h iwl.h globals.h digital.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\record.obj record.c
$(DIR)\play16.obj: play16.c iw.h iwl.h globals.h codec.h digital.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\play16.obj play16.c
$(DIR)\vars16.obj: vars16.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -Fo$(DIR)\vars16.obj vars16.c
$(DIR)\util16.obj: util16.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\util16.obj util16.c
$(DIR)\codec.obj: codec.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -Fo$(DIR)\codec.obj codec.c
$(DIR)\cdcclose.obj: cdcclose.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -Fo$(DIR)\cdcclose.obj cdcclose.c
$(DIR)\irq16.obj: irq16.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\irq16.obj irq16.c
$(DIR)\mixer.obj: mixer.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -Fo$(DIR)\mixer.obj mixer.c
$(DIR)\mixctl.obj: mixctl.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -Fo$(DIR)\mixctl.obj mixctl.c
$(DIR)\mixbld.obj: mixbld.c iw.h iwl.h globals.h codec.h
	cl -c $(CFLAGS) -Fo$(DIR)\mixbld.obj mixbld.c
$(DIR)\iwmls.obj: iwmls.c iw.h iwl.h globals.h
	cl -c $(CFLAGS) -Fo$(DIR)\iwmls.obj iwmls.c
$(DIR)\patch.obj: patch.c patch.h
	cl -c $(CFLAGS) -Fo$(DIR)\patch.obj patch.c
$(DIR)\list.obj: list.c list.h
	cl -c $(CFLAGS) -Fo$(DIR)\list.obj list.c
$(DIR)\profile.obj: profile.c iw.h profile.h
	cl -c $(CFLAGS) -Fo$(DIR)\profile.obj profile.c
$(DIR)\profile1.obj: profile1.c iw.h profile.h
	cl -c $(CFLAGS) -Fo$(DIR)\profile1.obj profile1.c
$(DIR)\os.obj: $(OSINCDIR)\os.c
	cl -c $(CFLAGS) -NT _TEXT2 -Fo$(DIR)\os.obj $(OSINCDIR)\os.c

$(DIR)\$(LIBNAME): $(OBJS) makeos
	if exist $(DIR)\$(LIBNAME) del $(DIR)\$(LIBNAME)
	lib $(DIR)\$(LIBNAME) @<<makems.lnk
+$(OBJS:  = &^
+)
;
<<KEEP

clean:
	if exist $(DIR)\*.obj del $(DIR)\*.obj
	if exist $(DIR)\*.lib del $(DIR)\*.lib
	if exist $(DIR)\*.bak del $(DIR)\*.bak
	
########### segmentation ##########
#
#   INIT   is the init/exit time segment
#   _TEXT2  is the interrupt time fixed segment
#   KERNEL is the Kernel code

SEG  = $(CC) -NT TSEG $*.c
SEGA = $(ASM) -DSEGNAME=TSEG /Fo $*.obj /Ta $*.asm

# libinit.obj    : ; $(SEGA:TSEG=INIT)
# drvproc.obj    : ; $(SEG:TSEG=INIT)

	
