# Make file for Aerial Analyser
# 
# assumes the USART libraries have been built for the configured chip 
#
# targets:
#   hex -- the Intel hex file to be made from the source C file
#   upload -- upload the hex file to the PIC attached to the PICkit2
#   run -- allow the target to run by releasing /MCLR
#   deviceid -- display the device ID, name and revision
#   clean -- tidy the directory of all non-source files
#
# configure by changing down to # <<<<
CHIP=16F887
PROGRAM=aerial-analyser
ODIR=build
LIBS=
# <<<<

LOWERCASE_CHIP=$(shell echo $(CHIP) | tr '[:upper:]' '[:lower:]')

.DEFAULT_GOAL := upload

HEX=$(ODIR)/$(PROGRAM).hex

$(ODIR):
	mkdir $(ODIR)

$(HEX): $(ODIR) $(ODIR)/$(PROGRAM).p1 $(ODIR)/lcd_hd44780_pic16.p1
	xc8 $(ODIR)/$(PROGRAM).p1 $(ODIR)/lcd_hd44780_pic16.p1 --outdir=$(ODIR)  --chip=$(CHIP) $(LIBS)

$(ODIR)/$(PROGRAM).p1: $(PROGRAM).c $(ODIR) lcd_hd44780_pic16.h i2c.h si5351a.h
	xc8 --pass1 $(PROGRAM).c --outdir=$(ODIR) -D_XTAL_FREQ=25000000 -DPIC$(CHIP) --chip=$(CHIP) --msgdisable=1273,228 $(LIBS)

$(ODIR)/lcd_hd44780_pic16.p1: lcd_hd44780_pic16.c $(ODIR) lcd_hd44780_pic16.h
	xc8 --pass1 lcd_hd44780_pic16.c --outdir=$(ODIR) -D_XTAL_FREQ=25000000 --chip=$(CHIP) --msgdisable=1273,228 $(LIBS) -C

.PHONY: clean hex upload deviceid run sim

hex: $(HEX)

upload: $(HEX)
	pk2cmd -F$(HEX) -M -PPIC$(CHIP)

deviceid: 
	pk2cmd -I -PPIC$(CHIP)

run: 
	pk2cmd -R -PPIC$(CHIP)
	
sim: $(HEX)
	gpsim -L=.:./$(ODIR) -p p$(LOWERCASE_CHIP) $(HEX)
	
clean:
	rm -rf $(ODIR)
