CROSS_COMPILE = D:\CodesourceryARM\arm-2011.09\bin\arm-none-eabi-
CC		= $(CROSS_COMPILE)gcc
LD		= $(CROSS_COMPILE)ld
AR		= $(CROSS_COMPILE)ar
AS		= $(CROSS_COMPILE)as
OC		= $(CROSS_COMPILE)objcopy
OD		= $(CROSS_COMPILE)objdump
SZ		= $(CROSS_COMPILE)size

#CFLAGS	= 	-c -fno-common \
#			-ffunction-sections \
#			-fdata-sections \
#			-Os \
#			-g3 \
#			-mcpu=cortex-m3 \
#			-mthumb \
#			-Wall

CFLAGS = -c -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd

LDSCRIPT= ld/stm32_flash.ld

LDFLAGS	=	--gc-sections,-T$(LDSCRIPT),-no-startup,-nostdlib

OCFLAGS	=	-Obinary

ODFLAGS	=	-S


OUTPUT_DIR = output

TARGET  = 	$(OUTPUT_DIR)/main


INCLUDE =   -I./src/fw_lib/include	\
			-I./src/include			\
			-I./src/

# Add other source files if they are needed e.g. other Firmwarlib Components
SRCS	=	./src/main.c					\
            ./src/stm32f10x_it.c			\
            ./src/STM32vldiscovery.c		\
            ./src/fw_lib/misc.c				\
            ./src/fw_lib/system_stm32f10x.c \
			./src/fw_lib/stm32f10x_rcc.c	\
			./src/fw_lib/core_cm3.c			\
			./src/fw_lib/stm32f10x_gpio.c	\
			./src/fw_lib/stm32f10x_adc.c	\
			./src/fw_lib/stm32f10x_exti.c	\
			./src/fw_lib/stm32f10x_usart.c

OBJS=$(SRCS:.c=.o)


.PHONY : clean all

all: $(TARGET).bin  $(TARGET).list
	@echo "  SIZE $(TARGET).elf"
	$(SZ) $(TARGET).elf

clean:
	@echo "Removing files..."
	-find . -name '*.o'   | xargs rm
	-find . -name '*.elf' | xargs rm
	-find . -name '*.lst' | xargs rm
	-find . -name '*.out' | xargs rm
	-find . -name '*.bin' | xargs rm
	-find . -name '*.map' | xargs rm


$(TARGET).list: $(TARGET).elf
	@echo "  OBJDUMP $(TARGET).list"
	$(OD) $(ODFLAGS) $< > $(TARGET).lst



$(TARGET).bin: $(TARGET).elf
	@echo "  OBJCOPY $(TARGET).bin"
	$(OC) $(OCFLAGS) $(TARGET).elf $(TARGET).bin



$(TARGET).elf: $(OBJS) ./src/startup_stm32f10x_ld_vl.o
	@echo "  LD $(TARGET).elf"
	$(CC) -mcpu=cortex-m3 -mthumb -Wl,$(LDFLAGS),-o$(TARGET).elf,-Map,$(TARGET).map ./src/startup_stm32f10x_ld_vl.o $(OBJS)


%.o: %.c
	@echo "  CC $<"
	$(CC) $(INCLUDE) $(CFLAGS)  $< -o $*.o

%.o: %.S
	@echo "  CC $<"
	$(CC) $(INCLUDE) $(CFLAGS)  $< -o $*.o

