Makefile.stm8l 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. #########################
  2. # IAR Makefile for STM8 #
  3. #########################
  4. # Взял из проекта atomthreads и переиначил.
  5. # Location of build tools and atomthreads sources
  6. EWSTM8_DIR=C:\IAR\Embedded Workbench 7.0\stm8
  7. APP_SRC=src
  8. APP_INC=inc
  9. PERIPHS_SRC=StdPerphDrv/src
  10. PERIPHS_INC=StdPerphDrv/inc
  11. EWSTM8_BIN=C:/IAR/Embedded\ Workbench\ 7.0/stm8/bin
  12. CC=$(EWSTM8_BIN)/iccstm8
  13. ASM=$(EWSTM8_BIN)/iasmstm8
  14. LINK=$(EWSTM8_BIN)/ilinkstm8
  15. HEX=$(EWSTM8_BIN)/ielftool
  16. PROJECT=VAPC
  17. # CPU part number
  18. PART = STM8L05X_LD_VL
  19. ICF = lnkstm8l051f3.icf
  20. LIB_MODEL = dlstm8ssn.h
  21. # Directory for built objects
  22. OUT_DIR = Out
  23. OBJ_DIR = $(OUT_DIR)/Obj
  24. LIST_DIR = $(OUT_DIR)/List
  25. CODE_MODEL = small
  26. DATA_MODEL = small
  27. # Application object files
  28. #APP_OBJECTS = board.o delay.o HD44780.o stm8l15x_it.o
  29. APP_OBJECTS = $(notdir $(patsubst %.c,%.o,$(wildcard $(APP_SRC)/*.c)))
  30. #APP_ASM_OBJECTS = atomport-asm-iar.o
  31. # STM8S Peripheral driver object files
  32. PERIPH_OBJECTS = stm8l15x_adc.o
  33. #PERIPH_OBJECTS += stm8l15x_aes.o
  34. #PERIPH_OBJECTS += stm8l15x_beep.o
  35. PERIPH_OBJECTS += stm8l15x_clk.o
  36. #PERIPH_OBJECTS += stm8l15x_comp.o
  37. #PERIPH_OBJECTS += stm8l15x_dac.o
  38. PERIPH_OBJECTS += stm8l15x_dma.o
  39. PERIPH_OBJECTS += stm8l15x_exti.o
  40. #PERIPH_OBJECTS += stm8l15x_flash.o
  41. PERIPH_OBJECTS += stm8l15x_gpio.o
  42. #PERIPH_OBJECTS += stm8l15x_i2c.o
  43. #PERIPH_OBJECTS += stm8l15x_irtim.o
  44. PERIPH_OBJECTS += stm8l15x_itc.o
  45. #PERIPH_OBJECTS += stm8l15x_iwdg.o
  46. #PERIPH_OBJECTS += stm8l15x_lcd.o
  47. #PERIPH_OBJECTS += stm8l15x_pwr.o
  48. #PERIPH_OBJECTS += stm8l15x_rst.o
  49. PERIPH_OBJECTS += stm8l15x_rtc.o
  50. PERIPH_OBJECTS += stm8l15x_spi.o
  51. PERIPH_OBJECTS += stm8l15x_syscfg.o
  52. PERIPH_OBJECTS += stm8l15x_tim1.o
  53. PERIPH_OBJECTS += stm8l15x_tim2.o
  54. PERIPH_OBJECTS += stm8l15x_tim3.o
  55. PERIPH_OBJECTS += stm8l15x_tim4.o
  56. #PERIPH_OBJECTS += stm8l15x_tim5.o
  57. PERIPH_OBJECTS += stm8l15x_usart.o
  58. #PERIPH_OBJECTS += stm8l15x_wfe.o
  59. #PERIPH_OBJECTS += stm8l15x_wwdg.o
  60. ###PERIPH_OBJECTS = $(notdir $(patsubst %.c,%.o,$(wildcard $(PERIPHS_SRC)/*.c)))
  61. # Kernel object files
  62. #KERNEL_OBJECTS = atomkernel.o atomsem.o atommutex.o atomtimer.o atomqueue.o
  63. # Collection of built objects (excluding test applications)
  64. ALL_OBJECTS = $(APP_OBJECTS) $(PERIPH_OBJECTS)
  65. BUILT_OBJECTS = $(patsubst %,$(OUT_DIR)/%,$(ALL_OBJECTS))
  66. # Test object files (dealt with separately as only one per application build)
  67. #PROJ_OBJECTS = $(notdir $(patsubst %.c,%.o,$(wildcard $(APP_SRC)/*.c)))
  68. #PROJ_OBJECTS = main.o
  69. # Target application filenames (.elf) for each test object
  70. #PROJ_ELFS = $(patsubst %.o,%.elf,$(PROJ_OBJECTS))
  71. #PROJ_S19S = $(patsubst %.o,%.s19,$(PROJ_OBJECTS))
  72. PROJ_ELFS = $(PROJECT).elf
  73. PROJ_S19S = $(PROJECT).s19
  74. PROJ_IHEX = $(PROJECT).hex
  75. # Search build/output directory for dependencies
  76. vpath %.c $(APP_SRC)
  77. vpath %.c $(PERIPHS_SRC)
  78. vpath %.o .\$(OBJ_DIR)
  79. vpath %.elf .\$(OUT_DIR)
  80. vpath %.hex .\$(OUT_DIR)
  81. # Include paths
  82. INCLUDES = -I $(APP_INC)
  83. INCLUDES += -I $(PERIPHS_INC)
  84. # Compiler/Assembler flags
  85. CFLAGS = -e -Oh
  86. CFLAGS += --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
  87. CFLAGS += --dlib_config "$(EWSTM8_DIR)\lib\$(LIB_MODEL)"
  88. CFLAGS += -D NDEBUG -D $(PART)
  89. CFLAGS += -lCN $(LIST_DIR) -lBN $(LIST_DIR)
  90. CFLAGS += --diag_suppress Pa050
  91. DBG_CFLAGS = -e -Ol --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa
  92. DBG_CFLAGS += --no_cross_call --debug --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
  93. DBG_CFLAGS += --dlib_config "$(EWSTM8_DIR)\lib\$(LIB_MODEL)" -D $(PART)
  94. DBG_CFLAGS += -lC $(LIST_DIR) -lB $(LIST_DIR)
  95. DBG_CFLAGS += --diag_suppress Pa050
  96. ASMFLAGS = -M'<>' -ld $(OUT_DIR)\list --diag_suppress Pa050
  97. ASMFLAGS += --code_model small --data_model small
  98. DBG_ASMFLAGS = -M'<>' -r -ld $(OUT_DIR)\list --diag_suppress Pa050
  99. DBG_ASMFLAGS += --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
  100. LINKFLAGS = --redirect _Printf=_PrintfTinyNoMb
  101. LINKFLAGS += --redirect _Scanf=_ScanfSmallNoMb
  102. LINKFLAGS += --config "$(EWSTM8_DIR)\config\$(ICF)"
  103. LINKFLAGS += --config_def _CSTACK_SIZE=0x100
  104. LINKFLAGS += --config_def _HEAP_SIZE=0x100
  105. LINKFLAGS += --map $(OUT_DIR)
  106. LINKFLAGS += --entry __iar_program_start
  107. LINKFLAGS += --merge_duplicate_sections
  108. LINKFLAGS += --strip
  109. LINKFLAGS += -f "$(EWSTM8_DIR)\config\math_small.xcl"
  110. DBG_LINKFLAGS = --redirect _Printf=_PrintfTinyNoMb --redirect _Scanf=_ScanfSmallNoMb
  111. DBG_LINKFLAGS += --config "$(EWSTM8_DIR)\config\$(ICF)" --config_def
  112. DBG_LINKFLAGS += _CSTACK_SIZE=0x100 --config_def _HEAP_SIZE=0x100
  113. DBG_LINKFLAGS += --entry __iar_program_start
  114. #################
  115. # Build targets #
  116. #################
  117. # All tests
  118. all: $(OUT_DIR) $(PROJ_S19S) $(PROJ_IHEX)
  119. # Make build/output directory
  120. $(OUT_DIR):
  121. mkdir $(OUT_DIR)
  122. @mkdir $(OBJ_DIR)
  123. @mkdir $(LIST_DIR)
  124. # Test HEX files (one application build for each test)
  125. $(PROJ_S19S): %.s19: $(PROJECT).elf
  126. @echo
  127. @echo Building $@
  128. @$(HEX) $(OUT_DIR)/$(notdir $<) $(OUT_DIR)/$@ --srec --silent
  129. $(PROJ_IHEX): %.hex: $(PROJECT).elf
  130. @echo Building $@
  131. @$(HEX) $(OUT_DIR)/$(notdir $<) $(OUT_DIR)/$@ --ihex --silent
  132. # Test ELF files (one application build for each test)
  133. $(PROJ_ELFS): %.elf: $(PERIPH_OBJECTS) $(APP_OBJECTS)
  134. @echo
  135. @echo Linking $@
  136. @$(LINK) $(OBJ_DIR)/*.o $(LINKFLAGS) -o $(OUT_DIR)/$@
  137. # $(LINK) $(OUT_DIR)/$(notdir $<) $(BUILT_OBJECTS) $(LINKFLAGS) -o $(OUT_DIR)/$@
  138. # Kernel objects builder
  139. #$(KERNEL_OBJECTS): %.o: $(KERNEL_DIR)/%.c
  140. # @echo Compiling $@
  141. # $(CC) $< $(CFLAGS) -I . -I $(PERIPHS_SRC) -o $(OUT_DIR)
  142. # Project objects builder
  143. #$(PROJ_OBJECTS): %.o: main.c
  144. # @echo Compiling $@
  145. # $(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
  146. # Peripheral objects builder
  147. #$(PERIPH_OBJECTS): %.o: %.c
  148. # @echo
  149. # @echo Compiling $@
  150. # @$(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
  151. # Application C objects builder
  152. #$(APP_OBJECTS): %.o: %.c
  153. # @echo
  154. # @echo Compiling $@
  155. # @$(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
  156. # All C objects builder
  157. $(ALL_OBJECTS): %.o: %.c
  158. @echo
  159. @echo Compiling $@
  160. @$(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
  161. # Application asm objects builder
  162. #$(APP_ASM_OBJECTS): %.o: ./%.s
  163. # @echo Compiling $@
  164. # @$(ASM) $< $(ASMFLAGS) $(INCLUDES) -o $(OUT_DIR)/$(notdir $@)
  165. # Clean
  166. clean:
  167. rm -f *.o *.elf *.map *.hex *.bin *.lst *.stm8 *.s19 *.out *.s *.lst
  168. rm -rf $(LIST_DIR)
  169. rm -rf $(OBJ_DIR)
  170. rm -rf $(OUT_DIR)