.POSIX: TARGET = arm-none-eabi CC = $(TARGET)-gcc # compiler AR = $(TARGET)-ar # for building static libs OBJCOPY = $(TARGET)-objcopy # to strip debug symbols CFLAGS_MCU = -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 .SUFFIXES : .c .o .dbg .bin .dbg.bin : $(OBJCOPY) -O binary $< $@ CFLAGS_CMSIS = -I. \ -Icmsis/CMSIS/Core/Include \ -Icmsis/CMSIS/Driver/Include \ -Icmsis/CMSIS/RTOS2/Include \ -Icmsis-driver-validation/Include CFLAGS_CMSIS_DFP = -DCMSIS_device_header='"stm32f4xx.h"' \ -DSTM32F411xE \ -Icmsis-dfp-stm32f4/Include CFLAGS = -std=c99 -pedantic -Wall -Wextra -g3 -gdwarf-3 -ggdb -O0 \ --specs=picolibc.specs $(CFLAGS_MCU) \ $(CFLAGS_CMSIS) $(CFLAGS_CMSIS_DFP) LDFLAGS = -L. \ -Tgcc_arm.ld \ --oslib=semihost \ -Wl,--print-memory-usage LDLIBS = -lcmsis-driver-validate -lcmsis-driver all : demo_gpio.bin cmsis-validate.bin demo_gpio.dbg : demo_gpio.c libcmsis-driver.a gcc_arm.ld $(CC) $(CFLAGS) demo_gpio.c $(LDFLAGS) -o $@ $(LDLIBS) libcmsis-driver.a : gpio.o sram_vtor.o debounce.o system_stm32f4xx.o $(AR) r $@ $? ## Tests ################################################### CFLAGS += -DRTE_CMSIS_DV_GPIO -DRTE_CMSIS_DV_PACK_VER='"3.1.0"' -DRTE_CMSIS_RTOS2 VALIDATION_OBJS = DV_Framework.o DV_Report.o DV_GPIO.o cmsis_dv.o $(VALIDATION_OBJS) : DV_GPIO_Config.h Makefile libcmsis-driver-validate.a : $(VALIDATION_OBJS) $(AR) r $@ $? cmsis-validate.dbg : cmsis-validate.c libcmsis-driver.a libcmsis-driver-validate.a gcc_arm.ld $(CC) $(CFLAGS) cmsis-validate.c $(LDFLAGS) -o $@ $(LDLIBS) # our debug binary, which depends on three things VPATH = cmsis-dfp-stm32f4/Source/Templates:cmsis-driver-validation/Source:freertos:freertos/portable/GCC/ARM_CM4F ## utilities ############################################### .PHONY: clean : rm -f *.[ao] *.dbg *.bin