Advertisement
Guest User

STM8 sdcc Makefile

a guest
Dec 5th, 2017
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Make 3.29 KB | None | 0 0
  1. #----------------------------------------------------------
  2. # This is first version of makefile for STM8 and SDCC
  3. #----------------------------------------------------------
  4.  
  5. # Project name
  6. PROJECT := freq_meter
  7. # Define mcu used in project according to "stm8s.h"
  8. MCU := STM8S003
  9. # Set --max-allocs-per-node option. Note: bigger value results
  10. # more optimised code, but dramatically increases compilation
  11. # time and PC resources. Default is 3000.
  12. MAX_ALLOCS := 100000
  13. # List user sources and headers directories.
  14. # "." is current directory, where Makefile is.
  15. SRC_DIRS := . inc src
  16. # Set build root directory
  17. BUILD_DIR := ./build
  18. # Set object files directory
  19. OBJ_DIR := $(BUILD_DIR)/obj
  20. # Set dependencies directory
  21. DEP_DIR := $(OBJ_DIR)
  22. # Set output directory
  23. OUT_DIR := $(BUILD_DIR)
  24. # Automatically generate list of source and object files, found in SRC_DIRS
  25. # Name of source file will be path/to/file.c, name of object file -- file.rel
  26. SRC_FILES := $(wildcard $(addsuffix /*.c, $(SRC_DIRS)))
  27. OBJ_FILES := $(addprefix $(OBJ_DIR)/, $(patsubst %.c, %.rel, $(SRC_FILES)))
  28. DEP_FILES := $(addprefix $(DEP_DIR)/,$(patsubst %.c, %.d, $(SRC_FILES)))
  29. CLEAN_FILES := $(OBJ_FILES) $(DEP_FILES) $(OBJ_FILES:.rel=.rst) $(OBJ_FILES:.rel=.lst) $(OBJ_FILES:.rel=.sym) $(OBJ_FILES:.rel=.map) $(OBJ_FILES:.rel=.adb) $(OBJ_FILES:.rel=.cdb) $(OBJ_FILES:.rel=.asm) $(OBJ_FILES:.rel=.lk)
  30.  
  31. # Define where make should look for dependencies
  32. #vpath %.c   $(SRC_DIRS)
  33. #vpath %.h   $(SRC_DIRS)
  34. #vpath %.rel $(OBJ_DIR)
  35. #vpath %.d   $(DEP_DIR)
  36. vpath %.ihx $(OUT_DIR)
  37.  
  38. # Specify the compiler
  39. CC = sdcc
  40. # Compile flags
  41. # --peep-file trv-peeph.def
  42. CFLAGS = -mstm8 --fverbose-asm --std-sdcc99 -D$(MCU) --max-allocs-per-node $(MAX_ALLOCS)
  43. # Linker flag. Here we can specify additional libraries
  44. LDFLAGS = -mstm8 --out-fmt-ihx -lstm8
  45.  
  46.  
  47. all: project
  48.  
  49. project: $(PROJECT).ihx
  50.  
  51. # Link all object files in OBJ_DIR and put result in OUT_DIR with name $(PROJECT).ihx
  52. $(PROJECT).ihx: $(OBJ_FILES)
  53.     @echo '=================================='
  54.     @echo ' list of objects files to link:'
  55.     @echo '* $(notdir $(OBJ_FILES))'
  56.     @echo '----------------------------------'
  57.     $(CC) $(LDFLAGS) $^ -o $(OUT_DIR)/$@
  58.     @echo '=================================='
  59.  
  60. $(OBJ_DIR)/%.rel: %.c $(DEP_DIR)/%.d
  61.     @echo '=================================='
  62. #   @echo ' list of source files to rebuild:'
  63. #   @echo '* $(SRC_FILES)'
  64. #   @echo '----------------------------------'
  65.     -mkdir -p $(@D)
  66.     $(CC) $(CFLAGS) $(addprefix -I, $(SRC_DIRS)) -c $< -o $@
  67.     @echo '=================================='
  68.  
  69. $(DEP_DIR)/%.d: %.c
  70.     @echo '$@'
  71.     -mkdir -p $(@D)
  72.     $(CC) $(CFLAGS) $(addprefix -I, $(SRC_DIRS)) -MM $< > $@
  73.     @mv -f $@ $@.tmp
  74.     @sed -e 's|.*:|$(patsubst $(DEP_DIR)/%.d, $(OBJ_DIR)/%.rel, $@):|' < $@.tmp > $@
  75.     @sed -e 's/.*://' -e 's/\\$$//' < $@.tmp | fmt -1 | \
  76.      sed -e 's/^ *//' -e 's/$$/:/' >> $@
  77.     @rm -f $@.tmp
  78.  
  79. -include $(DEP_FILES)
  80.  
  81. clean:
  82.     rm -f $(CLEAN_FILES)
  83.     rm -f $(OUT_DIR)/$(PROJECT).ihx $(OUT_DIR)/$(PROJECT).adb $(OUT_DIR)/$(PROJECT).cdb $(OUT_DIR)/$(PROJECT).lk $(OUT_DIR)/$(PROJECT).map
  84.  
  85. list_sources:
  86.     @echo '=================================='
  87.     @echo ' list of source files were found:'
  88.     @echo '+ $(SRC_FILES)'
  89.     @echo '=================================='
  90.  
  91. list_deps:
  92.     @echo '$(DEP_FILES)'
  93.  
  94. .PHONY: clean list_sources list_deps
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement