# Makefile für dynamic-clamp
# 
# Copyright 2011 by MPI fuer biophysikalische Chemie, Frank Wuerriehausen


CC			=	avr32-gcc

DFLAGS		=	-DBOARD=NGW100

CFLAGS		=	-DBOARD=NGW100																				\
				-Isrc/CONFIG -Isrc/SOFTWARE_FRAMEWORK/UTILS/DEBUG -Isrc/SOFTWARE_FRAMEWORK/DRIVERS/USART	\
				-Isrc/SOFTWARE_FRAMEWORK/SERVICES/FAT -Isrc/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS	\
				-Isrc/SOFTWARE_FRAMEWORK/DRIVERS/PM -Isrc/SOFTWARE_FRAMEWORK/DRIVERS/SMC					\
				-Isrc/SOFTWARE_FRAMEWORK/DRIVERS/INTC -Isrc/SOFTWARE_FRAMEWORK/DRIVERS/TWI					\
				-Isrc/SOFTWARE_FRAMEWORK/UTILS -Isrc/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR					\
				-Isrc/SOFTWARE_FRAMEWORK/BOARDS -Isrc/SOFTWARE_FRAMEWORK/DRIVERS/PIO						\
				-Isrc/SOFTWARE_FRAMEWORK/DRIVERS/TC -Isrc/SOFTWARE_FRAMEWORK/DRIVERS/SPI					\
				-Isrc/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER -Isrc/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/SDRAM	\
				-Isrc/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SDRAMC -Isrc/SOFTWARE_FRAMEWORK/DRIVERS/WDT			\
				-Isrc/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX								\
				-O2 -Wall -c -fmessage-length=0 -mpart=ap7000 -ffunction-sections -masm-addr-pseudos

LFLAGS		=	-nostartfiles -static -Xlinker -Map -Xlinker dynamic-clamp.map -mpart=ap7000		\
				-Wl,--gc-sections -fpic --rodata-writable -Wl,--direct-data

LIBS		=	-lm

# Common objects
OBJS		=	Release/src/utilities.o Release/src/fwloader.o					\
				Release/src/exception.o Release/src/error.o Release/src/com.o						\
				Release/src/calc.o Release/src/dynamic-clamp.o

# Software-framework objects
FOBJS		=	Release/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.o 						\
				Release/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.o							\
				Release/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.o			\
				Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/navigation.o							\
				Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fsaccess.o								\
				Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/file.o									\
				Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat_unusual.o							\
				Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat.o									\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/WDT/wdt.o									\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.o								\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TWI/twi.o									\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.o										\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi_at32ap7000.o							\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SMC/smc_at32ap7000.o							\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_at32ap7000.o							\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PIO/pio.o									\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.o									\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.o								\
				Release/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SDRAMC/sdramc_at32ap7000.o				\
				Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.o	\
				Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.o

ifeq ($(OS),Windows_NT)
	MAKESREC = avr32-objcopy
#	RM = del /Q
else
	MAKESREC = objcopy
#	RM = rm -f
endif


# Build the executables
all:	$(OBJS) $(FOBJS)
		$(CC) $(LFLAGS) $(OBJS) $(FOBJS)  -o Release/dynamic-clamp.elf  $(LIBS)
		$(MAKESREC) -I elf32-big -O srec Release/dynamic-clamp.elf Release/dynamic-clamp.srec

# Dependences
Release/src/dynamic-clamp.o:	src/dynamic-clamp.c
	$(CC) $(CFLAGS) -o Release/src/dynamic-clamp.o src/dynamic-clamp.c
Release/src/utilities.o:	src/utilities.c
	$(CC) $(CFLAGS) -o Release/src/utilities.o src/utilities.c
Release/src/fwloader.o:	src/fwloader.x
	$(CC) -x assembler-with-cpp -c -mpart=ap7000 -o Release/src/fwloader.o src/fwloader.x
Release/src/exception.o:	src/exception.c
	$(CC) $(CFLAGS) -o Release/src/exception.o src/exception.c
Release/src/error.o:	src/error.c
	$(CC) $(CFLAGS) -o Release/src/error.o src/error.c
Release/src/com.o:	src/com.c
	$(CC) $(CFLAGS) -o Release/src/com.o src/com.c
Release/src/calc.o:	src/calc.c
	$(CC) $(CFLAGS) -o Release/src/calc.o src/calc.c
Release/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.o:	\
	src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x
	$(CC) -x assembler-with-cpp -c -mpart=ap7000 -o Release/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.o \
	src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x
Release/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.o: \
	src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.o \
	src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c
Release/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.o: \
	src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.o \
	src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c
Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/navigation.o: \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/navigation.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/navigation.o \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/navigation.c
Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fsaccess.o: \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fsaccess.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fsaccess.o \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fsaccess.c
Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/file.o: \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/file.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/file.o \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/file.c
Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat_unusual.o: \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat_unusual.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat_unusual.o \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat_unusual.c
Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat.o: \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat.o \
	src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/WDT/wdt.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/WDT/wdt.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/WDT/wdt.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/WDT/wdt.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TWI/twi.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/TWI/twi.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TWI/twi.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/TWI/twi.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi_at32ap7000.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi_at32ap7000.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi_at32ap7000.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi_at32ap7000.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SMC/smc_at32ap7000.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/SMC/smc_at32ap7000.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SMC/smc_at32ap7000.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/SMC/smc_at32ap7000.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_at32ap7000.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_at32ap7000.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_at32ap7000.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_at32ap7000.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PIO/pio.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/PIO/pio.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PIO/pio.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/PIO/pio.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.o:	\
	src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x
	$(CC) -x assembler-with-cpp -c -mpart=ap7000 -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x
Release/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SDRAMC/sdramc_at32ap7000.o: \
	src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SDRAMC/sdramc_at32ap7000.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SDRAMC/sdramc_at32ap7000.o \
	src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SDRAMC/sdramc_at32ap7000.c
Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.o: \
	src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.o \
	src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c
Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.o: \
	src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c
	$(CC) $(CFLAGS) -o Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.o \
	src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c

# Build only the S-Record file
srec:
	$(MAKESREC) -I elf32-big -O srec Release/dynamic-clamp.elf Release/dynamic-clamp.srec

# Clean up the object files
clean:
	rm -rf Release/dynamic-clamp.elf 
	rm -rf Release/dynamic-clamp.srec 
	rm -rf Release/src/dynamic-clamp.o 
	rm -rf Release/src/exception.o 
	rm -rf Release/src/calc.o 
	rm -rf Release/src/utilities.o 
	rm -rf Release/src/error.o 
	rm -rf Release/src/com.o 
	rm -rf Release/src/fwloader.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/WDT/wdt.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SMC/smc_at32ap7000.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fsaccess.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SDRAMC/sdramc_at32ap7000.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TWI/twi.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/fat_unusual.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi_at32ap7000.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_at32ap7000.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/navigation.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/SERVICES/FAT/file.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/PIO/pio.o 
	rm -rf Release/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.o 


