-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
72 lines (49 loc) · 1.28 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
NAME = ircserv
TESTS_NAME = testIRC
CXX = c++
CXXFLAGS = -Wall -Werror -Wextra
STD = -std=c++98
INC_DIR = $(shell find include -type d)
INCLUDE = $(addprefix -I, $(INC_DIR))
SRC = $(shell find src -type f -name "*.cpp")
OBJ_DIR = obj
OBJ = $(patsubst %, $(OBJ_DIR)/%, $(SRC:.cpp=.o))
RM = rm -rf
DEPS = $(patsubst %.o, %.d, $(OBJ))
HYEL = "\e[1;93m"
HWHT = "\e[1;97m"
NC ='\033[0m'
# $> make re build=tests
ifeq ($(build), tests)
SRC=$(shell find tests -type f -name "*.cpp")
NAME=$(TESTS_NAME)
else ifeq ($(build), log)
CXXFLAGS+=-DLOG
else ifeq ($(build), sani)
CXXFLAGS+=-fsanitize=address
else ifeq ($(build), bot)
NAME = ircBot/bot
SRC = $(shell find ircBot -type f -name "*.cpp")
OBJ = $(patsubst %, $(OBJ_DIR)/%, $(SRC:.cpp=.o))
endif
all : $(NAME)
$(NAME) : $(OBJ)
@ $(CXX) $(STD) $(CXXFLAGS) $(INCLUDE) $(OBJ) -o $(NAME)
$(OBJ_DIR)/%.o : %.cpp
@ mkdir -p $(dir $@) && printf $(HYEL)"[+] ==> "$(HWHT)
# @ printf $(HYEL)"[+]"$(HWHT)" COMPILING"$(HYEL)" ⤐ "$(HWHT)"%s\n"$(NC) $(notdir $<)
$(CXX) $(STD) $(CXXFLAGS) $(INCLUDE) -MMD -o $@ -c $<
@ printf $(NC)
clean :
@ $(RM) $(OBJ_DIR)
fclean : clean
@ $(RM) $(NAME)
fcleanTest :
@ $(RM) $(TESTS_NAME)
fcleanbot :
@ $(RM) $(NAME)
bclean : clean
@ $(RM) $(NAME)
re : fclean all
r : bclean all
-include $(DEPS)