#**	Makefile for Program EXAMPLES.
#
#	Functional Description.
#	This file builds the example programs for Embedded DOS.
#
#	Modification history.
#	S. E. Jones	93/09/18.	#1.106, original.
#	S. E. Jones	93/10/18.	#2.000, release.
#	S. E. Jones	93/11/05.	#2.001, added 32-bit context.
#	S. E. Jones	95/02/18.	#2.2.19, added FCB example.
#	S. E. Jones	96/05/07.	#6-XL v45, added MASM61 conditional.

#	Set MASM61=anything in the ENVIRONMENT SPACE with the SET
#	command to enable the MASM version 6.10 build.	If this is
#	disabled, Microsoft MASM 6.0 flags are used by default.
#	If you are using Borland tools to build Embedded BIOS the
#	AFLAGS and DFLAGS variables will be set to the appropriate
#	value when the environment variable BORLAND is set to anything.

.IFDEF MASM61

AFLAGS= /c /Cp /Zm /DDEBUG=0 /FoOBJ\
DFLAGS= /c /Cp /Zm /DDEBUG=1 /FoOBJ\

.ELSE

AFLAGS= /VM /c /Cp /Zm /DDEBUG=0 /FoOBJ\
DFLAGS= /VM /c /Cp /Zm /DDEBUG=1 /FoOBJ\

.ENDIF

#	Set BORLAND=anything in the ENVIRONMENT SPACE with the SET
#	command to enable the BORLAND BCC & TASM build.  If this is
#	disabled, Microsoft MSC and MASM are chosen by default.

.IFDEF BORLAND

ASM=	tasm
AFLAGS= /DBORLAND /DDEBUG=0 /m2 /ml /t /UM510
LIBS=	cl.lib
C=	bcc
CFLAGS= -c -DBORLAND -ml -nOBJ\ -w- -a-
LINK=	tlink
LFLAGS= -c -m c0l.obj
LFLAGSTSR= -c -m
MAP=	NUL

.ELSE

LINK=	link
LIBS=
LFLAGS= /MAP /SEGMENTS:512
LFLAGSTSR= /MAP /SEGMENTS:512
C=	cl
CFLAGS= /Alfw /Gs /Od /Zp1 /FoOBJ\ /Lr /c
ASM=	ML
MAP=	NUL

.ENDIF

#	Rules for building objects go here.

all: popup.exe testioh.exe mthello.exe iomulti.exe kperf.exe intlat.exe \
	simple.exe simplec.exe iohelper.exe iohelpc.exe msgport.exe \
	queue.exe sharemem.exe handles.exe mt1.exe mt1c.exe hello32.exe \
	allocseg.exe fcb.exe ts.exe timer.exe

simple.exe: obj\simple.obj
	$(LINK) $(LFLAGSTSR) obj\simple.obj,simple.exe,$(MAP),$(LIBS);

ts.exe: obj\ts.obj
	$(LINK) $(LFLAGSTSR) obj\ts.obj,ts.exe,$(MAP),$(LIBS);

fcb.exe: obj\fcb.obj obj\printf.obj
	$(LINK) $(LFLAGSTSR) obj\fcb.obj+obj\printf.obj,fcb.exe,$(MAP),$(LIBS);

allocseg.exe: obj\allocseg.obj obj\printf.obj
	$(LINK) $(LFLAGSTSR) obj\allocseg.obj+obj\printf.obj,allocseg.exe,$(MAP),$(LIBS);

mt1.exe: obj\mt1.obj obj\printf.obj
	$(LINK) $(LFLAGSTSR) obj\mt1.obj+obj\printf.obj,mt1.exe,$(MAP),$(LIBS);

iohelper.exe: obj\iohelper.obj
	$(LINK) $(LFLAGSTSR) obj\iohelper.obj,iohelper.exe,$(MAP),$(LIBS);

simplec.exe: obj\simplec.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\simplec.obj+..\lib\obj\kernel.obj,simplec.exe,$(MAP),$(LIBS);

timer.exe: obj\timer.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\timer.obj+..\lib\obj\kernel.obj,timer.exe,$(MAP),$(LIBS);

mt1c.exe: obj\mt1c.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\mt1c.obj+..\lib\obj\kernel.obj,mt1c.exe,$(MAP),$(LIBS);

iohelpc.exe: obj\iohelpc.obj ..\lib\obj\iohelp.obj
	$(LINK) $(LFLAGS) obj\iohelpc.obj+..\lib\obj\iohelp.obj,iohelpc.exe,$(MAP),$(LIBS);

msgport.exe: obj\msgport.obj ..\lib\obj\message.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\msgport.obj+..\lib\obj\message.obj+..\lib\obj\kernel.obj,msgport.exe,$(MAP),$(LIBS);

queue.exe: obj\queue.obj ..\lib\obj\queue.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\queue.obj+..\lib\obj\queue.obj+..\lib\obj\kernel.obj,queue.exe,$(MAP),$(LIBS);

sharemem.exe: obj\sharemem.obj ..\lib\obj\shrmem.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\sharemem.obj+..\lib\obj\shrmem.obj+..\lib\obj\kernel.obj,sharemem.exe,$(MAP),$(LIBS);

