-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
82 lines (56 loc) · 2.12 KB
/
Makefile
File metadata and controls
82 lines (56 loc) · 2.12 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
CC = gcc
YACC = bison
LEX = flex
CFLAGS = -Wall -I . -I include/
LDFLAGS = -lfl -lm
YFLAGS = -d -Wcounterexamples -Wempty-rule
PROGRAMS = build/scanner build/parser build/compiler
.PHONY: all
all: build obj $(PROGRAMS)
.PHONY: scanner
scanner: build obj build/scanner
.PHONY: parser
parser: build obj build/parser
.PHONY: compiler
compiler: build obj build/compiler
build/scanner: obj/scanner.o obj/AST.o obj/hashtable.o obj/symbol.o obj/calc.tab.o obj/lex.yy.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
build/parser: obj/parser.o obj/AST.o obj/hashtable.o obj/symbol.o obj/calc.tab.o obj/lex.yy.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
build/compiler: obj/compiler.o obj/AST.o obj/hashtable.o obj/register.o obj/stack.o obj/symbol.o obj/translate.o obj/calc.tab.o obj/lex.yy.o
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
obj/scanner.o: src/scanner.c grammar/calc.tab.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/parser.o: src/parser.c grammar/calc.tab.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/compiler.o: src/compiler.c grammar/calc.tab.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/AST.o: src/AST.c include/AST.h grammar/calc.tab.c grammar/calc.tab.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/hashtable.o: src/hashtable.c include/hashtable.h src/symbol.c include/symbol.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/register.o: src/register.c include/register.h src/AST.c include/AST.h grammar/calc.tab.c grammar/calc.tab.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/stack.o: src/stack.c include/stack.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/symbol.o: src/symbol.c include/symbol.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/translate.o: src/translate.c include/translate.h src/AST.c include/AST.h grammar/calc.tab.c grammar/calc.tab.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/calc.tab.o: grammar/calc.tab.c grammar/calc.tab.h
$(CC) -c $(CFLAGS) -o $@ $<
obj/lex.yy.o: token/lex.yy.c
$(CC) -c $(CFLAGS) -o $@ $<
token/lex.yy.c: token/calc.l grammar/calc.tab.h
$(LEX) -o $@ $<
grammar/calc.tab.c: grammar/calc.y
$(YACC) $(YFLAGS) -o $@ $<
grammar/calc.tab.h: grammar/calc.y
$(YACC) $(YFLAGS) -o grammar/calc.tab.c $<
build:
mkdir build
obj:
mkdir obj
.PHONY: clean
clean:
rm -f $(PROGRAMS) obj/*.o token/lex.yy.* grammar/calc.tab.*