-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
46 lines (37 loc) · 1.09 KB
/
Makefile
File metadata and controls
46 lines (37 loc) · 1.09 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
# options
DEBUG = -g
WARNING = -Wall -Wextra -pedantic -Wshadow -Wformat=2 -Wfloat-equal -Wconversion -Wlogical-op -Wno-unused-result -Wno-unused-function
OPTMIZE = -O2
STD = -std=c++14
OPTIONSCXX = $(STD) $(WARNING)
# directories
DECLRDIR = ./include/
INCLUDES = -I $(DECLRDIR)
SRCDIR = ./src/
BINDIR = ./bin/
CXX = g++
DEL = rm
EXEC = Compiler
### executable target
main: lex yacc bin token.o visitor.o parser.o tree_nodes.o main.o
$(CXX) $(BINDIR)token.o $(BINDIR)visitor.o $(BINDIR)parser.o $(BINDIR)tree_nodes.o $(BINDIR)main.o -o $(EXEC) $(OPTIONSCXX)
lex:
lex -o $(SRCDIR)token.cpp $(SRCDIR)token.l
yacc:
yacc -o $(SRCDIR)parser.cpp $(SRCDIR)grammar.y
### bin folder (created only if it doesnt exist)
bin:
mkdir -p ./bin/
%.o: $(SRCDIR)%.cpp
$(CXX) -c $< -o $(BINDIR)$@ $(OPTIONSCXX) $(INCLUDES)
main.o: $(SRCDIR)main.cpp
token.o: $(SRCDIR)token.cpp
parser.o: $(SRCDIR)parser.cpp
tree_nodes.o: $(SRCDIR)tree_nodes.cpp
visitor.o: $(SRCDIR)visitor.cpp
### clear objects & executable
clean: bin
$(DEL) -f ./$(EXEC)
$(DEL) -f $(BINDIR)*.o
$(DEL) -f $(SRCDIR)token.cpp
$(DEL) -f $(SRCDIR)parser.cpp