#************************************************************************/
#*      								*/
#*	DV-GLUE		DESQview and DESQview/X Function Library	*/
#*			(c) Copyright 1988, 1992 Ralf Brown		*/
#*			All Rights Reserved.				*/
#*									*/
#*	File MAKEFILE   	                        		*/
#*									*/
#************************************************************************/
#* LastEdit: 12/30/92							*/

!if !$d(MDL)
MDL = s
!endif

!if '$(MDL)' == 't'
AMDL = __TINY__
!elif '$(MDL)' == 's'
AMDL = __SMALL__
!elif '$(MDL)' == 'm'
AMDL = __MEDIUM__
!elif '$(MDL)' == 'c'
AMDL = __COMPACT__
!elif '$(MDL)' == 'l'
AMDL = __LARGE__
!elif '$(MDL)' == 'h'
AMDL = __HUGE__
!elif '$(MDL)' == 'p'
AMDL = __LARGE__
!else
!error invalid memory model
!endif

!if '$(TYPE)' == 't'
TYPE = __TURBOC__
!else
TYPE = __MSC__
!endif

!if !$d(PASSES)
PASSES = 3
!endif

CC = tcc
CFLAGS = -m$(MDL) -O -G -Z -1- -v -a-
#  -O, -G, -Z = turn on optimizations
#  -1- = generate 8086 code only
#  -v  = turn on debugging info
#  -a- = byte alignment

LIB = tlib
LIBFLAGS = /c/0
#  /c = case-sensitive	/0 = discard embedded dependency/debug info

ASM = tasm
AFLAGS = /Zi /m$(PASSES)
#  /Zi = include debugging info in .OBJ

C_OBJS =

ASM_OBJS = dcall200.obj dcall201.obj dcall220.obj dcall223.obj dcall226.obj \
	   dcall240.obj dcall250.obj dcallx10.obj copyrght.obj wininfo.obj \
	   inlin200.obj inlin223.obj send.obj send00.obj send01.obj send10.obj \
	   stream.obj strm2stk.obj win_new.obj ds.obj objnext.obj appnew.obj spawne.obj \
	   dvinit.obj dvxinit.obj dvver.obj putchar.obj locate.obj getbuf.obj qrymem.obj \
	   handle.obj new.obj free.obj open.obj erase.obj eof.obj objectq.obj \
	   stat.obj size.obj addto.obj subfrom.obj objtype.obj objowner.obj \
	   timread.obj mbxaddr.obj timset.obj messg200.obj frame.obj string.obj \
	   alloc.obj stream0.obj setbit.obj newproc.obj disperor.obj findmail.obj \
	   qos.obj qext.obj hiram.obj vidram.obj manifest.obj kmouse.obj tskstop.obj \
	   streamsl.obj shadow.obj tvshadow.obj wincreat.obj sleep.obj stream1.obj \
	   stream2.obj qrystr0.obj qrystr2.obj panel.obj mailbox.obj keyboard.obj \
	   mailread.obj fields.obj fldstr.obj winwrite.obj winswrit.obj \
	   windows.obj winpoint.obj pointer.obj poswin.obj qrystr1.obj winwritc.obj \
	   fldqry.obj winallow.obj fldwrite.obj winreord.obj winrepch.obj messg220.obj \
	   messg226.obj messg250.obj dvxver.obj xdi.obj qdpmi.obj sendmsg.obj \
	   printf.obj fldbuild.obj dvgalloc.obj c_alloc.obj xdicall.obj xdidveop.obj \
	   sendmsg0.obj sendmsg1.obj ptrread.obj winstrm.obj qrytitle.obj qrystr.obj \
	   winasync.obj wintitle.obj tmpalloc.obj qryfield.obj tskinter.obj tsknew.obj \
	   physscrn.obj dvtxdi.obj dvsi.obj qemminit.obj qemmcall.obj qemm.obj \
	   qemmaces.obj qemmdbg.obj qemmport.obj \
           uimenu.obj uisignal.obj uiwopen.obj

!if '$(MDL)' == 'p'
pascal: dvgluetp.obj
!endif

all:	dvglue$(MDL).lib demo.exe

dvglue$(MDL).lib: modules $(C_OBJS) $(ASM_OBJS)
	del dvglue$(MDL).lib
	$(LIB) $(LIBFLAGS) $* @modules

.c.obj:
	$(CC) $(CFLAGS) -c $*

.asm.obj:
	$(ASM) /mx /D$(AMDL) /D$(TYPE) $(AFLAGS) $*

api.inc:	rules.asi
	touch api.inc

tvapi.h:	dvglue.h
	touch tvapi.h

tvstream.h:	dvstream.h
	touch tvstream.h

dvclass.h:	dvglue.h
	touch dvclass.h

