# - - - - - - # # # # COLORS # # # # - - - - - - # GRAY = "\e[0;30m" RED = "\e[0;31m" GREEN = "\e[0;32m" YELLOW = "\e[0;33m" BLUE = "\e[0;34m" PURPLE = "\e[0;35m" CYAN = "\e[0;36m" WHITE = "\e[0;37m" B_GRAY = "\e[1;30m" B_RED = "\e[1;31m" B_GREEN = "\e[1;32m" B_YELLOW = "\e[1;33m" B_BLUE = "\e[1;34m" B_PURPLE = "\e[1;35m" B_CYAN = "\e[1;36m" B_WHITE = "\e[1;37m" RESET = "\e[0m" # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # . name = value \ . += append to a variable # # VARIABLES . value . != set result of command # # . name is case sensitive . ?= set if not already set # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # NAME = $(SRCS_X:.cpp=.out) CXX = c++ CXXFLAGS = -Wall -Wextra #-Werror CXXFLAGS += $(HEADERS_D:%=-I%) CXXFLAGS += -std=c++98 CXXFLAGS += -g VPATH = $(SRCS_D) HEADERS_D = . SRCS_D = . SRCS = cgi_utils.cpp SRCS_X = \ cgi_cpp.cpp \ cgi_cpp_bad_headers.cpp \ cgi_cpp_empty.cpp \ cgi_cpp_empty_lines.cpp \ cgi_cpp_len.cpp \ cgi_cpp_len_big.cpp \ cgi_cpp_len_small.cpp \ cgi_cpp_no_body.cpp \ cgi_cpp_no_headers.cpp \ cgi_cpp_only_crlf.cpp \ cgi_cpp_sleep.cpp \ cgi_cpp_status.cpp \ OBJS_D = builds OBJS = $(SRCS:%.cpp=$(OBJS_D)/%.o) OBJS_X = $(SRCS_X:%.cpp=$(OBJS_D)/%.o) # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # # . target: prerequisites . $@ : target # # RULES . recipe . $< : 1st prerequisite # # . recipe . $^ : all prerequisites # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # all: $(NAME) $(OBJS_D)/%.o: %.cpp | $(OBJS_D) @echo $(B_GREEN)"compilation :" $@ $(RESET) $(CXX) $(CXXFLAGS) -c $< -o $@ $(OBJS_D): mkdir $@ $(NAME): $(OBJS) $(OBJS_X) $(NAME): @echo $(B_YELLOW)"linkage :" $@ $(RESET) $(CXX) $(OBJS) $(@:%.out=$(OBJS_D)/%.o) -o $@ clean: rm -rf $(OBJS_D) fclean: clean rm -f $(NAME) re: fclean all .PHONY : all clean fclean re