NAME	= bikero

CC	= avr-gcc
MCU	= atmega8
QUARTZ	= 1
OBJS	= bikero.o leds.o font.o threads.o
PROG	= stk200
LPT	= 0x378
SUDO	= /usr/bin/sudo
SRCS	= $(OBJS:.o=.c)

CFLAGS	= -pipe -Wall -mmcu=$(MCU) -Wstrict-prototypes -Os -DF_CPU=$(QUARTZ)000000L -DCYCLIC

default:	dep $(NAME).bin $(NAME).hex $(NAME).lst $(NAME)-remove poke

dep:	.depend

.depend:
	$(CC) -MM $(CFLAGS) $(SRCS) 1> .depend

$(NAME).bin:	$(NAME)
	avr-objcopy -j .text -j .data -O binary $(NAME) $(NAME).bin
	@chmod -x $(NAME).bin

$(NAME).hex:	$(NAME)
	avr-objcopy -j .text -j .data -O ihex $(NAME) $(NAME).hex
#	@sed '/^:......05/d' < $(NAME).hex > $(NAME).hex-; mv -f $(NAME).hex- $(NAME).hex

$(NAME).lst:	$(NAME)
	avr-objdump -h -S -D --stabs --disassemble-zeroes $(NAME) > $(NAME).lst
	avr-nm $(NAME) -n >> $(NAME).lst

.PHONY:	$(NAME)-remove

$(NAME)-remove:
	@rm -f $(NAME)

$(NAME):	$(OBJS)
	$(CC) $(CFLAGS) $(OBJS) -o $(NAME)

%.o:	%.c	Makefile
	$(CC) $(CFLAGS) $< -c -o $@
	@avr-gcc $(CFLAGS) $< -S 2> /dev/null

.PHONY:	clean

clean:
	rm -f $(NAME) *.s *.hex *.bin *.o *.lst *~ .depend core

.PHONY:	poke

poke:
	$(SUDO) uisp -dprog=$(PROG) -dlpt=$(LPT) --erase --upload if=$(NAME).hex --verify

ifneq ($(wildcard .depend),)
include .depend
endif
