PATH_SDCC=C:\SDCC
PATH_RES = $(PATH_SDCC)\src\res

RM = del
AZ80 = $(PATH_SDCC)\BIN\sdasz80
CZ80 = $(PATH_SDCC)\BIN\sdcc
LZ80 = $(PATH_SDCC)\BIN\sdld
HEX2BIN = $(PATH_SDCC)\BIN\hex2bin

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

VERSION_FILE = $(PATH_SDCC)\include\version.h
DSPPAGE_FILE = $(PATH_RES)\dsp_page.h
DSP_DATS = $(PATH_RES)\g711.dat $(PATH_RES)\gsm.dat $(PATH_RES)\g729.dat $(PATH_RES)\ilbc.dat $(PATH_RES)\speex.dat \
           $(PATH_RES)\spx_tab4k.dat $(PATH_RES)\spx_tab6k.dat $(PATH_RES)\spx_tab8k.dat $(PATH_RES)\spx_tab11k.dat \
           $(PATH_RES)\spx_tab15k.dat $(PATH_RES)\spx_tab18k.dat $(PATH_RES)\spx_tab25k.dat

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

SRAM_OBJS = main.rel ce3.rel datatype.rel dsp.rel flash.rel isr.rel isr_gpio.rel ksz8842.rel lcd.rel math.rel ne2000.rel network.rel network2.rel
FONT_OBJS = font.rel
FLASH0_OBJS = buf.rel data.rel heap.rel line.rel misc.rel options.rel rand.rel sipc.rel syslog.rel udp.rel udpdebug.rel
FLASH1_OBJS = adc_key.rel ar168r.rel ar168w.rel bootflag.rel bug1.rel chip.rel codec.rel dsp_bank1.rel dsp_func.rel dtmf.rel function.rel gpio_key.rel hook.rel ivr.rel key.rel led.rel program.rel serial.rel sys.rel time.rel uart.rel
FLASH2_OBJS = arp.rel dhcp.rel dns.rel icmp.rel ip.rel net.rel ppp.rel pppoe.rel sntp.rel stun.rel tftp.rel udprun.rel
FLASH3_OBJS = ap_innom.rel bug3.rel http.rel httpc.rel tcp.rel webcall.rel
FLASH4_OBJS = call_log.rel menu.rel settings.rel ui_str.rel
FLASH5_OBJS = bug5.rel iax2.rel protocol.rel rtps.rel sips.rel
FLASH6_OBJS = auth.rel md5.rel rc4.rel sha1.rel hmac_sha1.rel pbkdf2_sha1.rel
FLASH7_OBJS = digitmap.rel rtpr.rel sipr.rel

all:	main.bin

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

flash.rel: flash.c $(VERSION_FILE)
	$(CZ80) flash.c $(CZ80_OPT)0
	
isr.rel: isr.c $(VERSION_FILE)
	$(CZ80) isr.c $(CZ80_OPT)0
	
isr_gpio.rel: isr_gpio.c $(VERSION_FILE)
	$(CZ80) isr_gpio.c $(CZ80_OPT)0
	
ksz8842.rel: ksz8842.c $(VERSION_FILE)
	$(CZ80) ksz8842.c $(CZ80_OPT)0

lcd.rel: lcd.c $(VERSION_FILE)
	$(CZ80) lcd.c $(CZ80_OPT)0
	
math.rel: math.s
	$(AZ80) $(AZ80_OPT) math.rel $^

ne2000.rel: ne2000.c $(VERSION_FILE)
	$(CZ80) ne2000.c $(CZ80_OPT)0
	
network.rel: network.s
	$(AZ80) $(AZ80_OPT) network.rel $^

network2.rel: network2.c $(VERSION_FILE)
	$(CZ80) network2.c $(CZ80_OPT)0

font.rel: font.c $(VERSION_FILE)
	$(CZ80) font.c $(CZ80_OPT)F
	
heap.rel: heap.c $(VERSION_FILE)
	$(CZ80) heap.c $(CZ80_OPT)

sipc.rel: sipc.c $(VERSION_FILE)
	$(CZ80) sipc.c $(CZ80_OPT)

udp.rel: udp.c $(VERSION_FILE)
	$(CZ80) udp.c $(CZ80_OPT)

adc_key.rel: adc_key.c $(VERSION_FILE)
	$(CZ80) adc_key.c $(CZ80_OPT)1
	
ar168r.rel: ar168r.c $(VERSION_FILE)
	$(CZ80) ar168r.c $(CZ80_OPT)1
	
ar168w.rel: ar168w.c $(VERSION_FILE)
	$(CZ80) ar168w.c $(CZ80_OPT)1
	
bootflag.rel: bootflag.c
	$(CZ80) $^ $(CZ80_OPT)1

bug1.rel: bug1.c
	$(CZ80) $^ $(CZ80_OPT)1

chip.rel: chip.c $(VERSION_FILE)
	$(CZ80) chip.c $(CZ80_OPT)1
	
codec.rel: codec.c $(VERSION_FILE)
	$(CZ80) codec.c $(CZ80_OPT)1

dsp_bank1.rel: dsp_bank1.c $(VERSION_FILE) $(DSPPAGE_FILE)
	$(CZ80) dsp_bank1.c $(CZ80_OPT)1
	
dsp_func.rel: dsp_func.c $(VERSION_FILE)
	$(CZ80) dsp_func.c $(CZ80_OPT)1
	
