include Makefile.common

#ProjectPath PP
PP=$(TOP)\\src\\
#DiscoveryPath header DP
#DP=$(TOP)\\STM32F4-Discovery_FW_V1.1.0\\Utilities\\STM32F4-Discovery\\
#StartUpPath SUP
SUP=$(TOP)/libraries/CMSIS/ST/STM32F4xx/Source/Templates/gcc_ride7/
PROGRAM = main

LDLIBS+=-lm
LDLIBS+=-lstm32
LDLIBS+=-lstm32Discovery

LDFLAGS=$(COMMONFLAGS) -fno-exceptions -ffunction-sections -fdata-sections -L$(LIBDIR) -nostartfiles -Wl,--gc-sections,-Map=$(PP)$(PROGRAM).map,-T$(LINKFILE)

all: libstm32.a libstm32Discovery.a
	@echo -n "Building IO_Toggle  $@ ..."
	@echo
	@echo -n "Top:" $(TOP)
	@echo
	@echo -n "PP:" $(PP)
	@echo
	$(CC) -x assembler-with-cpp -c $(COMMONFLAGS) \
		-Wa,-amhls=$(SUP)startup_stm32f4xx.lst $(SUP)startup_stm32f4xx.s -o $(SUP)startup_stm32f4xx.o
	$(CC) $(CFLAGS) -c -o $(PP)system_stm32f4xx.o $(PP)system_stm32f4xx.c
	$(CC) $(CFLAGS) -c -o $(PP)stm32f4xx_it.o $(PP)stm32f4xx_it.c
	$(CC) $(CFLAGS) -c -o $(PP)hardware.o $(PP)hardware.c
	$(CC) $(CFLAGS) -c -o $(PP)kiss_fft.o $(PP)kiss_fft130\\kiss_fft.c
	$(CC) $(CFLAGS) -c -o $(PP)newlib_stubs.o $(PP)newlib_stubs.c
	$(CC) $(CFLAGS) $(PP)system_stm32f4xx.o \
		$(PP)hardware.o \
		$(PP)kiss_fft.o \
		$(PP)newlib_stubs.o \
		$(SUP)startup_stm32f4xx.o \
		-o $(PP)$(PROGRAM).elf $(PP)$(PROGRAM).c $(LDFLAGS) \
		-Wl,--no-whole-archive $(LDLIBS)
	$(OBJCOPY) -O ihex   $(PP)$(PROGRAM).elf $(PP)$(PROGRAM).hex
	$(OBJCOPY) -O binary $(PP)$(PROGRAM).elf $(PP)$(PROGRAM).bin
	$(OBJDUMP) $(ODFLAGS) $(PP)$(PROGRAM).elf > $(PP)$(PROGRAM).lst
	xcopy /y $(TOP)\\src\\$(PROGRAM).hex $(TOP)
	arm-none-eabi-size $(PP)$(PROGRAM).elf
	@echo -n "done."
	

libstm32.a:
	@echo -n "Building $@ ..."
	@cd libraries/CMSIS/ST/STM32F4xx/Source/Templates && \
		$(CC) $(CFLAGS) -c \
			system_stm32f4xx.c
	@cd libraries/STM32F4xx_StdPeriph_Driver/src && \
		$(CC) $(CFLAGS) -c \
			-D"assert_param(expr)=((void)0)" \
			-I../inc \
			*.c
	@$(AR) cr $(LIBDIR)/$@ \
		libraries/STM32F4xx_StdPeriph_Driver/src/*.o 
	@echo "done."

libstm32Discovery.a:
	@echo -n "Building $@ ..."
	@cd utilities/STM32F4-Discovery && \
		$(CC) $(CFLAGS) -c \
			-D"assert_param(expr)=((void)0)" \
			*.c
	@$(AR) cr $(LIBDIR)/$@ \
		utilities/STM32F4-Discovery/*.o 
	@echo "done."

.PHONY: libstm32.a libstm32Discovery.a clean

clean:
	rm -f $(PP)$(PROGRAM).{elf,hex,bin,lst,map}
	rm -f $(PP)*.o
	rm -f *.{a,bin,hex,lst,elf,map}
	rm -f utilities/STM32F4-Discovery/*.o
	rm -f libraries/CMSIS/ST/STM32F4xx/Source/Templates/*.o
	rm -f libraries/CMSIS/ST/STM32F4xx/Source/Templates/gcc_ride7/*.o
	rm -f libraries/STM32F4xx_StdPeriph_Driver/src/*.o
	