Makefile 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. DEFINES ?= $(DEFINES.$(MCU))
  33. INCLUDES ?= $(CMSISDEV) $(CMSISINC) .
  34. SOURCES = $(wildcard src/*.c) $(wildcard src/*.S)
  35. OBJECTS = $(addsuffix .o, $(basename $(SOURCES)))
  36. ARFLAGS ?= -cvq
  37. ifeq ($(OS),Windows_NT)
  38. RM = del /Q
  39. fixpath = $(strip $(subst /,\, $1))
  40. else
  41. RM = rm -f
  42. fixpath = $(strip $1)
  43. endif
  44. program: $(DOUT).hex
  45. $(FLASH) --reset --format ihex write $(DOUT).hex
  46. demo: $(DOUT).hex
  47. $(DOUT).hex : $(DOUT).elf
  48. @echo building $@
  49. @$(OBJCOPY) -O ihex $< $@
  50. $(DOUT).elf : $(DOBJ) $(OBJECTS)
  51. @echo building $@ for $(MCU)
  52. @$(LD) $(CFLAGS) $(CFLAGS2) $(LDFLAGS) -Wl,--script='$(LDSCRIPT)' -Wl,-Map=$(DOUT).map $(DOBJ) -lc $(OBJECTS) -o $@
  53. clean:
  54. $(RM) $(DOUT).* $(OBJECTS)
  55. doc:
  56. doxygen
  57. module: $(MODULE)
  58. $(MODULE): $(OBJECTS)
  59. @$(AR) $(ARFLAGS) $(MODULE) $(OBJECTS)
  60. %.o: %.c
  61. @echo compiling $@
  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. %.o: %.s
  67. @echo assembling $@
  68. @$(CC) $(CFLAGS) $(CFLAGS2) $(addprefix -D, $(DEFINES)) $(addprefix -I, $(INCLUDES)) -c $< -o $@
  69. .INTERMEDIATE: $(OBJECTS) $(DOBJ)
  70. .PHONY: module doc demo clean program