dtmf.rel: dtmf.c $(VERSION_FILE)
	$(CZ80) dtmf.c $(CZ80_OPT)1
	
function.rel: function.c $(VERSION_FILE)
	$(CZ80) function.c $(CZ80_OPT)1

gpio_key.rel: gpio_key.c $(VERSION_FILE)
	$(CZ80) gpio_key.c $(CZ80_OPT)1
	
hook.rel: hook.c $(VERSION_FILE)
	$(CZ80) hook.c $(CZ80_OPT)1
	
ivr.rel: ivr.c $(VERSION_FILE)
	$(CZ80) ivr.c $(CZ80_OPT)1
	
key.rel: key.c $(VERSION_FILE)
	$(CZ80) key.c $(CZ80_OPT)1
	
led.rel: led.c $(VERSION_FILE)
	$(CZ80) led.c $(CZ80_OPT)1 --disable-warning 110
	
program.rel: program.c $(VERSION_FILE)
	$(CZ80) program.c $(CZ80_OPT)1
	
serial.rel: serial.c $(VERSION_FILE)
	$(CZ80) serial.c $(CZ80_OPT)1
	
sys.rel: sys.c $(VERSION_FILE)
	$(CZ80) sys.c $(CZ80_OPT)1
	
time.rel: time.c $(VERSION_FILE)
	$(CZ80) time.c $(CZ80_OPT)1
	
uart.rel: uart.c $(VERSION_FILE)
	$(CZ80) uart.c $(CZ80_OPT)1
	
arp.rel: arp.c $(VERSION_FILE)
	$(CZ80) arp.c $(CZ80_OPT)2
	
dhcp.rel: dhcp.c $(VERSION_FILE)
	$(CZ80) dhcp.c $(CZ80_OPT)2
	
dns.rel: dns.c
	$(CZ80) $^ $(CZ80_OPT)2

icmp.rel: icmp.c $(VERSION_FILE)
	$(CZ80) icmp.c $(CZ80_OPT)2
	
ip.rel: ip.c $(VERSION_FILE)
	$(CZ80) ip.c $(CZ80_OPT)2

net.rel: net.c $(VERSION_FILE)
	$(CZ80) net.c $(CZ80_OPT)2
	
ppp.rel: ppp.c
	$(CZ80) $^ $(CZ80_OPT)2
		
pppoe.rel: pppoe.c $(VERSION_FILE)
	$(CZ80) pppoe.c $(CZ80_OPT)2
		
sntp.rel: sntp.c $(VERSION_FILE)
	$(CZ80) sntp.c $(CZ80_OPT)2
	
stun.rel: stun.c $(VERSION_FILE)
	$(CZ80) stun.c $(CZ80_OPT)2
	
tftp.rel: tftp.c $(VERSION_FILE)
	$(CZ80) tftp.c $(CZ80_OPT)2
	
udprun.rel: udprun.c $(VERSION_FILE)
	$(CZ80) udprun.c $(CZ80_OPT)2
		
ap_innom.rel: ap_innom.c $(VERSION_FILE)
	$(CZ80) ap_innom.c $(CZ80_OPT)3
	
bug3.rel: bug3.c
	$(CZ80) $^ $(CZ80_OPT)3

http.rel: http.c $(VERSION_FILE)
	$(CZ80) http.c $(CZ80_OPT)3

httpc.rel: httpc.c $(VERSION_FILE)
	$(CZ80) httpc.c $(CZ80_OPT)3

tcp.rel: tcp.c $(VERSION_FILE)
	$(CZ80) tcp.c $(CZ80_OPT)3

webcall.rel: webcall.c $(VERSION_FILE)
	$(CZ80) webcall.c $(CZ80_OPT)3

call_log.rel: call_log.c $(VERSION_FILE)
	$(CZ80) call_log.c $(CZ80_OPT)4

menu.rel: menu.c $(VERSION_FILE)
	$(CZ80) menu.c $(CZ80_OPT)4
	
settings.rel: settings.c $(VERSION_FILE)
	$(CZ80) settings.c $(CZ80_OPT)4
	
ui_str.rel: ui_str.c $(VERSION_FILE)
	$(CZ80) ui_str.c $(CZ80_OPT)4
	
bug5.rel: bug5.c
	$(CZ80) $^ $(CZ80_OPT)5

iax2.rel: iax2.c $(VERSION_FILE)
	$(CZ80) iax2.c $(CZ80_OPT)5

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

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

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

rc4.rel: rc4.c $(VERSION_FILE)
	$(CZ80) rc4.c $(CZ80_OPT)6

sha1.rel: sha1.c $(VERSION_FILE)
	$(CZ80) sha1.c $(CZ80_OPT)6

hmac_sha1.rel: hmac_sha1.c $(VERSION_FILE)
	$(CZ80) hmac_sha1.c $(CZ80_OPT)6

pbkdf2_sha1.rel: pbkdf2_sha1.c $(VERSION_FILE)
	$(CZ80) pbkdf2_sha1.c $(CZ80_OPT)6

digitmap.rel: digitmap.c
	$(CZ80) $^ $(CZ80_OPT)7
	
rtpr.rel: rtpr.c $(VERSION_FILE)
	$(CZ80) rtpr.c $(CZ80_OPT)7
	
sipr.rel: 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) -n -f linkmain

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