-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
38 lines (27 loc) · 891 Bytes
/
Makefile
File metadata and controls
38 lines (27 loc) · 891 Bytes
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
CC = gcc
CFLAGS = -Wall -g -Iinclude
all: compiler
compiler: lexer.o parser.o main.o ast.o ir.o executor.o
$(CC) $(CFLAGS) -o compiler lexer.o parser.o main.o ast.o ir.o executor.o
# Bison generates both files
parser.tab.h parser.c: parser.y
bison -d -o parser.c parser.y
# Compile parser.c (after parser.c exists)
parser.o: parser.c
$(CC) $(CFLAGS) -c parser.c
# Flex should only run AFTER parser.tab.h exists
lexer.c: lexer.l parser.tab.h
flex -o lexer.c lexer.l
# Compile lexer.c (after lexer.c exists)
lexer.o: lexer.c
$(CC) $(CFLAGS) -c lexer.c
main.o: main.c
$(CC) $(CFLAGS) -c main.c
ast.o: src/ast.c
$(CC) $(CFLAGS) -c src/ast.c -o ast.o
ir.o: src/ir.c include/ir.h include/ast.h
$(CC) $(CFLAGS) -c src/ir.c -o ir.o
executor.o: src/executor.c include/executor.h
$(CC) $(CFLAGS) -c src/executor.c -o executor.o
clean:
rm -f *.o parser.c parser.h lexer.c compiler