copyrght.obj:	copyrght.asm rules.asi
dvgalloc.obj:	dvgalloc.asm api.inc
tmpalloc.obj:	tmpalloc.asm api.inc
c_alloc.obj:	c_alloc.asm api.inc
dcall200.obj:	dcall200.asm rules.asi
dcall201.obj:	dcall201.asm rules.asi
dcall220.obj:	dcall220.asm rules.asi
dcall223.obj:	dcall223.asm rules.asi
dcall226.obj:	dcall226.asm rules.asi
dcall240.obj:	dcall240.asm rules.asi
dcall250.obj:	dcall250.asm rules.asi
dcallx10.obj:	dcallx10.asm rules.asi
inlin200.obj:	inlin200.asm rules.asi
inlin223.obj:	inlin223.asm api.inc
send.obj:	send.asm api.inc
send00.obj:	send00.asm api.inc
send01.obj:	send01.asm api.inc
send10.obj:	send10.asm api.inc
sendmsg.obj:	sendmsg.asm rules.asi
sendmsg0.obj:	sendmsg0.asm api.inc
sendmsg1.obj:	sendmsg1.asm api.inc
messg200.obj:	messg200.asm api.inc
messg220.obj:	messg220.asm api.inc
messg226.obj:	messg226.asm api.inc
messg250.obj:	messg250.asm api.inc
strm2stk.obj:	strm2stk.asm rules.asi
stream.obj:	stream.asm api.inc
stream0.obj:	stream0.asm api.inc dvstream.inc
stream1.obj:	stream1.asm rules.asi dvstream.inc
stream2.obj:	stream2.asm rules.asi dvstream.inc
streamsl.obj:	streamsl.asm api.inc dvstream.inc
string.obj:	string.asm rules.asi
qrystr.obj:	qrystr.asm rules.asi dvstream.inc
qrystr0.obj:	qrystr0.asm api.inc dvstream.inc
qrystr1.obj:	qrystr1.asm api.inc dvstream.inc
qrystr2.obj:	qrystr2.asm api.inc dvstream.inc
ds.obj:		ds.asm rules.asi
physscrn.obj:	physscrn.asm api.inc
qrytitle.obj:	qrytitle.asm api.inc dvstream.inc
qryfield.obj:	qryfield.asm api.inc dvstream.inc
appnew.obj:	appnew.asm api.inc
spawne.obj:	spawne.asm api.inc
dvxinit.obj:	dvxinit.asm api.inc
dvinit.obj:	dvinit.asm api.inc
dvver.obj:	dvver.asm rules.asi
dvxver.obj:	dvxver.asm rules.asi
new.obj:	new.asm api.inc
free.obj:	free.asm api.inc
open.obj:	open.asm api.inc
erase.obj:	erase.asm api.inc
addto.obj:	addto.asm api.inc
subfrom.obj:	subfrom.asm api.inc
stat.obj:	stat.asm api.inc
eof.obj:	eof.asm api.inc
keyboard.obj:	keyboard.asm api.inc
mailbox.obj:	mailbox.asm api.inc
mailread.obj:	mailread.asm api.inc
objectq.obj:	objectq.asm api.inc
objowner.obj:	objowner.asm api.inc
objtype.obj:	objtype.asm api.inc
panel.obj:	panel.asm api.inc
pointer.obj:	pointer.asm api.inc
fields.obj:	fields.asm api.inc
fldstr.obj:	fldstr.asm api.inc dvstream.inc
fldqry.obj:	fldqry.asm api.inc dvstream.inc
fldwrite.obj:	fldwrite.asm api.inc dvstream.inc
fldbuild.obj:	fldbuild.asm api.inc
frame.obj:	frame.asm api.inc dvstream.inc
timread.obj:	timread.asm api.inc
printf.obj:	printf.asm api.inc
ptrread.obj:	ptrread.asm api.inc
mbxaddr.obj:	mbxaddr.asm api.inc
objnext.obj:	objnext.asm api.inc
poswin.obj:	poswin.asm api.inc
qos.obj:	qos.asm rules.asi
qext.obj:	qext.asm rules.asi
qemminit.obj:	qemminit.asm rules.asi
qemmcall.obj:	qemmcall.asm api.inc
qemm.obj:	qemm.asm api.inc
qemmaces.obj:	qemmaces.asm api.inc
qemmdbg.obj:	qemmdbg.asm api.inc
qemmport.obj:	qemmport.asm api.inc
qrymem.obj:	qrymem.asm api.inc
hiram.obj:	hiram.asm rules.asi
vidram.obj:	vidram.asm api.inc
manifest.obj:	manifest.asm rules.asi
tvshadow.obj:	tvshadow.asm rules.asi
shadow.obj:	shadow.asm rules.asi
tskinter.obj:	tskinter.asm api.inc
tsknew.obj:	tsknew.asm api.inc
tskstop.obj:	tskstop.asm rules.asi
winallow.obj:	winallow.asm api.inc dvstream.inc
winasync.obj:	winasync.asm api.inc dvstream.inc
wincreat.obj:	wincreat.asm api.inc
wininfo.obj:	wininfo.asm api.inc dvstream.inc
winwrite.obj:	winwrite.asm api.inc
winwritc.obj:	winwritc.asm api.inc
winswrit.obj:	winswrit.asm api.inc
winpoint.obj:	winpoint.asm api.inc
winreord.obj:	winreord.asm api.inc dvstream.inc
winrepch.obj:	winrepch.asm api.inc dvstream.inc
windows.obj:	windows.asm api.inc
winstrm.obj:	winstrm.asm rules.asi dvstream.inc
wintitle.obj:	wintitle.asm api.inc dvstream.inc
win_new.obj:	win_new.asm api.inc dvstream.inc
sleep.obj:	sleep.asm api.inc
qdpmi.obj:	qdpmi.asm api.inc
dvtxdi.obj:	dvtxdi.asm api.inc
dvsi.obj:	dvsi.asm api.inc
xdi.obj:	xdi.asm api.inc
xdicall.obj:	xdicall.asm api.inc
xdidveop.obj:	xdidveop.asm api.inc

uimenu.obj:	uimenu.c dvglue.h dvstream.h dvgui.h
uisignal.obj:	uisignal.c dvglue.h dvstream.h dvgui.h
uiwopen.obj:	uiwopen.c dvglue.h dvstream.h dvgui.h

dvgluetp.obj: 
	$(ASM) /mx /D__TP /D$(AMDL) $(AFLAGS) dvgluetp,dvgluetp

demo.obj: demo.c dvglue.h dvstream.h dvgui.h

demo.exe: demo.obj dvglue$(MDL).lib
	$(CC) $(CFLAGS) -v demo.obj dvglue$(MDL).lib
