#NAME=aout.elf.a43
NAME=aout.elf

CPU    = msp430f449

CFLAGS=-mmcu=$(CPU) -g -Os -Wall -Wunused
ASFLAGS=-mmcu=$(CPU) -x assembler-with-cpp -Wa,-gstabs
LDFLAGS=-mmcu=$(CPU) -Wl,-Map=$(TARGET).map

# RAM is 0x0200 to 0x09ff
# Flash is 0x1100 to 0xFFE0   (interupt vectors are 0xFFE0 to 0xFFFF)
# Text segment starts at 0x1100  and goes to about 0x5bb2

LDFLAGS+=-Wl,--section-start -Wl,.configsectiona=0xfc00    
LDFLAGS+=-Wl,--section-start -Wl,.configsectionb=0xfa00
LDFLAGS+=-Wl,--section-start -Wl,.sourcesection=0x9000

CC=msp430-gcc

OBJS=main.o usart.o cli.o lamps.o adc.o panel.o osc.o amp0.o amp1.o amp2.o configuration.o

all: ${NAME}

${NAME}: $(OBJS) src.elf
	msp430-gcc -mmcu=${CPU} ${LDFLAGS} -o $@ $>
	msp430-objcopy -O ihex $@ $@.a43
	msp430-objdump -DS aout.elf >${NAME}.lst

clean:
	rm -f ${NAME} ${NAME}.a43 ${NAME}.lst ${NAME}.ini *.o *elf aout.elf.lst  src.tgz  tmpsrc.tgz

flash: aout.elf.a43
	msp430-jtag.py --lpt=/dev/ppi0 -R 2048 -e -p -r -w aout.elf.a43 

# If using the MSP430 demo board, this will power the CPU off the 
# jtag interface.
power:
	msp430-jtag.py --lpt=/dev/ppi0 -R 2048 -r -w


# The tar is overwritten because it makes flashing take longer, for a debug cycle.
src.elf::
	tar -cf - *.[ch] Makefile | gzip -9 > tmpsrc.tgz
	printf "%04x" `stat -f %z tmpsrc.tgz ` > src.tgz
	cat tmpsrc.tgz >> src.tgz
	rm tmpsrc.tgz
	msp430-objcopy -I binary -O elf32-msp430 --rename-section .data=.sourcesection,alloc,load,readonly,data,contents src.tgz src.elf

osc.o: energycontrol.c i2c.c
amp0.o: energycontrol.c i2c.c
amp1.o: energycontrol.c i2c.c
amp2.o: energycontrol.c i2c.c


adc.c: config.h cli.h adc.h

amp0.c: config.h adc.h amp0.h panel.h cli.h i2c.c energycontrol.c
amp1.c: config.h adc.h amp0.h panel.h cli.h i2c.c energycontrol.c
amp2.c: config.h adc.h amp0.h panel.h cli.h i2c.c energycontrol.c

cli.c: config.h cli.h usart.h lamps.h adc.h osc.h amp0.h amp1.h amp2.h panel.h configuration.h

configuration.c: config.h lamps.h cli.h configuration.h

lamps.c: config.h lamps.h cli.h configuration.h

main.c: config.h usart.h cli.h lamps.h panel.h adc.h osc.h amp0.h amp1.h amp2.h configuration.h

osc.c: adc.h osc.h panel.h cli.h i2c.c energycontrol.c
panel.c: cli.h osc.h

usart.c: config.h usart.h
