-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
80 lines (66 loc) · 1.93 KB
/
Makefile
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
include config.mk
include utils/config.mk
include core/config.mk
# backend
include backend/config.mk
include parser/config.mk
UTILSDIR = utils
STRDIR = $(UTILSDIR)/str
STRLIB = $(STRDIR)/libstr.a
PARSERDIR = parser
COREDIR = core
BACKEND = backend
UTILS_TARGET = $(addprefix $(UTILSDIR)/, $(UTILS_OBJ))
UTILS_DEBUG_TARGET = $(addprefix $(UTILSDIR)/, $(UTILS_DEBUG_OBJ))
CORE_TARGET = $(addprefix $(COREDIR)/, $(CORE_OBJ))
CORE_DEBUG_TARGET = $(addprefix $(COREDIR)/, $(CORE_DEBUG_OBJ))
PARSER_TARGET = $(addprefix $(PARSERDIR)/, $(PARSER_OBJ))
PARSER_DEBUG_TARGET = $(addprefix $(PARSERDIR)/, $(PARSER_DEBUG_OBJ))
BACKEND_TARGET = $(addprefix backend/, $(BACKEND_OBJ))
BACKEND_DEBUG_TARGET = $(addprefix backend/, $(BACKEND_DEBUG_OBJ))
SRC = main.c
OBJ = $(SRC:.c=.o)
TARGET = amc
DEBUG_OBJ = $(SRC:.c=.debug.o)
DEBUG_TARGET = $(TARGET).debug
CLIBS = -L$(STRDIR) -lstr
.PHONY: all clean debug debug_target
.PHONY: $(COREDIR) $(PARSERDIR) $(BACKEND) $(STRLIB) $(UTILSDIR)
all: $(TARGET)
debug: $(DEBUG_TARGET)
debug_target:
@$(MAKE) -C $(COREDIR) debug
@$(MAKE) -C $(PARSERDIR) debug
@$(MAKE) -C $(BACKEND) debug
@$(MAKE) -C $(UTILSDIR) debug
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
%.debug.o: %.c
$(CC) $(CFLAGS) $(CDEBUG) -c $< -o $@
$(STRLIB):
@$(MAKE) -C $(STRDIR)
$(COREDIR) $(PARSERDIR) $(BACKEND) $(UTILSDIR):
@$(MAKE) -C $@
$(TARGET): $(OBJ) $(COREDIR) $(PARSERDIR) $(BACKEND) $(UTILSDIR) $(STRLIB)
$(CC) $(CFLAGS) -o $@\
$(OBJ)\
$(CORE_TARGET)\
$(PARSER_TARGET)\
$(UTILS_TARGET)\
$(BACKEND_TARGET)\
$(CLIBS)
$(DEBUG_TARGET): $(DEBUG_OBJ) debug_target $(STRLIB)
$(CC) $(CFLAGS) $(CDEBUG) -o $@\
$(DEBUG_OBJ)\
$(CORE_DEBUG_TARGET)\
$(PARSER_DEBUG_TARGET)\
$(UTILS_DEBUG_TARGET)\
$(BACKEND_DEBUG_TARGET)\
$(CLIBS)
clean:
rm -f $(TARGET) $(OBJ) $(DEBUG_TARGET) $(DEBUG_OBJ)
@$(MAKE) -C $(COREDIR) clean
@$(MAKE) -C $(STRDIR) clean
@$(MAKE) -C $(PARSERDIR) clean
@$(MAKE) -C $(BACKEND) clean
@$(MAKE) -C $(UTILSDIR) clean