-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
105 lines (87 loc) · 2.1 KB
/
Makefile
File metadata and controls
105 lines (87 loc) · 2.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
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
NAME := webserv
CC := c++
CFLAGS := -Wall -Wextra -Werror -std=c++98 -g
DEP_FLAGS := -MP -MMD
SRCS_DIRS := $(addprefix sources, \
/ \
/core \
/cgi \
/utils \
/config \
/http \
)
HDRS_DIRS := $(addprefix headers, \
/ \
/core \
/utils \
/cgi \
$(addprefix /config, \
/models \
/parser \
) \
$(addprefix /http, \
/models \
/parser \
) \
)
vpath %.cpp $(SRCS_DIRS)
vpath %.hpp $(HDRS_DIRS)
SRCS := main.cpp \
$(addprefix cgi/,\
cgi.cpp \
) \
$(addprefix config/, \
parser.cpp \
) \
$(addprefix core/,\
server.cpp \
requesthandler.cpp \
pagegenerator.cpp \
) \
$(addprefix http/, \
parser.cpp \
) \
$(addprefix utils/,\
logger.cpp \
file.cpp \
debug.cpp \
time.cpp \
string.cpp \
exception.cpp \
)
# $(addprefix example_dir/,
# example1.cpp,
# example2.cpp
# )
OBJS_DIR := .objects
OBJS := $(addprefix $(OBJS_DIR)/, \
$(patsubst %.cpp, %.o, $(SRCS)))
DEPS := $(addprefix $(OBJS_DIR)/, \
$(patsubst %.cpp, %.d, $(SRCS)))
all:
@echo "$(FMT_BOLD)Creating/updating $(FMT_WHITE_B)'$(NAME)'$(FMT_BOLD):$(FMT_DEF)"
@$(MAKE) --no-print-directory $(NAME)
$(NAME): $(OBJS)
@echo "$(FMT_BOLD)Linking files...$(FMT_DEF)"
@$(CC) $(OBJS) $(CFLAGS) -o $@
@echo "$(FMT_WHITE_B)'$(NAME)'$(FMT_BOLD) has been created/updated.$(FMT_DEF)"
$(OBJS_DIR)/%.o: %.cpp | $(OBJS_DIR)
@echo "Assembling $<..."
@mkdir -p $(dir $@)
@$(CC) $(CFLAGS) $(DEP_FLAGS) -c $< -o $@
$(OBJS_DIR):
@mkdir -p $@
@echo "$(FMT_BOLD)Directory '$(OBJS_DIR)' has been created.$(FMT_DEF)"
clean:
@rm -rf $(OBJS) $(DEPS) $(OBJS_DIR)
@echo "$(FMT_WHITE)$(NAME): $(FMT_BOLD)Object files have been cleaned.$(FMT_DEF)"
fclean: clean
@rm -rf $(NAME)
@echo "$(FMT_WHITE)'$(NAME)'$(FMT_BOLD) has been cleaned.$(FMT_DEF)"
re: fclean all
.PHONY: all clean fclean re
-include $(DEPS)
FMT_BOLD := \033[0;1m
FMT_WHITE_B := \033[1;37m
FMT_WHITE := \033[37m
FMT_DEF := \033[0;39m