
FWLIB	= ../Libraries
LINKERCMDFILE = ../ld/stm32f100c4_sec.ld
#LINKERCMDFILE = ../ld/stm32f100c4.ld
SOURCES = config.c  event.c  LabArm.c  n3310.c  ui.c calibration.c clock.c
OBJECTS = config.o  event.o  LabArm.o  n3310.o  ui.o calibration.o clock.o
STARTUP = startup_stm32f10x_ld_vl.s 

#DEVCLASS =  STM32F10X_LD     #/*!< STM32F10X_LD: STM32 Low density devices */
DEVCLASS =  STM32F10X_LD_VL  #/*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */  
#DEVCLASS =  STM32F10X_MD     #/*!< STM32F10X_MD: STM32 Medium density devices */
#DEVCLASS =  STM32F10X_MD_VL  #/*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */  
#DEVCLASS =  STM32F10X_HD     #/*!< STM32F10X_HD: STM32 High density devices */
#DEVCLASS =  STM32F10X_HD_VL  #/*!< STM32F10X_HD_VL: STM32 High density value line devices */  
#DEVCLASS =  STM32F10X_XL     #/*!< STM32F10X_XL: STM32 XL-density devices */
#DEVCLASS =  STM32F10X_CL     #/*!< STM32F10X_CL: STM32 Connectivity line devices */


# Debugging format.
DEBUG = stabs
#DEBUG = dwarf-2
#DEBUG= gdb
#DEBUG= 3

# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
OPT = s

GNU_PREFIX = arm-linux-gnueabi

CC      = $(GNU_PREFIX)-gcc
LD      = $(GNU_PREFIX)-gcc
AR      = $(GNU_PREFIX)-ar
AS      = $(GNU_PREFIX)-as
CP      = $(GNU_PREFIX)-objcopy
OD	= $(GNU_PREFIX)-objdump
SZ	= $(GNU_PREFIX)-size


CFLAGS  =  -mthumb -mcpu=cortex-m3 -fno-builtin -Wall -c  -I.
AFLAGS  = -ahls -mapcs-32
APFLAGS = -ahls -mapcs-32

LFLAGS  = -T$(LINKERCMDFILE) -nostdlib -nostartfiles -Wl,-Map -Wl,main.map -mthumb -mcpu=cortex-m3
CPFLAGS = -Ielf32-littlearm -Obinary
ODFLAGS	= -D -S
CHEXFLAGS = -Ielf32-littlearm -Oihex


PHDRIVER=STM32F10x_StdPeriph_Driver
CORESUPPORT=CMSIS/CM3/CoreSupport
DEVSUPPORT=CMSIS/CM3/DeviceSupport/ST/STM32F10x
ASMSRC = $(FWLIB)/$(DEVSUPPORT)/startup/gcc_ride7/$(STARTUP)

CFLAGS += -g$(DEBUG)
CFLAGS += -O$(OPT)
CFLAGS += -I$(FWLIB)/$(PHDRIVER)/inc
CFLAGS += -I$(FWLIB)/$(CORESUPPORT)
CFLAGS += -I$(FWLIB)/$(DEVSUPPORT)
CFLAGS += -D$(DEVCLASS)
#CFLAGS += -DUSE_STDPERIPH_DRIVER
CFLAGS += -DVECT_TAB_FLASH
CFLAGS += -DREAL_FLASH -DAWD_ENABLED -DBIG -DCLOCK_ENABLED
CFLAGS += -DGCC_ARMCM3


LIBOBJECTS = \
 misc.o\
 stm32f10x_adc.o\
 stm32f10x_bkp.o\
 stm32f10x_can.o\
 stm32f10x_cec.o\
 stm32f10x_crc.o\
 stm32f10x_dac.o\
 stm32f10x_dbgmcu.o\
 stm32f10x_dma.o\
 stm32f10x_exti.o\
 stm32f10x_flash.o\
 stm32f10x_fsmc.o\
 stm32f10x_gpio.o\
 stm32f10x_i2c.o\
 stm32f10x_iwdg.o\
 stm32f10x_pwr.o\
 stm32f10x_rcc.o\
 stm32f10x_rtc.o\
 stm32f10x_sdio.o\
 stm32f10x_spi.o\
 stm32f10x_tim.o\
 stm32f10x_usart.o\
 stm32f10x_wwdg.o

LIBSOURCES = \
 $(FWLIB)/$(PHDRIVER)/src/misc.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_adc.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_bkp.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_can.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_cec.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_crc.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_dac.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_dbgmcu.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_dma.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_exti.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_flash.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_fsmc.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_gpio.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_i2c.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_iwdg.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_pwr.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_rcc.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_rtc.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_sdio.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_spi.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_tim.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_usart.c\
 $(FWLIB)/$(PHDRIVER)/src/stm32f10x_wwdg.c






all: test

clean:
	rm -f *.o 
	rm -f *.list
	rm -f *.bin
	rm -f *.out
	rm -f *.map
	rm -f *.a
	rm -f *.hex

test:main.bin

main.bin main.hex main.list:  main.out
	@ echo "...copying"
	$(CP) $(CPFLAGS) main.out main.bin
	$(CP) $(CHEXFLAGS) main.out main.hex
	$(OD) $(ODFLAGS) main.out > main.list
	
main.out:  $(OBJECTS) $(LINKERCMDFILE) crt.o
	@ echo "..linking"
	$(LD) $(LFLAGS) -o main.out crt.o -L../ld --verbose $(OBJECTS) 
	$(SZ) main.out

lib.a: $(LIBOBJECTS)
	$(AR) rs lib.a $(LIBOBJECTS)

crt.o :
	$(AS) $(APFLAGS) -o crt.o $(ASMSRC)

misc.o: $(FWLIB)/$(PHDRIVER)/src/misc.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/misc.c

stm32f10x_adc.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_adc.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_adc.c

stm32f10x_bkp.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_bkp.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_bkp.c

stm32f10x_can.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_can.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_can.c

stm32f10x_cec.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_cec.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_cec.c

stm32f10x_crc.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_crc.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_crc.c

stm32f10x_dac.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_dac.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_dac.c

stm32f10x_dbgmcu.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_dbgmcu.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_dbgmcu.c

stm32f10x_dma.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_dma.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_dma.c

stm32f10x_exti.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_exti.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_exti.c

stm32f10x_flash.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_flash.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_flash.c

stm32f10x_fsmc.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_fsmc.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_fsmc.c

stm32f10x_gpio.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_gpio.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_gpio.c

stm32f10x_i2c.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_i2c.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_i2c.c

stm32f10x_iwdg.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_iwdg.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_iwdg.c

stm32f10x_pwr.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_pwr.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_pwr.c

stm32f10x_rcc.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_rcc.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_rcc.c

stm32f10x_rtc.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_rtc.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_rtc.c

stm32f10x_sdio.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_sdio.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_sdio.c

stm32f10x_spi.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_spi.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_spi.c

stm32f10x_tim.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_tim.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_tim.c

stm32f10x_usart.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_usart.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_usart.c

stm32f10x_wwdg.o:$(FWLIB)/$(PHDRIVER)/src/stm32f10x_wwdg.c
	$(CC) $(CFLAGS) $(FWLIB)/$(PHDRIVER)/src/stm32f10x_wwdg.c


	 
