This repository was archived by the owner on Feb 27, 2026. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
83 lines (68 loc) · 1.77 KB
/
Copy pathMakefile
File metadata and controls
83 lines (68 loc) · 1.77 KB
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
81
82
83
include config.mk
include backend/config.mk
include checker/config.mk
include comptime/config.mk
include core/config.mk
include parser/config.mk
include utils/config.mk
# libs
CLIBS = -L$(STRDIR) -lstr \
-L$(SCTRIE_DIR) -I$(SCTRIE_DIR) -lsctrie \
-L$(GETARG_DIR) -I$(GETARG_DIR) -lgetarg
GETARG_DIR = lib/libgetarg
GETARG_LIB = $(GETARG_DIR)/libgetarg.a
SCTRIE_DIR = lib/libsctrie
SCTRIE_LIB = $(SCTRIE_DIR)/libsctrie.a
STRDIR = $(UTILS)/str
STRLIB = $(STRDIR)/libstr.a
OBJ = $(SRC:.c=.o)
PREFIX = /usr/local
SRC = main.c
TARGET = amc
BUILD = build
UTILS = utils
CHECKER = checker
CORE = core
COMPTIME = comptime
PARSER = parser
BACKEND = backend
MODULES = $(UTILS) $(CHECKER) $(CORE) $(COMPTIME) $(PARSER) $(BACKEND)
MODULES_OBJ = $(UTILS_OBJ)\
$(CHECKER_OBJ)\
$(CORE_OBJ)\
$(COMPTIME_OBJ)\
$(PARSER_OBJ)\
$(BACKEND_OBJ)
OBJ += $(MODULES_OBJ:../%=%)
.PHONY: all clean install
.PHONY: $(GETARG_LIB) $(SCTRIE_LIB) $(STRLIB) $(MODULES)
all: $(TARGET)
%.o: %.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILD):
mkdir -p $(BUILD)
$(GETARG_LIB):
@$(MAKE) -C $(GETARG_DIR)
$(SCTRIE_LIB):
@$(MAKE) -C $(SCTRIE_DIR)
$(STRLIB):
@$(MAKE) -C $(STRDIR)
$(MODULES): $(BUILD)
@$(MAKE) -C $@
$(MODULES_OBJ): $(MODULES)
$(TARGET): $(MODULES_OBJ) $(OBJ) $(GETARG_LIB) $(SCTRIE_LIB) $(STRLIB)
$(CC) $(CFLAGS) -o $@ $(OBJ) $(CLIBS)
clean:
rm -f $(TARGET) $(OBJ)
@$(MAKE) -C $(CHECKER) clean
@$(MAKE) -C $(CORE) clean
@$(MAKE) -C $(COMPTIME) clean
@$(MAKE) -C $(STRDIR) clean
@$(MAKE) -C $(PARSER) clean
@$(MAKE) -C $(BACKEND) clean
@$(MAKE) -C $(UTILS) clean
@$(MAKE) -C $(SCTRIE_DIR) clean
@$(MAKE) -C $(GETARG_DIR) clean
install: all
mkdir -p $(PREFIX)/bin
cp -f $(TARGET) $(PREFIX)/bin/$(TARGET)