PATH_SDCC=C:\SDCC

RM = del
AZ80 = $(PATH_SDCC)\BIN\as-z80
CZ80 = $(PATH_SDCC)\BIN\sdcc
LZ80 = $(PATH_SDCC)\BIN\link-z80
HEX2BIN = $(PATH_SDCC)\BIN\hex2bin

CZ80_OPT=-mz80 -c --codeseg CODE
AZ80_OPT=-plosgff

VERSION_FILE = $(PATH_SDCC)\include\version.h

%.o:	%.c
	$(CZ80) $*.c $(CZ80_OPT)

SRAM_OBJS = main.o ce3.o datatype.o dm9000.o isr_gpio.o ksz8842.o lcd.o math.o ne2000.o
FONT_OBJS = font.o
FLASH0_OBJS = buf.o data.o heap.o line.o misc.o options.o rand.o syslog.o udpdebug.o
FLASH1_OBJS = adc_key.o dtmf.o function.o gpio_key.o led.o serial.o slic.o time.o
FLASH2_OBJS = dhcp.o dns.o net.o ppp.o pppoe.o sntp.o stun.o tftp.o
FLASH3_OBJS = http.o httpc.o ap_innom.o
FLASH4_OBJS = call_log.o menu.o settings.o ui_str.o
FLASH5_OBJS = iax2.o protocol.o rtps.o sips.o
FLASH6_OBJS = auth.o md5.o rc4.o sha1.o hmac_sha1.o pbkdf2_sha1.o
FLASH7_OBJS = digitmap.o rtpr.o sipr.o


all:	main.bin

main.o: main.c $(VERSION_FILE)
	$(CZ80) main.c $(CZ80_OPT)0
	
ce3.o: ce3.c $(VERSION_FILE)
	$(CZ80) ce3.c $(CZ80_OPT)0
	
datatype.o: datatype.s
	$(AZ80) $(AZ80_OPT) datatype.o $^
	
dm9000.o: dm9000.c $(VERSION_FILE)
	$(CZ80) dm9000.c $(CZ80_OPT)0

isr_gpio.o: isr_gpio.c $(VERSION_FILE)
	$(CZ80) isr_gpio.c $(CZ80_OPT)0
	
ksz8842.o: ksz8842.c $(VERSION_FILE)
	$(CZ80) ksz8842.c $(CZ80_OPT)0

lcd.o: lcd.c $(VERSION_FILE)
	$(CZ80) lcd.c $(CZ80_OPT)0

math.o: math.s
	$(AZ80) $(AZ80_OPT) math.o $^

ne2000.o: ne2000.c $(VERSION_FILE)
	$(CZ80) ne2000.c $(CZ80_OPT)0
	
font.o: font.c $(VERSION_FILE)
	$(CZ80) font.c $(CZ80_OPT)F
	
heap.o: heap.c $(VERSION_FILE)
	$(CZ80) heap.c $(CZ80_OPT)
	
adc_key.o: adc_key.c $(VERSION_FILE)
	$(CZ80) adc_key.c $(CZ80_OPT)1
	
dtmf.o: dtmf.c $(VERSION_FILE)
	$(CZ80) dtmf.c $(CZ80_OPT)1
	
function.o: function.c $(VERSION_FILE)
	$(CZ80) function.c $(CZ80_OPT)1
	
gpio_key.o: gpio_key.c $(VERSION_FILE)
	$(CZ80) gpio_key.c $(CZ80_OPT)1
	
led.o: led.c $(VERSION_FILE)
	$(CZ80) led.c $(CZ80_OPT)1
	
serial.o: serial.c $(VERSION_FILE)
	$(CZ80) serial.c $(CZ80_OPT)1
	
slic.o: slic.c $(VERSION_FILE)
	$(CZ80) slic.c $(CZ80_OPT)1
	
time.o: time.c $(VERSION_FILE)
	$(CZ80) time.c $(CZ80_OPT)1
	
dhcp.o: dhcp.c $(VERSION_FILE)
	$(CZ80) dhcp.c $(CZ80_OPT)2
	
dns.o: dns.c
	$(CZ80) $^ $(CZ80_OPT)2

net.o: net.c $(VERSION_FILE)
	$(CZ80) net.c $(CZ80_OPT)2
	
ppp.o: ppp.c
	$(CZ80) $^ $(CZ80_OPT)2
		
pppoe.o: pppoe.c $(VERSION_FILE)
	$(CZ80) pppoe.c $(CZ80_OPT)2
		
sntp.o: sntp.c
	$(CZ80) $^ $(CZ80_OPT)2

stun.o: stun.c $(VERSION_FILE)
	$(CZ80) stun.c $(CZ80_OPT)2
	
tftp.o: tftp.c $(VERSION_FILE)
	$(CZ80) tftp.c $(CZ80_OPT)2
	
http.o: http.c $(VERSION_FILE)
	$(CZ80) http.c $(CZ80_OPT)3

httpc.o: httpc.c
	$(CZ80) $^ $(CZ80_OPT)3
	
ap_innom.o: ap_innom.c $(VERSION_FILE)
	$(CZ80) ap_innom.c $(CZ80_OPT)3
	
call_log.o: call_log.c $(VERSION_FILE)
	$(CZ80) call_log.c $(CZ80_OPT)4

menu.o: menu.c $(VERSION_FILE)
	$(CZ80) menu.c $(CZ80_OPT)4
	
settings.o: settings.c $(VERSION_FILE)
	$(CZ80) settings.c $(CZ80_OPT)4
	
ui_str.o: ui_str.c $(VERSION_FILE)
	$(CZ80) ui_str.c $(CZ80_OPT)4
	
iax2.o: iax2.c $(VERSION_FILE)
	$(CZ80) iax2.c $(CZ80_OPT)5

protocol.o: protocol.c
	$(CZ80) $^ $(CZ80_OPT)5

rtps.o: rtps.c $(VERSION_FILE)
	$(CZ80) rtps.c $(CZ80_OPT)5
	
sips.o: sips.c $(VERSION_FILE)
	$(CZ80) sips.c $(CZ80_OPT)5
	
auth.o: auth.c
	$(CZ80) $^ $(CZ80_OPT)6

md5.o: md5.c
	$(CZ80) $^ $(CZ80_OPT)6

rc4.o: rc4.c
	$(CZ80) $^ $(CZ80_OPT)6

sha1.o: sha1.c
	$(CZ80) $^ $(CZ80_OPT)6

hmac_sha1.o: hmac_sha1.c
	$(CZ80) $^ $(CZ80_OPT)6

pbkdf2_sha1.o: pbkdf2_sha1.c
	$(CZ80) $^ $(CZ80_OPT)6

digitmap.o: digitmap.c
	$(CZ80) $^ $(CZ80_OPT)7
	
rtpr.o: rtpr.c $(VERSION_FILE)
	$(CZ80) rtpr.c $(CZ80_OPT)7

sipr.o: sipr.c $(VERSION_FILE)
	$(CZ80) sipr.c $(CZ80_OPT)7

main.ihx: $(SRAM_OBJS) $(FONT_OBJS) $(FLASH0_OBJS) $(FLASH1_OBJS) $(FLASH2_OBJS) $(FLASH3_OBJS) $(FLASH4_OBJS) $(FLASH5_OBJS) $(FLASH6_OBJS) $(FLASH7_OBJS)
	$(LZ80) -nf linkmain.l

main.bin: main.ihx
	$(HEX2BIN) main.bin -f0 -a0 -x6 -b32768 -e57344 main.ihx
	
clean:
	$(RM) *.bak *.lst *.o *.ihx *.sym *.asm *.map *.lnk *.~*
