Makefile 2.3 KB

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