CC=arm-none-eabi-gcc
AR=arm-none-eabi-ar

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

vpath %.c STM32F3xx_HAL_Driver/Src

CFLAGS  = -g -O2 -Wall -DSTM32F303xC
CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m4 -march=armv7e-m
CFLAGS += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
CFLAGS += -ffreestanding -nostdlib
CFLAGS += -ICMSIS/Include 
CFLAGS += -ICMSIS/Device/ST/STM32F3xx/Include 
CFLAGS += -ISTM32F3xx_HAL_Driver/Inc
CFLAGS += -I../Inc

SRCS = stm32f3xx_hal.c stm32f3xx_hal_adc.c stm32f3xx_hal_adc_ex.c stm32f3xx_hal_comp.c stm32f3xx_hal_cortex.c stm32f3xx_hal_dac.c stm32f3xx_hal_dac_ex.c stm32f3xx_hal_dma.c stm32f3xx_hal_flash.c stm32f3xx_hal_flash_ex.c stm32f3xx_hal_gpio.c stm32f3xx_hal_opamp.c stm32f3xx_hal_opamp_ex.c stm32f3xx_hal_pcd.c stm32f3xx_hal_pcd_ex.c stm32f3xx_hal_pwr.c stm32f3xx_hal_pwr_ex.c stm32f3xx_hal_rcc.c stm32f3xx_hal_rcc_ex.c stm32f3xx_hal_rtc.c stm32f3xx_hal_rtc_ex.c

OBJS = $(addprefix objs/,$(SRCS:.c=.o))
DEPS = $(addprefix deps/,$(SRCS:.c=.d))

.PHONY: all clean

all: libstm32f3.a

-include $(DEPS)

dirs:
	mkdir -p deps objs
	touch dirs

objs/%.o : %.c dirs
	$(CC) $(CFLAGS) -c -o $@ $< -MMD -MF deps/$(*F).d

libstm32f3.a: $(OBJS)
	$(AR) -r $@ $(OBJS)

TAGS:	$(addprefix STM32F3xx_HAL_Driver/Src/,$(SRCS)) STM32F3xx_HAL_Driver/Inc/*.h CMSIS/Include/*.h CMSIS/Device/ST/STM32F3xx/Include/*.h Makefile
	etags $(addprefix STM32F3xx_HAL_Driver/Src/,$(SRCS)) STM32F3xx_HAL_Driver/Inc/*.h CMSIS/Include/*.h CMSIS/Device/ST/STM32F3xx/Include/*.h Makefile
tags:
	make TAGS

clean:
	rm -f dirs TAGS $(OBJS) $(DEPS) libstm32f3.a

