Makefile 2.8 KB

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