CC = gcc.exe
CFLAGS = -Wall -O

.c.o:
	$(CC) -c $(CFLAGS) $<

.o.emx:
	$(CC) -o $*.emx $<

OBJS = \
	exec.o \
	poke.o \
	sig1.o \
	fork.o \
	dup.o \
	dup2.o \
	mymore.o \
	test.o \
	outp.o \
	dpmiinfo.o \
	watch.o \
	header.o \
	dpmifun.o

DPMI = dpmi.o dpmi10.o

all: exec.emx poke.emx sig1.emx fork.emx dup.emx dup2.emx mymore.emx \
	test.emx outp.emx dpmiinfo.emx watch.emx dpmifun.emx

exec.emx: exec.o
	$(CC) -o exec.emx exec.o
poke.emx: poke.o
	$(CC) -o poke.emx poke.o
sig1.emx: sig1.o
	$(CC) -o sig1.emx sig1.o
fork.emx: fork.o
	$(CC) -o fork.emx fork.o
dup.emx: dup.o
	$(CC) -o dup.emx dup.o
dup2.emx: dup2.o
	$(CC) -o dup2.emx dup2.o
mymore.emx: mymore.o
	$(CC) -o mymore.emx mymore.o
test.emx: test.o
	$(CC) -o test.emx test.o
outp.emx: outp.o
	$(CC) -o outp.emx outp.o

dpmi.o: \rsx\source\asm32\dpmi.c
	$(CC) $(CFLAGS) -c -I.. -o dpmi.o \rsx\source\asm32\dpmi.c
dpmi10.o: \rsx\source\asm32\dpmi10.S
	$(CC) $(CFLAGS) -c -x assembler-with-cpp -o dpmi10.o \rsx\source\asm32\dpmi10.s


dpmiinfo.emx: dpmiinfo.o $(DPMI)
	$(CC) -o dpmiinfo.emx dpmiinfo.o $(DPMI)
dpmiinfo.o: dpmiinfo.c
	$(CC) -c $(CFLAGS) dpmiinfo.c -I..
watch.o: watch.c
	$(CC) -c $(CFLAGS) watch.c -I..
watch.emx: watch.o
	$(CC) -o watch.emx watch.o $(DPMI)

dpmifun.emx: dpmifun.o dpmifun2.o dpmifun.h input.o $(DPMI)
	$(CC) -o dpmifun.emx dpmifun.o dpmifun2.o input.o $(DPMI)
dpmifun2.o: dpmifun2.s
	as -o dpmifun2.o dpmifun2.s
dpmifun.o: dpmifun.c dpmifun.h
	$(CC) $(CFLAGS) -I.. -c dpmifun.c


# distribution

STUB	= \rsx\bin\emxldpmi.exe

dpmifun.exe: dpmifun.emx
	strip dpmifun.emx
	emxbind -b $(STUB) dpmifun.emx \rsx\bin\dpmifun.exe

dpmiinfo.exe: dpmiinfo.emx
	strip dpmiinfo.emx
	emxbind -b $(STUB) dpmiinfo.emx \rsx\bin\dpmiinfo.exe
