Philosophers/Makefile

82 lines
2.8 KiB
Makefile

# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: lfirmin lfirmim@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/08/12 07:07:31 by lfirmin #+# #+# #
# Updated: 2024/08/12 09:15:05 by lfirmin ### ########.fr #
# #
# **************************************************************************** #
NAME = philo
SRC_FILES = main.c parsing.c utils.c utils_2.c routine.c threads.c routine_utils.c init.c death.c routine_utils_2.c
INCLUDES_FILES = include/philo.h
SRC_DIR = srcs/
SRC = $(addprefix $(SRC_DIR), $(SRC_FILES))
OBJ_DIR = obj/
OBJ = $(addprefix $(OBJ_DIR), $(SRC_FILES:.c=.o))
CC = cc
CFLAGS = -Wall -Werror -Wextra -g3 -pthread
INCLUDE = -I include
RM = rm -rf
MKDIR = mkdir -p
GREEN = \033[0;32m
YELLOW = \033[0;33m
CYAN = \033[0;36m
RESET = \033[0m
BOLD = \033[1m
WHITE = \033[0;97m
LOADING_CHARS = ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
define PHILO_ART
|||| _____ _ _ _ ||||
|||| | __ \| | (_) | ||||
\__/ | |__) | |__ _| | ___ \__/
|| | ___/| '_ \| | |/ _ \ ||
|| | | | | | | | | (_) | ||
|| |_| |_| |_|_|_|\___/ ||
"" ""
endef
export PHILO_ART
all: print_art $(NAME)
print_art:
@printf "$(YELLOW)%s$(RESET)\n" "$$PHILO_ART"
$(NAME): $(OBJ) $(INCLUDES_FILES)
@printf "$(BOLD)$(WHITE)Welcome to the $(GREEN)Philosophers$(WHITE) compilation process.\nPlease hold on as we prepare your program.\n\n$(RESET)"
@printf "$(YELLOW)Compiling Philosophers, Please wait...$(RESET)"
@for char in $(LOADING_CHARS); do \
printf "\r$(YELLOW)Compiling Philosophers, Please wait... $$char$(RESET)"; \
sleep 0.1; \
done
@$(CC) $(CFLAGS) $(OBJ) $(INCLUDE) -o $(NAME)
@printf "\r$(GREEN)Nice ! $(WHITE)Philosophers compiled successfully ! $(RESET)\n\n"
@printf "$(BOLD)$(WHITE)Compilation complete !\n$(GREEN)Philosophers$(WHITE) is ready to use !\n"
$(OBJ_DIR)%.o: $(SRC_DIR)%.c
@$(MKDIR) $(OBJ_DIR)
@$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
clean:
@$(RM) $(OBJ_DIR)
@printf "$(WHITE)Clean process completed for $(GREEN)Philosophers.$(RESET)\n"
fclean: clean
@$(RM) $(NAME)
@$(RM) $(PRINTF)
@$(RM) $(LIBFT)
@printf "$(WHITE)Full clean process completed for $(GREEN)Philosophers.$(RESET)\n"
re: fclean all
.PHONY: all clean fclean re print_art norminette
norminette:
norminette srcs/* include/* | grep "Error"