|
|
@@ -8,43 +8,6 @@ LD = $(TOOLSET)gcc
|
|
|
AR = $(TOOLSET)gcc-ar
|
|
|
OBJCOPY = $(TOOLSET)objcopy
|
|
|
|
|
|
-STARTUP.stm32l052x8 = $(CMSISDEV)/ST/STM32L0xx/Source/Templates/gcc/startup_stm32l052xx.s
|
|
|
-CFLAGS.stm32l052x8 = -mcpu=cortex-m0plus -mfloat-abi=soft
|
|
|
-DEFINES.stm32l052x8 = STM32L0 STM32L052xx
|
|
|
-LDSCRIPT.stm32l052x8 = demo/stm32l052x8.ld
|
|
|
-
|
|
|
-STARTUP.stm32l100xc = $(CMSISDEV)/ST/STM32L1xx/Source/Templates/gcc/startup_stm32l100xc.s
|
|
|
-CFLAGS.stm32l100xc = -mcpu=cortex-m3 -mfloat-abi=soft
|
|
|
-DEFINES.stm32l100xc = STM32L1 STM32L100xC
|
|
|
-LDSCRIPT.stm32l100xc = demo/stm32l100xc.ld
|
|
|
-
|
|
|
-STARTUP.stm32l476rg = $(CMSISDEV)/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l476xx.s
|
|
|
-CFLAGS.stm32l476rg = -mcpu=cortex-m4
|
|
|
-DEFINES.stm32l476rg = STM32L4 STM32L476xx
|
|
|
-LDSCRIPT.stm32l476rg = demo/stm32l476xg.ld
|
|
|
-
|
|
|
-STARTUP.stm32f103x6 = $(CMSISDEV)/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103x6.s
|
|
|
-CFLAGS.stm32f103x6 = -mcpu=cortex-m3
|
|
|
-DEFINES.stm32f103x6 = STM32F1 STM32F103x6
|
|
|
-LDSCRIPT.stm32f103x6 = demo/stm32f103x6.ld
|
|
|
-
|
|
|
-MCU ?= stm32l100xc
|
|
|
-LDFLAGS ?= --specs=nano.specs -nostartfiles -Wl,--gc-sections
|
|
|
-DSRC = $(wildcard demo/*.c) $(wildcard demo/*.S) $(STARTUP.$(MCU))
|
|
|
-DOBJ = $(call fixpath, $(addsuffix .o, $(basename $(DSRC))))
|
|
|
-DOUT = cdc-loop
|
|
|
-LDSCRIPT = $(call fixpath, $(LDSCRIPT.$(MCU)))
|
|
|
-
|
|
|
-
|
|
|
-MODULE ?= libusb_stm32.a
|
|
|
-CFLAGS ?= $(CFLAGS.$(MCU))
|
|
|
-CFLAGS2 = -mthumb -Os -std=gnu99
|
|
|
-DEFINES ?= $(DEFINES.$(MCU)) FORCE_C_DRIVER
|
|
|
-INCLUDES ?= $(CMSISDEV)/ST $(CMSISCORE) .
|
|
|
-SOURCES = $(wildcard src/*.c) $(wildcard src/*.S)
|
|
|
-OBJECTS = $(addsuffix .o, $(basename $(SOURCES)))
|
|
|
-ARFLAGS ?= -cvq
|
|
|
-
|
|
|
ifeq ($(OS),Windows_NT)
|
|
|
RM = del /Q
|
|
|
fixpath = $(strip $(subst /,\, $1))
|
|
|
@@ -53,6 +16,59 @@ else
|
|
|
fixpath = $(strip $1)
|
|
|
endif
|
|
|
|
|
|
+MODULE ?= libusb.a
|
|
|
+CFLAGS ?= -mcpu=cortex-m3
|
|
|
+DEFINES ?= STM32F1 STM32F103x6
|
|
|
+
|
|
|
+ARFLAGS = -cvq
|
|
|
+LDFLAGS = --specs=nano.specs -nostartfiles -Wl,--gc-sections
|
|
|
+INCLUDES = $(CMSISDEV)/ST $(CMSISCORE) inc
|
|
|
+CFLAGS2 = -mthumb -Os -std=gnu99
|
|
|
+
|
|
|
+OBJDIR = obj
|
|
|
+SOURCES = $(wildcard src/*.c) $(wildcard src/*.S)
|
|
|
+OBJECTS = $(addprefix $(OBJDIR)/, $(addsuffix .o, $(notdir $(basename $(SOURCES)))))
|
|
|
+DSRC = $(wildcard demo/*.c) $(wildcard demo/*.S) $(STARTUP)
|
|
|
+DOBJ = $(addprefix $(OBJDIR)/, $(addsuffix .o, $(notdir $(basename $(DSRC)))))
|
|
|
+DOUT = cdc_loop
|
|
|
+
|
|
|
+SRCPATH = $(sort $(dir $(SOURCES) $(DSRC)))
|
|
|
+vpath %.c $(SRCPATH)
|
|
|
+vpath %.S $(SRCPATH)
|
|
|
+vpath %.s $(SRCPATH)
|
|
|
+
|
|
|
+
|
|
|
+help all:
|
|
|
+ @echo 'Usage: make target [program]'
|
|
|
+ @echo 'Available targets are:'
|
|
|
+ @echo ' bluepill'
|
|
|
+ @echo ' stm32f103x6 CDC loopback demo for STM32F103 based boards'
|
|
|
+ @echo ' 32l100c-disco'
|
|
|
+ @echo ' stm32l100xc CDC loopback demo for STM32L100xC based boards'
|
|
|
+ @echo ' 32l476rg-nucleo'
|
|
|
+ @echo ' stm32l476rg CDC loopback demo for STM32L476xG based boards'
|
|
|
+ @echo ' stm32l052x8 CDC loopback demo for STM32L052x8 based boards'
|
|
|
+ @echo ' doc DOXYGEN documentation'
|
|
|
+ @echo ' module static library module using following envars (defaults)'
|
|
|
+ @echo ' MODULE module name (libusb.a)'
|
|
|
+ @echo ' CFLAGS mcu specified compiler flags (-mcpu=cortex-m3)'
|
|
|
+ @echo ' DEFINES mcu and module specified defines (STM32F1 STM32F103x6)'
|
|
|
+ @echo ' see USB Device HW driver and core API section for the'
|
|
|
+ @echo ' compile-time control macros'
|
|
|
+ @echo ' '
|
|
|
+ @echo 'Environmental variables (defaults):'
|
|
|
+ @echo ' CMSIS Path to the CMSIS V4 or CMSIS V5 root folder ($(CMSIS))'
|
|
|
+ @echo ' CMSISCORE Path to the CMSIS Core include folder(s) ($(CMSISCORE))'
|
|
|
+ @echo ' CMSISDEV Path to the CMSIS Device folder ($(CMSISDEV))'
|
|
|
+ @echo ' FLASH st-link flash utility ($(FLASH))'
|
|
|
+ @echo ' '
|
|
|
+ @echo 'Examples:'
|
|
|
+ @echo ' make bluepill program'
|
|
|
+ @echo ' make module MODULE="usbd.a" CFLAGS="-mcpu=cotrex-m4" DEFINES="STM32L4 STM32L476xx USBD_VBUS_DETECT"'
|
|
|
+
|
|
|
+$(OBJDIR):
|
|
|
+ @mkdir $@
|
|
|
+
|
|
|
program: $(DOUT).hex
|
|
|
$(FLASH) --reset --format ihex write $(DOUT).hex
|
|
|
|
|
|
@@ -62,35 +78,56 @@ $(DOUT).hex : $(DOUT).elf
|
|
|
@echo building $@
|
|
|
@$(OBJCOPY) -O ihex $< $@
|
|
|
|
|
|
-$(DOUT).elf : $(DOBJ) $(OBJECTS)
|
|
|
- @echo building $@ for $(MCU)
|
|
|
- @$(LD) $(CFLAGS) $(CFLAGS2) $(LDFLAGS) -Wl,--script='$(LDSCRIPT)' -Wl,-Map=$(DOUT).map $(DOBJ) -lc $(OBJECTS) -o $@
|
|
|
+$(DOUT).elf : $(OBJDIR) $(DOBJ) $(OBJECTS)
|
|
|
+ @echo building $@
|
|
|
+ @$(LD) $(CFLAGS) $(CFLAGS2) $(LDFLAGS) -Wl,--script='$(LDSCRIPT)' -Wl,-Map=$(DOUT).map $(DOBJ) $(OBJECTS) -o $@
|
|
|
|
|
|
clean:
|
|
|
- $(RM) $(DOUT).* $(OBJECTS)
|
|
|
+ @$(RM) $(DOUT).*
|
|
|
+ @$(RM) $(call fixpath, $(OBJDIR)/*.*)
|
|
|
|
|
|
doc:
|
|
|
doxygen
|
|
|
|
|
|
-module: $(MODULE)
|
|
|
+module: clean $(MODULE)
|
|
|
|
|
|
-
|
|
|
-$(MODULE): $(OBJECTS)
|
|
|
+$(MODULE): $(OBJDIR) $(OBJECTS)
|
|
|
@$(AR) $(ARFLAGS) $(MODULE) $(OBJECTS)
|
|
|
|
|
|
-%.o: %.c
|
|
|
- @echo compiling $@
|
|
|
+$(OBJDIR)/%.o: %.c
|
|
|
+ @echo compiling $<
|
|
|
@$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
|
|
|
|
|
|
-%.o: %.S
|
|
|
- @echo assembling $@
|
|
|
+$(OBJDIR)/%.o: %.S
|
|
|
+ @echo assembling $<
|
|
|
@$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
|
|
|
|
|
|
-%.o: %.s
|
|
|
- @echo assembling $@
|
|
|
+$(OBJDIR)/%.o: %.s
|
|
|
+ @echo assembling $<
|
|
|
@$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
|
|
|
|
|
|
-
|
|
|
-.INTERMEDIATE: $(OBJECTS) $(DOBJ)
|
|
|
-
|
|
|
-.PHONY: module doc demo clean program
|
|
|
+.PHONY: module doc demo clean program help all
|
|
|
+
|
|
|
+stm32f103x6 bluepill:
|
|
|
+ @$(MAKE) clean demo STARTUP='$(CMSISDEV)/ST/STM32F1xx/Source/Templates/gcc/startup_stm32f103x6.s' \
|
|
|
+ LDSCRIPT='demo/stm32f103x6.ld' \
|
|
|
+ DEFINES='STM32F1 STM32F103x6 USBD_SOF_DISABLED USBD_ASM_DRIVER' \
|
|
|
+ CFLAGS='-mcpu=cortex-m3 -mthumb'
|
|
|
+
|
|
|
+stm32l052x8:
|
|
|
+ @$(MAKE) clean demo STARTUP='$(CMSISDEV)/ST/STM32L0xx/Source/Templates/gcc/startup_stm32l052xx.s' \
|
|
|
+ LDSCRIPT='demo/stm32l052x8.ld' \
|
|
|
+ DEFINES='STM32L0 STM32L052xx USBD_SOF_DISABLED' \
|
|
|
+ CFLAGS='-mcpu=cortex-m0plus -mthumb'
|
|
|
+
|
|
|
+stm32l100xc 32l100c-disco:
|
|
|
+ @$(MAKE) clean demo STARTUP='$(CMSISDEV)/ST/STM32L1xx/Source/Templates/gcc/startup_stm32l100xc.s' \
|
|
|
+ LDSCRIPT='demo/stm32l100xc.ld' \
|
|
|
+ DEFINES='STM32L1 STM32L100xC USBD_SOF_DISABLED' \
|
|
|
+ CFLAGS='-mcpu=cortex-m3 -mthumb'
|
|
|
+
|
|
|
+stm32l476xg 32l476rg-nucleo:
|
|
|
+ @$(MAKE) clean demo STARTUP='$(CMSISDEV)/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l476xx.s' \
|
|
|
+ LDSCRIPT='demo/stm32l476xg.ld' \
|
|
|
+ DEFINES='STM32L4 STM32L476xx USBD_SOF_DISABLED' \
|
|
|
+ CFLAGS='-mcpu=cortex-m4 -mthumb'
|