Makefile 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. CMSIS ?=../../CMSIS
  2. CMSISDEV = $(CMSIS)/Device/ST
  3. CMSISINC = $(CMSIS)/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)/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)/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)/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. MCU ?= stm32l100xc
  23. LDFLAGS ?= --specs=nano.specs -nostartfiles -Wl,--gc-sections
  24. DSRC = $(wildcard demo/*.c) $(wildcard demo/*.S) $(STARTUP.$(MCU))
  25. DOBJ = $(call fixpath, $(addsuffix .o, $(basename $(DSRC))))
  26. DOUT = cdc-loop
  27. LDSCRIPT = $(call fixpath, $(LDSCRIPT.$(MCU)))
  28. MODULE ?= libusb_stm32.a
  29. CFLAGS ?= $(CFLAGS.$(MCU))
  30. CFLAGS2 = -mthumb -Os -std=gnu99
  31. DEFINES ?= $(DEFINES.$(MCU)) FORCE_C_DRIVER
  32. INCLUDES ?= $(CMSISDEV) $(CMSISINC) .
  33. SOURCES = $(wildcard src/*.c) $(wildcard src/*.S)
  34. OBJECTS = $(addsuffix .o, $(basename $(SOURCES)))
  35. ARFLAGS ?= -cvq
  36. ifeq ($(OS),Windows_NT)
  37. RM = del /Q
  38. fixpath = $(strip $(subst /,\, $1))
  39. else
  40. RM = rm -f
  41. fixpath = $(strip $1)
  42. endif
  43. program: $(DOUT).hex
  44. $(FLASH) --reset --format ihex write $(DOUT).hex
  45. demo: $(DOUT).hex
  46. $(DOUT).hex : $(DOUT).elf
  47. @echo building $@
  48. @$(OBJCOPY) -O ihex $< $@
  49. $(DOUT).elf : $(DOBJ) $(OBJECTS)
  50. @echo building $@ for $(MCU)
  51. @$(LD) $(CFLAGS) $(CFLAGS2) $(LDFLAGS) -Wl,--script='$(LDSCRIPT)' -Wl,-Map=$(DOUT).map $(DOBJ) -lc $(OBJECTS) -o $@
  52. clean:
  53. $(RM) $(DOUT).* $(OBJECTS)
  54. doc:
  55. doxygen
  56. module: $(MODULE)
  57. $(MODULE): $(OBJECTS)
  58. @$(AR) $(ARFLAGS) $(MODULE) $(OBJECTS)
  59. %.o: %.c
  60. @echo compiling $@
  61. @$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
  62. %.o: %.S
  63. @echo assembling $@
  64. @$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
  65. %.o: %.s
  66. @echo assembling $@
  67. @$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
  68. .INTERMEDIATE: $(OBJECTS) $(DOBJ)
  69. .PHONY: module doc demo clean program