-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmakefile
More file actions
90 lines (65 loc) · 4.58 KB
/
makefile
File metadata and controls
90 lines (65 loc) · 4.58 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
83
84
85
86
87
88
89
90
CXXFLAGS = -g -std=c++17 -Wall -Wextra -Weffc++ -Wc++0x-compat -Wc++11-compat -Wc++14-compat -Waggressive-loop-optimizations \
-Walloc-zero -Walloca -Walloca-larger-than=8192 -Warray-bounds -Wcast-align -Wcast-qual -Wchar-subscripts \
-Wconditionally-supported -Wconversion -Wctor-dtor-privacy -Wdangling-else -Wduplicated-branches -Wempty-body -Wfloat-equal \
-Wformat-nonliteral -Wformat-security -Wformat-signedness -Wformat=2 -Wformat-overflow=2 -Wformat-truncation=2 -Winline \
-Wlarger-than=8192 -Wvla-larger-than=8192 -Wlogical-op -Wmissing-declarations -Wnon-virtual-dtor -Wopenmp-simd \
-Woverloaded-virtual -Wpacked -Wpointer-arith -Wredundant-decls -Wrestrict -Wshadow -Wsign-promo -Wstack-usage=8192 \
-Wstrict-null-sentinel -Wstrict-overflow=2 -Wstringop-overflow=4 -Wsuggest-attribute=noreturn -Wsuggest-final-types \
-Wsuggest-override -Wswitch-default -Wswitch-enum -Wsync-nand -Wundef -Wunreachable-code -Wunused -Wvariadic-macros \
-Wno-literal-suffix -Wno-missing-field-initializers -Wnarrowing -Wno-old-style-cast -Wvarargs -Waligned-new \
-Walloc-size-larger-than=1073741824 -Walloc-zero -Walloca -Walloca-larger-than=8192 -Wdangling-else \
-Wduplicated-branches -Wformat-overflow=2 -Wformat-truncation=2 -Wmissing-attributes -Wmultistatement-macros -Wrestrict \
-Wshadow=global -Wsuggest-attribute=malloc -fcheck-new -fsized-deallocation -fstack-check -fstrict-overflow \
-flto-odr-type-merging -fno-omit-frame-pointer -Wno-unknown-pragmas
all: init asm proc
IncDir = include
LibDir = libs
BuildDir = build
TextBuildDir = $(LibDir)/text/build
TextSrcDir = $(LibDir)/text/src
TextIncDir = $(LibDir)/text/include
#------------------------------------------------ASSEMBLER COMPILATION BLOCK----------------------------------------------
AsmSrcDir = src/asm
AsmBuildDir = $(BuildDir)/asm
ASM_OBJECTS = $(AsmBuildDir)/main.o $(AsmBuildDir)/labels.o $(AsmBuildDir)/assembler.o \
$(TextBuildDir)/text.o $(TextBuildDir)/file.o
asm: $(ASM_OBJECTS)
g++ $(ASM_OBJECTS) -o asm.exe
$(AsmBuildDir)/main.o: $(AsmSrcDir)/main.cpp $(TextIncDir)/text.h $(LibDir)/colors/colors.h $(IncDir)/asm/assembler.h
g++ -I . -c $(AsmSrcDir)/main.cpp $(CXXFLAGS) -o $(AsmBuildDir)/main.o
$(AsmBuildDir)/labels.o: $(AsmSrcDir)/labels.cpp $(IncDir)/asm/labels.h
g++ -I . -c $(AsmSrcDir)/labels.cpp $(CXXFLAGS) -o $(AsmBuildDir)/labels.o
$(AsmBuildDir)/assembler.o: $(AsmSrcDir)/assembler.cpp $(IncDir)/asm/assembler.h $(TextIncDir)/text.h $(IncDir)/asm/labels.h \
$(IncDir)/constants.h $(IncDir)/asm/settings.h $(LibDir)/debug/debug.h $(IncDir)/opdefs.h $(IncDir)/regdefs.h
g++ -I . -c $(AsmSrcDir)/assembler.cpp $(CXXFLAGS) -o $(AsmBuildDir)/assembler.o
#-------------------------------------------------------------------------------------------------------------------------
#------------------------------------------------PROCESSOR COMPILATION BLOCK----------------------------------------------
ProcBuildDir = build/processor
ProcSrcDir = src/processor
StackBuildDir = $(LibDir)/stack/build
StackSrcDir = $(LibDir)/stack/src
HashBuildDir = $(LibDir)/hash/build
PROC_OBJS = $(ProcBuildDir)/main.o $(ProcBuildDir)/processor.o \
$(TextBuildDir)/text.o $(TextBuildDir)/file.o \
$(StackBuildDir)/stack.o $(HashBuildDir)/hash.o
proc: $(PROC_OBJS)
g++ $(PROC_OBJS) -o proc.exe
$(ProcBuildDir)/main.o: $(ProcSrcDir)/main.cpp $(IncDir)/processor/processor.h $(LibDir)/stack/include/stack.h $(TextIncDir)/text.h $(LibDir)/colors/colors.h $(LibDir)/debug/debug.h
g++ -I . -c $(ProcSrcDir)/main.cpp $(CXXFLAGS) -o $(ProcBuildDir)/main.o
$(ProcBuildDir)/processor.o: $(ProcSrcDir)/processor.cpp $(IncDir)/processor/processor.h $(IncDir)/processor/settings.h $(LibDir)/stack/include/stack.h $(TextIncDir)/text.h $(LibDir)/colors/colors.h $(LibDir)/debug/debug.h
g++ -I . -c $(ProcSrcDir)/processor.cpp $(CXXFLAGS) -o $(ProcBuildDir)/processor.o
#--------------------------------------------------------------------------------------------------------------------------
#-------------------------------------------------LIBRARY COMPILATION------------------------------------------------------
$(StackBuildDir)/stack.o: $(StackSrcDir)/stack.cpp
"$(MAKE)" -C "$(LibDir)/stack" makefile init all
$(HashBuildDir)/hash.o:
"$(MAKE)" -C "$(LibDir)/hash" makefile init all
$(TextBuildDir)/text.o $(TextBuildDir)/file.o: $(TextSrcDir)/text.cpp $(TextSrcDir)/file.cpp
"$(MAKE)" -C "$(LibDir)/text" makefile init all
#--------------------------------------------------------------------------------------------------------------------------
.PHONY: init
init:
mkdir -p $(BuildDir) $(AsmBuildDir) $(ProcBuildDir)
.PHONY: clean
clean:
rm -rf $(BuildDir) ./*.exe