EXE=sound

MCU_FLAGS=-mmcu=atmega32

CROSS_COMPILE_GCC=avr-
CROSS_COMPILE_BIN=avr-

AS = $(CROSS_COMPILE_BIN)as
CC = $(CROSS_COMPILE_GCC)gcc
CPLUSPLUS = $(CROSS_COMPILE_GCC)g++
LD = $(CROSS_COMPILE_BIN)ld
AR = $(CROSS_COMPILE_BIN)ar
OBJCOPY = $(CROSS_COMPILE_BIN)objcopy
OBJDUMP = $(CROSS_COMPILE_BIN)objdump

INCLUDES = -I./fatfs/ -I ./i2c/

SRC = fatfs/mmc.c fatfs/tff.c fatfs/mmc_hardware.c interrupt.S player.c wav.c sound.c i2c/i2c.c

DEBUG = -g
CFLAGS =  -DF_CPU=7372800L -I. $(INCLUDES) -Wall -Os  -Wstrict-prototypes  -Werror $(MCU_FLAGS) $(DEBUG)
ASFLAGS = -I. $(MCU_FLAGS) -xassembler-with-cpp
LDFLAGS = 

COFFCONVERT=$(OBJCOPY) --debugging \
   -O coff-ext-avr \
	--change-section-address .data-0x800000 \
	--change-section-address .bss-0x800000 \
	--change-section-address .noinit-0x800000 \
	--change-section-address .eeprom-0x810000




DEFINES =

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

all: $(EXE).hex

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

$(EXE).elf: $(APPOBJS)
	$(CC) $(CFLAGS) ${LDFLAGS} -o $(EXE).elf \
		$(APPOBJS) 

$(EXE).cof : $(EXE).elf
	$(COFFCONVERT) -O coff-ext-avr $< $(EXE).cof


%.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 ${EXE}.hex -o -name $(EXE).elf` 

docs:
	doxygen

force: clean all

