#################################################################
#                 #
#################################################################

#   
EXE=OR-PROG-USB

#  
MCU_FLAGS=-mmcu=atmega8

#   
F_CPU=7372800L

#  ( )
SRC = main.c uart.c spi.c timeout.c

#   (0, 1, 2, 3, s)
OPTIMIZATION=s


################################################################
#        ,         #
################################################################

CROSS_COMPILE_GCC=avr-
CROSS_COMPILE_BIN=avr-

AS = $(CROSS_COMPILE_BIN)as
CC = $(CROSS_COMPILE_GCC)gcc
CPLUSPLUS = $(CROSS_COMPILE_GCC)g++
OBJCOPY = $(CROSS_COMPILE_BIN)objcopy


DEBUG = -g
CFLAGS =  -DF_CPU=$(F_CPU) -I. -Wall -O$(OPTIMIZATION) $(MCU_FLAGS) $(DEBUG)
ASFLAGS = -I. $(MCU_FLAGS) -xassembler-with-cpp
LDFLAGS =

APPOBJS = $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SRC)))

all: $(EXE).hex $(EXE).eep

$(EXE).hex: $(EXE).elf
	$(OBJCOPY) -j .text -j .data -j .bootloader -O ihex \
		$(EXE).elf $(EXE).hex
	chmod -x $(EXE).hex $(EXE).elf

$(EXE).eep: $(EXE).elf
	$(OBJCOPY) \
		--change-section-lma .eeprom=0 \
	   	-j .eeprom -O ihex $(EXE).elf $(EXE).eep 
	chmod -x $(EXE).eep $(EXE).elf

$(EXE).elf: $(APPOBJS)
	$(CC) $(CFLAGS) ${LDFLAGS} -o $(EXE).elf \
		$(APPOBJS) \
		-Wl,--Map=$(EXE).map

%.o : %.c

%.o : %.cpp

%.o : %.S


%.o: %.c
	$(CC) $(CFLAGS) $(LDFLAGS) -c -o $@ $<

%.o: %.cpp
	$(CPLUSPLUS) $(CFLAGS) $(LDFLAGS) -c -o $@ $<

%.o: %.S
	$(CC) $(ASFLAGS) -c -o $@ $<


clean:
	rm -rf `find -name '*.o' -o  -name '*.lst' -o -name ${EXE}.hex -o -name $(EXE).elf -o -name $(EXE).map`

force: clean all

