include ../user/Makefile.inc

LIB64	= ../lib/pekoe64.a
CRT64	= ../lib/crt64.o
LIB32	= ../lib/pekoe32.a
CRT32	= ../lib/crt32.o
CFINCLUDE	= -I../include

.cpp.o:
	$(CC) $(CF64) $(CFBASE) $(CFINCLUDE) $*.cpp

all: comdump.t cpuid.t ghello.t hello.t keytest.t mouse.t nin1.t

clean:
	-rm -f *.o *.elf *.com *.tek *.exe *.ld *.t 


comdump.t: comdump32.com comdump.com
	touch comdump.t

comdump32.o: comdump.cpp comdump.o
	$(CC) $(CF32) $(CFBASE) $(CFINCLUDE) -o comdump32.o comdump.cpp

comdump32.com: comdump32.o $(LIB32) $(CRT32)
	$(LD) $(LF32) $(LFBASE) -o comdump32.ld comdump32.o $(CRT32) $(LIB32)
	$(OBJCOPY) -O elf32-i386 comdump32.ld comdump32.elf
	$(ELF2COM) comdump32.elf comdump32.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:comdump32.exe out:comdump32.tek
	$(BINDCOM) tek ../tools/sfx32.bin comdump32.tek comdump32.com

comdump.com: comdump.o $(LIB64) $(CRT64)
	$(LD) $(LF64) $(LFBASE) -o comdump.elf comdump.o $(CRT64) $(LIB64)
	$(ELF2COM) comdump.elf comdump.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:comdump.exe out:comdump.tek
	$(BINDCOM) tek ../tools/sfx64.bin comdump.tek comdump.com

comdump.o: comdump.cpp ../include/windows.h ../include/pekoe.h \
  ../include/sys/types.h ../include/sys/dos.h ../include/sys/leafapi.h \
  ../include/string.h ../include/types.h ../include/stdio.h \
  ../include/stdarg.h

cpuid.t: cpuid32.com cpuid.com
	touch cpuid.t

cpuid32.o: cpuid.cpp cpuid.o
	$(CC) $(CF32) $(CFBASE) $(CFINCLUDE) -o cpuid32.o cpuid.cpp

cpuid32.com: cpuid32.o $(LIB32) $(CRT32)
	$(LD) $(LF32) $(LFBASE) -o cpuid32.ld cpuid32.o $(CRT32) $(LIB32)
	$(OBJCOPY) -O elf32-i386 cpuid32.ld cpuid32.elf
	$(ELF2COM) cpuid32.elf cpuid32.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:cpuid32.exe out:cpuid32.tek
	$(BINDCOM) tek ../tools/sfx32.bin cpuid32.tek cpuid32.com

cpuid.com: cpuid.o $(LIB64) $(CRT64)
	$(LD) $(LF64) $(LFBASE) -o cpuid.elf cpuid.o $(CRT64) $(LIB64)
	$(ELF2COM) cpuid.elf cpuid.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:cpuid.exe out:cpuid.tek
	$(BINDCOM) tek ../tools/sfx64.bin cpuid.tek cpuid.com

cpuid.o: cpuid.cpp ../include/stdio.h ../include/pekoe.h \
  ../include/sys/types.h ../include/sys/dos.h ../include/sys/leafapi.h \
  ../include/stdarg.h ../include/string.h ../include/types.h

ghello.t: ghello32.com ghello.com
	touch ghello.t

ghello32.o: ghello.cpp ghello.o
	$(CC) $(CF32) $(CFBASE) $(CFINCLUDE) -o ghello32.o ghello.cpp

ghello32.com: ghello32.o $(LIB32) $(CRT32)
	$(LD) $(LF32) $(LFBASE) -o ghello32.ld ghello32.o $(CRT32) $(LIB32)
	$(OBJCOPY) -O elf32-i386 ghello32.ld ghello32.elf
	$(ELF2COM) ghello32.elf ghello32.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:ghello32.exe out:ghello32.tek
	$(BINDCOM) tek ../tools/sfx32.bin ghello32.tek ghello32.com

ghello.com: ghello.o $(LIB64) $(CRT64)
	$(LD) $(LF64) $(LFBASE) -o ghello.elf ghello.o $(CRT64) $(LIB64)
	$(ELF2COM) ghello.elf ghello.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:ghello.exe out:ghello.tek
	$(BINDCOM) tek ../tools/sfx64.bin ghello.tek ghello.com

ghello.o: ghello.cpp ../include/pekoe.h ../include/sys/types.h \
  ../include/sys/dos.h ../include/sys/leafapi.h ../include/stdio.h \
  ../include/stdarg.h ../include/sys/gbc.h

hello.t: hello32.com hello.com
	touch hello.t

hello32.o: hello.cpp hello.o
	$(CC) $(CF32) $(CFBASE) $(CFINCLUDE) -o hello32.o hello.cpp

hello32.com: hello32.o $(LIB32) $(CRT32)
	$(LD) $(LF32) $(LFBASE) -o hello32.ld hello32.o $(CRT32) $(LIB32)
	$(OBJCOPY) -O elf32-i386 hello32.ld hello32.elf
	$(ELF2COM) hello32.elf hello32.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:hello32.exe out:hello32.tek
	$(BINDCOM) tek ../tools/sfx32.bin hello32.tek hello32.com

