# History:25,17

AFLAGS = /mx /zi /zd
CFLAGS = -ms -M -G- -O -Z -a -1 -d

CC=tcc
ASM=tasm

.c.obj:
	$(CC) $(CFLAGS) -DDEBUGGER=1 -DTOPLINEINFO=1 -DSOURCE_LIST -od\$*.obj -c $*
	$(CC) $(CFLAGS) -DDEBUGGER=0 -DTOPLINEINFO=0 -c $*

.asm.obj:
	$(ASM) $(AFLAGS) /DDEBUGGER=1 /DTOPLINEINFO=1 $*,d\$*;
	$(ASM) $(AFLAGS) /DDEBUGGER=0 /DTOPLINEINFO=0 $*;

OBJS =\
	control.obj\
	dalloc.obj\
	debug.obj\
	doutils.obj\
	dpmi.obj\
	event.obj\
	evintr.obj\
	exphdlr.obj\
	graphics.obj\
	grprot.obj\
	mono.obj\
	mswitch.obj\
	npx.obj\
	paging.obj\
	syms.obj\
	tables.obj\
	unassmbl.obj\
	ustat.obj\
	utils.obj\
	valloc.obj\
	vga.obj\
	wild.obj\
	xms.obj\
	vcpi.obj

all : d go32.exe go32t.exe # stub.exe aout2exe.exe exe2aout.exe

d :
	mkdir d

stub.exe: stub.c
	$(CC) $(CFLAGS) stub.c
	@del stub.obj
	-tdstrip stub

go32.exe: go32t.exe
	copy go32t.exe go32.exe
	-tdstrip go32

# Note: some tlinks require /3 here, some barf if you supply it.
go32t.exe : $(OBJS)
	$(CC) -l3 -ls $(CFLAGS) -ego32t.exe *.obj
	$(CC) -l3 -ls $(CFLAGS) -edebug32t.exe d/*.obj

bin2byte.exe : bin2byte.c
	$(CC) bin2byte.c
	@del bin2byte.obj
	-tdstrip bin2byte

stubbyte.h : bin2byte.exe stub.exe
	bin2byte stub.exe stub_bytes stubbyte.h

aout2exe.exe : aout2exe.c stubbyte.h
	$(CC) $(CFLAGS) aout2exe
	@del aout2exe.obj
	-tdstrip aout2exe

exe2aout.exe : exe2aout.c
	$(CC) $(CFLAGS) exe2aout
	@del exe2aout.obj
	-tdstrip exe2aout

sym32.h: sym32.c mksym32.c
	$(CC) -w mksym32.c
	gcc -c -O -Wall sym32.c
	strip sym32.o
	mksym32
	del mksym32.obj
	del mksym32.exe
	del sym32.o

clean :
	del d\*.obj
	del *.obj
	del *.map
	del *.exe
	del subbyte.h

new_topline : clean_topline all

clean_topline :
	del control.obj
	del dalloc.obj
	del exphdlr.obj
	del paging.obj
	del valloc.obj
	del mswitch.obj

# DEPENDENCIES

aout2exe.obj : stubbytes.h

control.obj : build.h types.h gdt.h idt.h tss.h valloc.h utils.h syms.h graphics.h mono.h vcpi.h paging.h dpmi.h

dalloc.obj : build.h types.h valloc.h dalloc.h mono.h

debug.obj : build.h types.h gdt.h tss.h utils.h unassmbl.h syms.h paging.h npx.h mono.h eventque.h

event.obj : eventque.h

exphdlr.obj : build.h types.h gdt.h idt.h tss.h utils.h paging.h npx.h mono.h vcpi.h graphics.h dpmi.h eventque.h

graphics.obj : build.h types.h paging.h graphics.h tss.h gdt.h driver.h

mono.obj : mono.h

paging.obj : build.h types.h paging.h graphics.h tss.h idt.h gdt.h valloc.h dalloc.h utils.h aout.h mono.h vcpi.h dpmi.h

syms.obj : build.h types.h syms.h tss.h stab.h aout.h utils.h

unassmbl.obj : build.h types.h gdt.h idt.h tss.h utils.h unassmbl.h syms.h mono.h

utils.obj : build.h types.h tss.h gdt.h utils.h npx.h dpmi.h

valloc.obj : build.h types.h valloc.h xms.h mono.h vcpi.h

xms.obj : xms.h

mksym32.obj : aout.h

doutils.obj : build.inc segdefs.inc tss.inc gdt.inc idt.inc

grprot.obj : build.inc segdefs.inc tss.inc gdt.inc idt.inc

mswitch.obj : build.inc segdefs.inc tss.inc gdt.inc idt.inc vcpi.inc

npx.obj : build.inc segdefs.inc tss.inc gdt.inc idt.inc

tables.obj : build.inc segdefs.inc tss.inc gdt.inc idt.inc

vcpi.obj : build.inc segdefs.inc vcpi.inc

vga.obj : segdefs.inc

dpmi.obj : segdefs.inc tss.inc
