aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: f5a79a6ec496d99a2f80e73df088d600c3a3e552 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# Toolchain definitions
CC = sdcc
LD = stm8-ld
AS = stm8-as

MKDIR = mkdir
CP = cp

DEFINE = -DSTM8S003

# Include settings
INCLUDE = $(addprefix -I, inc/)

# Assembler flags
AS_FLAGS =

# Compiler flags
CC_FLAGS = -mstm8 --out-fmt-elf -c --debug --opt-code-size --asm=gas --function-sections --data-sections $(INCLUDE)

# Path definitions
PROJECT = STM8

# Objects definition
# Compiled objects list
OBJ_DIR = obj
VPATH += src
OBJECTS = $(addprefix $(OBJ_DIR)/, main.o bar.o)

# Linker flags
LD_FLAGS = -T./elf32stm8s003f3.x --print-memory-usage --gc-sections -Map $(OBJ_DIR)/map_$(PROJECT).map
LIB_DIRS = $(addprefix -L, /usr/local/share/sdcc/lib/stm8)

# Source dependencies:
DEPS = $(OBJECTS:.o=.d)
ASM_DEPS = $(OBJECTS:.o=.asm)

# ------------------------------------
# Instructions
# ------------------------------------

$(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS)
	$(LD) $^ -o $@ $(LD_FLAGS) $(LIBS)

#-include $(DEPS)

clean:
	rm -rf $(OBJ_DIR)/

# Uncomment for standard generation

$(OBJ_DIR)/%.d: %.c
	@$(MKDIR) -p $(OBJ_DIR)
	$(CC) $< $(DEFINE) $(CC_FLAGS) -MM > $@

$(OBJ_DIR)/%.o: %.c $(OBJ_DIR)/%.d
	@$(MKDIR) -p $(OBJ_DIR)
	$(CC) $< $(DEFINE) $(CC_FLAGS) -o $@

$(OBJ_DIR)/%.o: %.asm
	@$(MKDIR) -p $(OBJ_DIR)
	$(AS) $< $(AS_FLAGS) -o $@

# ----------------------------------------
# Phony targets
# ----------------------------------------
.PHONY: clean debug