1
0

Makefile 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. CMSIS ?=../../cmsis
  2. FLASH ?= st-flash
  3. TOOLSET ?= arm-none-eabi-
  4. CC = $(TOOLSET)gcc
  5. LD = $(TOOLSET)gcc
  6. AR = $(TOOLSET)gcc-ar
  7. OBJCOPY = $(TOOLSET)objcopy
  8. STARTUP.stm32l052x8 = $(CMSIS)/device/ST/STM32L0xx/Source/Templates/gcc/startup_stm32l052xx.s
  9. CFLAGS.stm32l052x8 = -mcpu=cortex-m0plus -mfloat-abi=soft
  10. DEFINES.stm32l052x8 = STM32L0 STM32L052xx
  11. LDSCRIPT.stm32l052x8 = demo/stm32l052x8.ld
  12. STARTUP.stm32l100xc = $(CMSIS)/device/ST/STM32L1xx/Source/Templates/gcc/startup_stm32l100xc.s
  13. CFLAGS.stm32l100xc = -mcpu=cortex-m3 -mfloat-abi=soft
  14. DEFINES.stm32l100xc = STM32L1 STM32L100xC
  15. LDSCRIPT.stm32l100xc = demo/stm32l100xc.ld
  16. STARTUP.stm32l476rg = $(CMSIS)/device/ST/STM32L4xx/Source/Templates/gcc/startup_stm32l476xx.s
  17. CFLAGS.stm32l476rg = -mcpu=cortex-m4
  18. DEFINES.stm32l476rg = STM32L4 STM32L476xx
  19. LDSCRIPT.stm32l476rg = demo/stm32l476xg.ld
  20. MCU ?= stm32l100xc
  21. LDFLAGS ?= --specs=nano.specs -nostartfiles -Wl,--gc-sections
  22. DSRC = $(wildcard demo/*.c) $(wildcard demo/*.S) $(STARTUP.$(MCU))
  23. DOBJ = $(call fixpath, $(addsuffix .o, $(basename $(DSRC))))
  24. DOUT = cdc-loop
  25. LDSCRIPT = $(call fixpath, $(LDSCRIPT.$(MCU)))
  26. MODULE ?= libusb_stm32.a
  27. CFLAGS ?= $(CFLAGS.$(MCU))
  28. CFLAGS2 = -mthumb -Os -std=gnu99
  29. DEFINES ?= $(DEFINES.$(MCU)) FORCE_C_DRIVER
  30. INCLUDES ?= $(CMSIS)/device/ST $(CMSIS)/include .
  31. SOURCES = $(wildcard src/*.c) $(wildcard src/*.S)
  32. OBJECTS = $(addsuffix .o, $(basename $(SOURCES)))
  33. ARFLAGS ?= -cvq
  34. ifeq ($(OS),Windows_NT)
  35. RM = del /Q
  36. fixpath = $(strip $(subst /,\, $1))
  37. else
  38. RM = rm -f
  39. fixpath = $(strip $1)
  40. endif
  41. program: $(DOUT).hex
  42. $(FLASH) --reset --format ihex write $(DOUT).hex
  43. demo: clean $(DOUT).hex
  44. $(DOUT).hex : $(DOUT).elf
  45. @echo building $@
  46. @$(OBJCOPY) -O ihex $< $@
  47. $(DOUT).elf : $(DOBJ) $(OBJECTS)
  48. @echo building $@ for $(MCU)
  49. @$(LD) $(CFLAGS) $(CFLAGS2) $(LDFLAGS) -Wl,--script='$(LDSCRIPT)' -Wl,-Map=$(DOUT).map $(DOBJ) -lc $(OBJECTS) -o $@
  50. clean:
  51. $(RM) $(DOUT).*
  52. doc:
  53. doxygen
  54. module: $(MODULE)
  55. $(MODULE): $(OBJECTS)
  56. @$(AR) $(ARFLAGS) $(MODULE) $(OBJECTS)
  57. %.o: %.c
  58. @echo compiling $@
  59. @$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
  60. %.o: %.S
  61. @echo assembling $@
  62. @$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
  63. %.o: %.s
  64. @echo assembling $@
  65. @$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
  66. .INTERMEDIATE: $(OBJECTS) $(DOBJ)
  67. .PHONY: module doc demo clean program