-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
78 lines (58 loc) · 1.23 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
CXX ?= clang++
CXXFLAGS = -Wall -Wextra -std=c++17 -pedantic -g -MMD
LINK.o = $(LINK.cc)
LIBOBJ = \
src/lexer.o \
src/token.o \
src/parser.o \
src/tree.o \
src/symbol.o \
src/heap.o \
src/algo.o \
src/mappings.o \
src/cache.o \
src/pool.o \
DIFFOBJ = \
src/ast-diff.o \
DISPATCHOBJ = \
src/dispatch.o \
EXEOBJ = $(DIFFOBJ) $(DISPATCHOBJ)
OBJ = $(LIBOBJ) $(EXEOBJ)
DEP = $(OBJ:.o=.d)
LIB = libast-diff.a
DIFFEXE = ast-diff
DISPATCHEXE = dispatch
EXE = $(DIFFEXE) $(DISPATCHEXE)
.PHONY: opti
opti: CXXFLAGS += -O3
opti: all
.PHONY: lto
lto: CXXFLAGS += -flto
lto: LDFLAGS += -flto
lto: opti
.PHONY: debug
debug: CXXFLAGS += -Og
debug: all
.PHONY: all
all: $(LIB) $(EXE)
$(LIB): $(LIBOBJ)
$(AR) rcs $(LIB) $(LIBOBJ)
src/ast-diff: $(LIB) $(DIFFOBJ)
src/dispatch: LDFLAGS += -lpthread
src/dispatch: $(LIB) $(DISPATCHOBJ)
$(DIFFEXE): src/ast-diff
cp src/ast-diff $(DIFFEXE)
$(DISPATCHEXE): src/dispatch
cp src/dispatch $(DISPATCHEXE)
.PHONY: install
install: ast-diff dispatch
cp ast-diff /usr/local/bin/ast-diff
cp dispatch /usr/local/bin/dispatch
.PHONY: uninstall
uninstall:
rm /usr/local/bin/ast-diff
rm /usr/local/bin/dispatch
.PHONY: clean
clean:
$(RM) $(OBJ) $(EXE) $(LIB) $(DEP) src/ast-diff src/dispatch
-include $(DEP)