-
Notifications
You must be signed in to change notification settings - Fork 7
/
Makefile
107 lines (87 loc) · 5.97 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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
CC=clang
CFLAGS+= -Ofast -D_GNU_SOURCE -D_OPENBSD_SOURCE -Wall --std=c11
SRCDIR := src
OBJDIR := obj
BINDIR := bin
OBJS := $(addprefix $(OBJDIR)/, lexer_tests.o lexer.o token.o repl.o \
cmonkey_utils.o parser_tracing.o parser_tests.o evaluator_tests.o object.o \
cmonkey_utils_tests.o environment.o builtins.o object_tests.o opcode.o \
opcode_tests.o compiler_tests.o object_test_utils.o compiler_tests.o compiler.o \
symbol_table_tests.o symbol_table.o vm.o vm_tests.o vmrepl.o frame.o benchmark.o)
BINS := $(addprefix $(BINDIR)/, lexer_tests parser_tests evaluator_tests \
cmonkey_utils_tests object_tests opcode_tests compiler_tests vm_tests \
symbol_table_tests monkey monkeyvm benchmark)
$(OBJDIR)/%.o: $(SRCDIR)/%.c
${COMPILE.c} ${OUTPUT_OPTION} $<
all: $(OBJS) $(BINS) lexer_tests parser_tests evaluator_tests cmonkey_utils_tests \
object_tests opcode_tests compiler_tests vm_tests symbol_table_tests monkey monkeyvm \
benchmark
$(OBJS): | $(OBJDIR)
$(BINS): $(OBJS) | ${BINDIR}
$(OBJDIR):
mkdir -p $(OBJDIR)
$(BINDIR):
mkdir -p $(BINDIR)
lexer_tests: ${OBJDIR}/lexer_tests.o ${OBJDIR}/lexer.o ${OBJDIR}/token.o
${CC} ${CFLAGS} -o ${BINDIR}/lexer_tests ${OBJDIR}/lexer_tests.o ${OBJDIR}/lexer.o ${OBJDIR}/token.o
parser_tests: ${OBJDIR}/parser_tests.o ${OBJDIR}/lexer.o ${OBJDIR}/token.o $(OBJDIR)/parser.o \
$(OBJDIR)/cmonkey_utils.o $(OBJDIR)/parser_tracing.o
${CC} ${CFLAGS} -o ${BINDIR}/parser_tests ${OBJDIR}/parser_tests.o ${OBJDIR}/lexer.o \
${OBJDIR}/token.o $(OBJDIR)/parser.o $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/parser_tracing.o
evaluator_tests: ${OBJDIR}/evaluator.o ${OBJDIR}/lexer.o ${OBJDIR}/token.o $(OBJDIR)/parser.o \
$(OBJDIR)/cmonkey_utils.o $(OBJDIR)/parser_tracing.o $(OBJDIR)/evaluator.o $(OBJDIR)/object.o \
$(OBJDIR)/environment.o $(OBJDIR)/builtins.o $(OBJDIR)/object_test_utils.o $(OBJDIR)/opcode.o
${CC} ${CFLAGS} -o ${BINDIR}/evaluator_tests ${OBJDIR}/evaluator_tests.o ${OBJDIR}/lexer.o \
${OBJDIR}/token.o $(OBJDIR)/parser.o $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/parser_tracing.o \
$(OBJDIR)/evaluator.o $(OBJDIR)/object.o $(OBJDIR)/environment.o $(OBJDIR)/builtins.o \
$(OBJDIR)/object_test_utils.o $(OBJDIR)/opcode.o
cmonkey_utils_tests: $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/cmonkey_utils_tests.o
$(CC) $(CFLAGS) -o $(BINDIR)/cmonkey_utils_tests $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/cmonkey_utils_tests.o
object_tests: $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/object_tests.o $(OBJDIR)/object.o \
$(OBJDIR)/parser.o $(OBJDIR)/token.o $(OBJDIR)/lexer.o $(OBJDIR)/opcode.o
$(CC) $(CFLAGS) -o $(BINDIR)/object_tests $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/object_tests.o \
$(OBJDIR)/object.o $(OBJDIR)/parser.o $(OBJDIR)/token.o $(OBJDIR)/lexer.o $(OBJDIR)/opcode.o
opcode_tests: $(OBJDIR)/opcode_tests.o $(OBJDIR)/opcode.o $(OBJDIR)/cmonkey_utils.o
$(CC) $(CFLAGS) -o $(BINDIR)/opcode_tests $(OBJDIR)/opcode_tests.o $(OBJDIR)/opcode.o $(OBJDIR)/cmonkey_utils.o
compiler_tests: $(OBJDIR)/compiler_tests.o $(OBJDIR)/compiler.o $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/object_test_utils.o \
$(OBJDIR)/object.o $(OBJDIR)/parser.o $(OBJDIR)/token.o $(OBJDIR)/lexer.o $(OBJDIR)/opcode.o \
$(OBJDIR)/symbol_table.o $(OBJDIR)/builtins.o
$(CC) $(CFLAGS) -o $(BINDIR)/compiler_tests $(OBJDIR)/compiler_tests.o $(OBJDIR)/compiler.o \
$(OBJDIR)/cmonkey_utils.o $(OBJDIR)/object_test_utils.o $(OBJDIR)/object.o $(OBJDIR)/parser.o $(OBJDIR)/token.o \
$(OBJDIR)/lexer.o $(OBJDIR)/opcode.o $(OBJDIR)/symbol_table.o $(OBJDIR)/builtins.o
vm_tests: $(OBJDIR)/vm_tests.o $(OBJDIR)/compiler.o $(OBJDIR)/object_test_utils.o \
$(OBJDIR)/parser.o $(OBJDIR)/lexer.o $(OBJDIR)/token.o ${OBJDIR}/object.o \
$(OBJDIR)/cmonkey_utils.o $(OBJDIR)/opcode.o $(OBJDIR)/vm.o $(OBJDIR)/frame.o \
$(OBJDIR)/builtins.o
$(CC) $(CFLAGS) -o $(BINDIR)/vm_tests $(OBJDIR)/vm_tests.o $(OBJDIR)/compiler.o \
$(OBJDIR)/object_test_utils.o $(OBJDIR)/parser.o $(OBJDIR)/lexer.o $(OBJDIR)/token.o \
$(OBJDIR)/object.o $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/opcode.o $(OBJDIR)/vm.o \
$(OBJDIR)/symbol_table.o $(OBJDIR)/frame.o $(OBJDIR)/builtins.o
monkey: ${OBJDIR}/repl.o ${OBJDIR}/lexer.o ${OBJDIR}/token.o $(OBJDIR)/parser.o $(OBJDIR)/cmonkey_utils.o \
$(OBJDIR)/evaluator.o ${OBJDIR}/object.o $(OBJDIR)/environment.o $(OBJDIR)/builtins.o $(OBJDIR)/opcode.o
${CC} ${CFLAGS} -o ${BINDIR}/monkey ${OBJDIR}/repl.o ${OBJDIR}/lexer.o ${OBJDIR}/token.o $(OBJDIR)/parser.o \
$(OBJDIR)/cmonkey_utils.o ${OBJDIR}/evaluator.o $(OBJDIR)/object.o $(OBJDIR)/environment.o \
$(OBJDIR)/builtins.o $(OBJDIR)/opcode.o
symbol_table_tests: $(OBJDIR)/symbol_table_tests.o $(OBJDIR)/symbol_table.o \
$(OBJDIR)/cmonkey_utils.o
$(CC) $(CFLAGS) -o $(BINDIR)/symbol_table_tests $(OBJDIR)/symbol_table_tests.o \
$(OBJDIR)/symbol_table.o $(OBJDIR)/cmonkey_utils.o
monkeyvm: ${OBJDIR}/vmrepl.o ${OBJDIR}/lexer.o ${OBJDIR}/token.o $(OBJDIR)/parser.o \
$(OBJDIR)/cmonkey_utils.o $(OBJDIR)/evaluator.o ${OBJDIR}/object.o $(OBJDIR)/environment.o \
$(OBJDIR)/builtins.o $(OBJDIR)/vm.o $(OBJDIR)/compiler.o $(OBJDIR)/opcode.o \
$(OBJDIR)/symbol_table.o $(OBJDIR)/frame.o
${CC} ${CFLAGS} -o ${BINDIR}/monkeyvm ${OBJDIR}/vmrepl.o ${OBJDIR}/lexer.o \
${OBJDIR}/token.o $(OBJDIR)/parser.o $(OBJDIR)/cmonkey_utils.o \
${OBJDIR}/evaluator.o $(OBJDIR)/object.o $(OBJDIR)/environment.o \
$(OBJDIR)/builtins.o $(OBJDIR)/vm.o $(OBJDIR)/compiler.o $(OBJDIR)/opcode.o \
$(OBJDIR)/symbol_table.o $(OBJDIR)/frame.o
benchmark: $(OBJDIR)/benchmark.o $(OBJDIR)/lexer.o $(OBJDIR)/token.o $(OBJDIR)/parser.o \
$(OBJDIR)/cmonkey_utils.o $(OBJDIR)/evaluator.o $(OBJDIR)/object.o $(OBJDIR)/environment.o \
$(OBJDIR)/builtins.o $(OBJDIR)/vm.o $(OBJDIR)/compiler.o $(OBJDIR)/opcode.o $(OBJDIR)/symbol_table.o \
$(OBJDIR)/frame.o
${CC} ${CFLAGS} -o $(BINDIR)/benchmark $(OBJDIR)/benchmark.o $(OBJDIR)/lexer.o $(OBJDIR)/token.o \
$(OBJDIR)/parser.o $(OBJDIR)/cmonkey_utils.o $(OBJDIR)/evaluator.o $(OBJDIR)/object.o \
$(OBJDIR)/environment.o $(OBJDIR)/builtins.o $(OBJDIR)/vm.o $(OBJDIR)/compiler.o $(OBJDIR)/opcode.o \
$(OBJDIR)/symbol_table.o $(OBJDIR)/frame.o
clean:
rm -rf $(BINDIR) $(OBJDIR) core