-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
93 lines (71 loc) · 2.23 KB
/
Makefile
File metadata and controls
93 lines (71 loc) · 2.23 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
91
92
93
NAME = avm
INC_PATH = include
SRC_PATH = srcs
SRC = srcs/main.cpp \
srcs/VirtualMachine.cpp \
srcs/AbstractVMException.cpp \
srcs/Commands.cpp \
srcs/Lexer.cpp \
srcs/OperandFactory.cpp \
srcs/Parser.cpp \
srcs/Token.cpp
CXXFLAGS = -g -Wall -Wextra -Werror -std=c++20 -pedantic
INC = -I${INC_PATH}
OBJ_D = objs
OBJ = $(SRC:${SRC_PATH}/%.cpp=${OBJ_D}/%.o)
UNAME := $(shell uname)
RM = rm -rf
ifeq ($(UNAME), Darwin)
CXX = c++
else ifeq ($(UNAME), FreeBSD)
CXX = clang++
else
CXX = g++
CXXFLAGS += -D LINUX
endif
# Sphinx and Doxygen configuration
SPHINXOPTS ?=
SPHINXBUILD ?= sphinx-build
SOURCEDIR = ./doc
BUILDDIR = ./doc/_build
all: ${NAME}
${OBJ_D}/%.o:${SRC_PATH}/%.cpp
@mkdir -p ${OBJ_D}
$(CXX) $(CXXFLAGS) ${INC} -o $@ -c $<
${NAME}: ${OBJ}
@printf "Compiling $(C_YELLOW)$(NAME)$(C_END) ... \n"
$(CXX) $(CXXFLAGS) ${INC} -o ${NAME} ${OBJ}
@printf "$(C_GREEN)DONE$(C_END)\n"
clean:
$(RM) $(OBJ_D)
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@printf "$(C_RED)Cleaning objs$(C_END)\n"
fclean: clean
$(RM) $(NAME) *valgrind-out.txt doc/xml
@printf "$(C_RED)Deleted Everything$(C_END)\n"
re: fclean all
show:
@printf "$(C_GREEN)"
@printf "UNAME : $(UNAME)\n"
@printf "NAME : $(C_YELLOW)$(NAME)$(C_GREEN)\n"
@printf "CXX : $(CXX)\n"
@printf "CXXFLAGS : $(CXXFLAGS)\n"
@printf "INCLUDES : $(INC)\n"
@printf "SRC : $(C_YELLOW)$(SRC)$(C_GREEN)\n"
@printf "OBJ : $(C_YELLOW) $(OBJ)$(C_END)\n"
# Put it first so that "make" without argument is like "make help".
help:
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
.PHONY: help Makefile all re clean fclean show
# Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile
@-doxygen ./doc/Doxyfile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
C_BLACK = \033[0;30m
C_RED = \033[0;31m
C_GREEN = \033[0;32m
C_YELLOW = \033[0;33m
C_BLUE = \033[0;34m
C_WHITE = \033[0;37m
C_END = \033[0m