-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
80 lines (71 loc) · 3.1 KB
/
Copy pathMakefile
File metadata and controls
80 lines (71 loc) · 3.1 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
export CXX := g++
export CXXFLAGS := -mavx -mavx2 -g --static-pie -std=c++14 -fmax-errors=100 \
-Wall -Wextra -Weffc++ -Waggressive-loop-optimizations -Wc++0x-compat \
-Wc++11-compat -Wc++14-compat -Wcast-align -Wcast-qual -Wchar-subscripts \
-Wconditionally-supported -Wconversion -Wctor-dtor-privacy -Wempty-body \
-Wfloat-equal -Wformat-nonliteral -Wformat-security -Wformat-signedness \
-Wformat=2 -Winline -Wlarger-than=8192 -Wlogical-op -Wmissing-declarations \
-Wnon-virtual-dtor -Wopenmp-simd -Woverloaded-virtual -Wpacked -Wpointer-arith \
-Wredundant-decls -Wshadow -Wsign-conversion -Wsign-promo \
-Wstack-usage=8192 -Wstrict-null-sentinel -Wstrict-overflow=2 \
-Wsuggest-attribute=noreturn -Wsuggest-final-methods -Wsuggest-final-types \
-Wsuggest-override -Wswitch-default -Wswitch-enum -Wsync-nand -Wundef \
-Wunreachable-code -Wunused -Wuseless-cast -Wvariadic-macros \
-Wno-literal-suffix -Wno-missing-field-initializers -Wno-narrowing \
-Wno-old-style-cast -Wno-varargs -fcheck-new -fsized-deallocation \
-fstack-protector -fstrict-overflow -flto-odr-type-merging \
-fno-omit-frame-pointer -fPIE -fsanitize=address -fsanitize=alignment \
-fsanitize=bool -fsanitize=bounds -fsanitize=enum \
-fsanitize=float-cast-overflow -fsanitize=float-divide-by-zero \
-fsanitize=integer-divide-by-zero -fsanitize=leak \
-fsanitize=nonnull-attribute -fsanitize=null -fsanitize=object-size \
-fsanitize=return -fsanitize=returns-nonnull-attribute -fsanitize=shift \
-fsanitize=signed-integer-overflow -fsanitize=undefined \
-fsanitize=unreachable -fsanitize=vla-bound -fsanitize=vptr -lm -pie -O2
export DESTDIR := $(CURDIR)/bin
export OBJDIR := $(CURDIR)/obj
export LOGDIR := $(CURDIR)/logs
export LOGCALLDIR := $(LOGDIR)/logsStack
export LOGASMDIR := $(LOGDIR)/logsAsm
export LOGCPUDIR := $(LOGDIR)/logsCpu
export LOGTREEDIR := $(LOGDIR)/logsTree
.PHONY: compile frontend backend asm cpu clean
compile: frontend backend asm cpu
frontend: | $(OBJDIR) $(DESTDIR) $(LOGDIR) $(LOGTREEDIR)
@ echo ------ COMPILE frontend ------
@ cd $(CURDIR)/src/frontend && $(MAKE)
@ $(CXX) $(OBJDIR)/frontend.o -o $(DESTDIR)/frontend $(CXXFLAGS)
backend: | $(OBJDIR) $(DESTDIR) $(LOGTREEDIR)
@ echo ------ COMPILE backend ------
@ cd $(CURDIR)/src/backend && $(MAKE)
@ $(CXX) $(OBJDIR)/backend.o -o $(DESTDIR)/backend $(CXXFLAGS)
asm: | $(OBJDIR) $(DESTDIR) $(LOGASMDIR)
@ echo ------ COMPILE asm ------
@ cd $(CURDIR)/src/asm && $(MAKE) asm
@ $(CXX) $(OBJDIR)/asm.o -o $(DESTDIR)/asm $(CXXFLAGS)
cpu: | $(OBJDIR) $(DESTDIR) $(LOGCALLDIR) $(LOGCPUDIR)
@ echo ------ COMPILE cpu ------
@ cd $(CURDIR)/src/asm && $(MAKE) cpu
@ $(CXX) $(OBJDIR)/cpu.o -o $(DESTDIR)/cpu $(CXXFLAGS)
.PHONY: run
run:
./bin/frontend --- $(filter-out $@,$(MAKECMDGOALS)) --- frontResult.txt
./bin/backend --- frontResult.txt --- backResult.txt
./bin/asm --- backResult.txt --- result.bin
./bin/cpu --- result.bin
clean:
rm -r $(DESTDIR) $(OBJDIR) $(LOGDIR)
$(DESTDIR):
mkdir $(DESTDIR)
$(OBJDIR):
mkdir $(OBJDIR)
$(LOGDIR):
mkdir $(LOGDIR)
$(LOGCALLDIR):
mkdir $(LOGCALLDIR)
$(LOGASMDIR):
mkdir $(LOGASMDIR)
$(LOGCPUDIR):
mkdir $(LOGCPUDIR)
$(LOGTREEDIR):
mkdir $(LOGTREEDIR)