# **************************************************************************** # # # # ::: :::::::: # # Makefile :+: :+: :+: # # +:+ +:+ +:+ # # By: ycontre +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2024/10/13 19:39:57 by ycontre #+# #+# # # Updated: 2024/12/23 17:41:04 by ycontre ### ########.fr # # # # **************************************************************************** # BLACK = \033[30;49;3m RED = \033[31;49;3m GREEN = \033[32;49;3m YELLOW = \033[33;49;3m BLUE = \033[34;49;3m MAGENTA = \033[35;49;3m CYAN = \033[36;49;3m WHITE = \033[37;49;3m BBLACK = \033[30;49;3;1m BRED = \033[31;49;3;1m BGREEN = \033[32;49;3;1m BYELLOW = \033[33;49;3;1m BBLUE = \033[34;49;3;1m BMAGENTA = \033[35;49;3;1m BCYAN = \033[36;49;3;1m BWHITE = \033[37;49;3;1m RESET = \033[0m LINE_CLR = \33[2K\r FILE = $(shell ls -lR srcs/ | grep -F .c | wc -l) CMP = 1 NAME := RT SRCS_DIR := srcs OBJS_DIR := .objs ASSETS_DIR := assets SRC_ASSETS_DIR := assets_src ALL_SRCS := RT.cpp gl.cpp \ Window.cpp \ Shader.cpp \ Camera.cpp SRCS := $(ALL_SRCS:%=$(SRCS_DIR)/%) OBJS := $(addprefix $(OBJS_DIR)/, $(SRCS:%.cpp=%.o)) HEADERS := includes/RT.hpp CC := clang++ -Wextra -Werror -Wall CFLAGS := -Ofast LDFLAGS := -lglfw -lstdc++ IFLAGS := -I ./includes RM := rm -rf MAKEFLAGS += --no-print-directory DIR_DUP = mkdir -p $(@D) # RULES ********************************************************************** # all: $(NAME) bonus: all $(NAME): $(OBJS) $(HEADERS) $(ASSETS) @$(CC) $(LDFLAGS) $(CFLAGS) $(IFLAGS) $(OBJS) -o $(NAME) @printf "$(LINE_CLR)$(BWHITE) $(NAME): PROJECT COMPILED !$(RESET)\n\n" $(OBJS_DIR)/%.o: %.cpp @$(DIR_DUP) @if [ $(CMP) -eq '1' ]; then \ printf "\n"; \ fi; @printf "$(LINE_CLR)$(WHITE) $(NAME): $(CMP)/$(FILE) $(BWHITE)$<$(RESET) $(GREEN)compiling...$(RESET)" @$(CC) $(CFLAGS) $(IFLAGS) -o $@ -c $^ @$(eval CMP=$(shell echo $$(($(CMP)+1)))) @if [ $(CMP) -gt $(FILE) ]; then \ printf "$(LINE_CLR)$(WHITE) $(NAME): $$(($(CMP)-1))/$(FILE)\n$(LINE_CLR)$(BGREEN) Compilation done !$(RESET)\n"; \ fi \ clean: @$(RM) $(OBJS) dclean: clean @$(RM) $(OBJS_DIR) fclean: dclean @printf " $(BWHITE)$(NAME):$(BRED) cleaned.$(RESET)\n" @$(RM) $(NAME) mfclean: dclean @$(RM) $(NAME) mre: @$(MAKE) mfclean @$(MAKE) all re: @$(MAKE) fclean @$(MAKE) all # **************************************************************************** # .PHONY: all clean fclean dclean re bonus