hello.com: hello.o $(LIB64) $(CRT64)
	$(LD) $(LF64) $(LFBASE) -o hello.elf hello.o $(CRT64) $(LIB64)
	$(ELF2COM) hello.elf hello.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:hello.exe out:hello.tek
	$(BINDCOM) tek ../tools/sfx64.bin hello.tek hello.com

hello.o: hello.cpp ../include/System/IO/Console.h \
  ../include/System/Object.h ../include/pekoe.h ../include/sys/types.h \
  ../include/sys/dos.h ../include/sys/leafapi.h

keytest.t: keytest32.com keytest.com
	touch keytest.t

keytest32.o: keytest.cpp keytest.o
	$(CC) $(CF32) $(CFBASE) $(CFINCLUDE) -o keytest32.o keytest.cpp

keytest32.com: keytest32.o $(LIB32) $(CRT32)
	$(LD) $(LF32) $(LFBASE) -o keytest32.ld keytest32.o $(CRT32) $(LIB32)
	$(OBJCOPY) -O elf32-i386 keytest32.ld keytest32.elf
	$(ELF2COM) keytest32.elf keytest32.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:keytest32.exe out:keytest32.tek
	$(BINDCOM) tek ../tools/sfx32.bin keytest32.tek keytest32.com

keytest.com: keytest.o $(LIB64) $(CRT64)
	$(LD) $(LF64) $(LFBASE) -o keytest.elf keytest.o $(CRT64) $(LIB64)
	$(ELF2COM) keytest.elf keytest.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:keytest.exe out:keytest.tek
	$(BINDCOM) tek ../tools/sfx64.bin keytest.tek keytest.com

keytest.o: keytest.cpp ../include/pekoe.h ../include/sys/types.h \
  ../include/sys/dos.h ../include/sys/leafapi.h ../include/string.h \
  ../include/types.h ../include/System/IO/Console.h \
  ../include/System/Object.h \
  ../include/OrangePekoe/Devices/IHidInputDevice.h \
  ../include/OrangePekoe/Devices/IHidDevice.h \
  ../include/OrangePekoe/Events/IEventHandler.h

mouse.t: mouse32.com mouse.com
	touch mouse.t

mouse32.o: mouse.cpp mouse.o
	$(CC) $(CF32) $(CFBASE) $(CFINCLUDE) -o mouse32.o mouse.cpp

mouse32.com: mouse32.o $(LIB32) $(CRT32)
	$(LD) $(LF32) $(LFBASE) -o mouse32.ld mouse32.o $(CRT32) $(LIB32)
	$(OBJCOPY) -O elf32-i386 mouse32.ld mouse32.elf
	$(ELF2COM) mouse32.elf mouse32.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:mouse32.exe out:mouse32.tek
	$(BINDCOM) tek ../tools/sfx32.bin mouse32.tek mouse32.com

mouse.com: mouse.o $(LIB64) $(CRT64)
	$(LD) $(LF64) $(LFBASE) -o mouse.elf mouse.o $(CRT64) $(LIB64)
	$(ELF2COM) mouse.elf mouse.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:mouse.exe out:mouse.tek
	$(BINDCOM) tek ../tools/sfx64.bin mouse.tek mouse.com

mouse.o: mouse.cpp ../include/stdio.h ../include/pekoe.h \
  ../include/sys/types.h ../include/sys/dos.h ../include/sys/leafapi.h \
  ../include/stdarg.h ../include/sys/gbc.h ../include/System/IO/Console.h \
  ../include/System/Object.h \
  ../include/OrangePekoe/Devices/IPointerDevice.h \
  ../include/OrangePekoe/Devices/IHidDevice.h \
  ../include/OrangePekoe/Events/IEventHandler.h

nin1.t: nin132.com nin1.com
	touch nin1.t

nin132.o: nin1.cpp nin1.o
	$(CC) $(CF32) $(CFBASE) $(CFINCLUDE) -o nin132.o nin1.cpp

nin132.com: nin132.o $(LIB32) $(CRT32)
	$(LD) $(LF32) $(LFBASE) -o nin132.ld nin132.o $(CRT32) $(LIB32)
	$(OBJCOPY) -O elf32-i386 nin132.ld nin132.elf
	$(ELF2COM) nin132.elf nin132.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:nin132.exe out:nin132.tek
	$(BINDCOM) tek ../tools/sfx32.bin nin132.tek nin132.com

nin1.com: nin1.o $(LIB64) $(CRT64)
	$(LD) $(LF64) $(LFBASE) -o nin1.elf nin1.o $(CRT64) $(LIB64)
	$(ELF2COM) nin1.elf nin1.exe
	$(BIM2BIN) -osacmp -tek1 BS:0 in:nin1.exe out:nin1.tek
	$(BINDCOM) tek ../tools/sfx64.bin nin1.tek nin1.com

nin1.o: nin1.cpp ../include/stdio.h ../include/pekoe.h \
  ../include/sys/types.h ../include/sys/dos.h ../include/sys/leafapi.h \
  ../include/stdarg.h ../include/stdlib.h