handles.exe: obj\handles.obj ..\lib\obj\handle.obj ..\lib\obj\intcntl.obj
	$(LINK) $(LFLAGS) obj\handles.obj+..\lib\obj\handle.obj+..\lib\obj\intcntl.obj,handles.exe,$(MAP),$(LIBS);

testioh.exe: obj\testioh.obj ..\lib\obj\kernel.obj ..\lib\obj\iohelp.obj
	$(LINK) $(LFLAGS) @testioh.lrf,testioh.exe,$(MAP),$(LIBS);

mthello.exe: obj\mthello.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\mthello+..\lib\obj\kernel,mthello.exe,$(MAP),$(LIBS);

hello32.exe: obj\hello32.obj ..\lib\obj\kernel.obj
	$(LINK) $(LFLAGS) obj\hello32+..\lib\obj\kernel,hello32.exe,$(MAP),$(LIBS);

popup.exe: obj\popbase.obj obj\popup.obj obj\printf.obj ..\lib\obj\doscall.obj \
	..\lib\obj\cprintf.obj ..\lib\obj\kernel.obj ..\lib\obj\intdos.obj \
	..\lib\obj\library.obj ..\lib\obj\heap.obj
	$(LINK) $(LFLAGSTSR) @popup.lrf,popup.exe,$(MAP),$(LIBS);

iomulti.exe: obj\iomulti.obj obj\printf.obj
	$(LINK) $(LFLAGSTSR) obj\iomulti+obj\printf,iomulti.exe,$(MAP),$(LIBS);

intlat.exe: obj\intlat.obj obj\printf.obj
	$(LINK) $(LFLAGSTSR) obj\intlat+obj\printf,intlat.exe,$(MAP),$(LIBS);

kperf.exe: obj\kperf.obj obj\printf.obj
	$(LINK) $(LFLAGSTSR) obj\kperf+obj\printf,kperf.exe,$(MAP),$(LIBS);

#	Rules for object files go here.

obj\simple.obj: simple.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) simple,obj\simple;
.ELSE
	$(ASM) $(AFLAGS) simple.asm
.ENDIF

obj\ts.obj: ts.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) ts,obj\ts;
.ELSE
	$(ASM) $(AFLAGS) ts.asm
.ENDIF

obj\fcb.obj: fcb.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) fcb,obj\fcb;
.ELSE
	$(ASM) $(AFLAGS) fcb.asm
.ENDIF

obj\allocseg.obj: allocseg.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) allocseg,obj\allocseg;
.ELSE
	$(ASM) $(AFLAGS) allocseg.asm
.ENDIF

obj\mt1.obj: mt1.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) mt1,obj\mt1;
.ELSE
	$(ASM) $(AFLAGS) mt1.asm
.ENDIF

obj\iohelper.obj: iohelper.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) iohelper,obj\iohelper;
.ELSE
	$(ASM) $(AFLAGS) iohelper.asm
.ENDIF

obj\simplec.obj: simplec.c
	$(C) $(CFLAGS) simplec.c

obj\timer.obj: timer.c
	$(C) $(CFLAGS) timer.c

obj\mt1c.obj: mt1c.c
	$(C) $(CFLAGS) mt1c.c

obj\iohelpc.obj: iohelpc.c
	$(C) $(CFLAGS) iohelpc.c

obj\msgport.obj: msgport.c
	$(C) $(CFLAGS) msgport.c

obj\queue.obj: queue.c
	$(C) $(CFLAGS) queue.c

obj\sharemem.obj: sharemem.c
	$(C) $(CFLAGS) sharemem.c

obj\handles.obj: handles.c
	$(C) $(CFLAGS) handles.c

obj\testioh.obj: testioh.c
	$(C) $(CFLAGS) testioh.c

obj\mthello.obj: mthello.c
	$(C) $(CFLAGS) mthello.c

obj\hello32.obj: hello32.c
	$(C) $(CFLAGS) hello32.c

obj\popup.obj: popup.c
	$(C) $(CFLAGS) popup.c

obj\popbase.obj: popbase.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) popbase,obj\popbase;
.ELSE
	$(ASM) $(AFLAGS) popbase.asm
.ENDIF

obj\intlat.obj: intlat.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) intlat,obj\intlat;
.ELSE
	$(ASM) $(AFLAGS) intlat.asm
.ENDIF

obj\kperf.obj: kperf.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) kperf,obj\kperf;
.ELSE
	$(ASM) $(AFLAGS) kperf.asm
.ENDIF

obj\iomulti.obj: iomulti.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) iomulti,obj\iomulti;
.ELSE
	$(ASM) $(AFLAGS) iomulti.asm
.ENDIF

obj\printf.obj: printf.asm
.IFDEF BORLAND
	$(ASM) $(AFLAGS) printf,obj\printf;
.ELSE
	$(ASM) $(AFLAGS) printf.asm
.ENDIF

# MACHINE-PRODUCED DEPENDENCIES FOLLOW
# DO NOT HAND-EDIT MAKEFILE BEYOND THIS POINT

# To rebuild this MAKEFILE, type "GSMAKE depend" (see target below).

depend:
	gsmake -x
	copy makefile makefile.old
	copy makefile.new makefile

