forked from Nandakishore-Menon/CFG_Gen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
78 lines (60 loc) · 2.65 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
SRCDIR = ./src
INCDIR = ./include
TESTDIR = ./test
EXECDIR = ./exec
# Linked list
LISTINC = $(INCDIR)/linked_list
LISTSRC = $(SRCDIR)/linked_list
LISTTEST = $(TESTDIR)/linked_list
# LL Generator
READERSRC = $(SRCDIR)/reader
READERINC = $(INCDIR)/reader
# CDG
CDGINC = $(INCDIR)/cdg
CDGSRC = $(SRCDIR)/cdg
CDGTEST = $(TESTDIR)/cdg
# CFG
CFGINC = $(INCDIR)/cfg
CFGSRC = $(SRCDIR)/cfg
CFGTEST = $(TESTDIR)/cfg
# CFG
PARSERINC = $(INCDIR)/parser
PARSERSRC = $(SRCDIR)/parser
PARSERTEST = $(TESTDIR)/parser
# test-----------------------
test_list: $(LISTTEST)/list_test.cpp $(LISTSRC)/list_ops.cpp $(SRCDIR)/node.cpp $(LISTINC)/list_ops.hpp $(INCDIR)/node.hpp
g++ -o $(EXECDIR)/test_list $(LISTTEST)/list_test.cpp $(LISTSRC)/list_ops.cpp $(SRCDIR)/node.cpp
test_cdg: $(CDGTEST)/cdg_test.cpp $(CDGSRC)/cdg.cpp $(LISTSRC)/list_ops.cpp $(SRCDIR)/node.cpp $(CDGINC)/cdg.hpp $(LISTINC)/list_ops.hpp $(INCDIR)/node.hpp
g++ -o $(EXECDIR)/test_cdg $(CDGTEST)/cdg_test.cpp $(CDGSRC)/cdg.cpp $(LISTSRC)/list_ops.cpp $(SRCDIR)/node.cpp
test_reader: $(INCDIR)/node.hpp $(SRCDIR)/node.cpp $(READERSRC)/ll_generator.cpp $(PARSERSRC)/lex.yy.c $(PARSERINC)/parser_headers.h
g++ -o $(EXECDIR)/ll_gen $(READERSRC)/ll_generator.cpp $(PARSERSRC)/lex.yy.c $(SRCDIR)/node.cpp
test_cfg: $(INCDIR)/node.hpp $(CFGINC)/cfg.hpp $(CDGINC)/cdg.hpp $(LISTSRC)/list_ops.cpp $(CFGSRC)/cfg.cpp $(CDGSRC)/cdg.cpp $(LISTINC)/list_ops.hpp $(SRCDIR)/node.cpp
g++ -o $(EXECDIR)/test_cfg $(CFGTEST)/cfg_test.cpp $(CFGSRC)/cfg.cpp $(CDGSRC)/cdg.cpp $(LISTSRC)/list_ops.cpp $(SRCDIR)/node.cpp
# ----------------------------
parser: $(PARSERINC)/parser_headers.h $(PARSERSRC)/Parser.l
flex -o $(PARSERSRC)/lex.yy.c $(PARSERSRC)/Parser.l
ll_generator.o: $(READERSRC)/ll_generator.cpp $(READERINC)/ll_generator.hpp
g++ -c $(READERSRC)/ll_generator.cpp
node.o: $(INCDIR)/node.hpp $(SRCDIR)/node.cpp
g++ -c $(SRCDIR)/node.cpp
list_ops.o: $(LISTSRC)/list_ops.cpp $(LISTINC)/list_ops.hpp
g++ -c $(LISTSRC)/list_ops.cpp
cdg.o: $(CDGSRC)/cdg.cpp $(CDGINC)/cdg.hpp
g++ -c $(CDGSRC)/cdg.cpp
cfg.o: $(CFGSRC)/cfg.cpp $(CFGINC)/cfg.hpp
g++ -c $(CFGSRC)/cfg.cpp
.SILENT: install
install:
if ! which dot; then \
echo "Dependencies not satisfied!!!"; \
read -p "Install dependencies. Press ENTER to continue? : " confirm;\
sudo apt install graphviz;\
else \
echo "building CFG_gen";\
make all;\
cp cfg_gen ${HOME}/.local/bin;\
fi
all: main.cpp parser $(PARSERINC)/parser_headers.h ll_generator.o node.o list_ops.o cdg.o cfg.o
g++ -o cfg_gen main.cpp $(PARSERSRC)/lex.yy.c ll_generator.o node.o list_ops.o cdg.o cfg.o
clean:
rm *.o *.dot *.png cfg_gen