# **************************************************************************** # # # # ::: :::::::: # # Makefile :+: :+: :+: # # +:+ +:+ +:+ # # By: wescande +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2016/08/29 21:32:58 by wescande #+# #+# # # Updated: 2017/04/22 19:26:34 by jhalford ### ########.fr # # # # **************************************************************************** # SHELL := bash NAME = ft_ping CC = gcc W_FLAGS = -Wall -Wextra -Werror D_FLAGS = FLAGS = $(W_FLAGS) $(D_FLAGS) LEN_NAME = `printf "%s" $(NAME) |wc -c` DELTA = $$(echo "$$(tput cols)-31-$(LEN_NAME)"|bc) LIBFT_DIR = libft/ LIBFT_LIB = $(LIBFT_DIR)libft.a LIBFT_INC = $(LIBFT_DIR)includes/ SRC_DIR = srcs/ INC_DIR = includes/ OBJ_DIR = objs/ SRC_BASE = \ ping.c\ SRCS = $(addprefix $(SRC_DIR), $(SRC_BASE)) OBJS = $(addprefix $(OBJ_DIR), $(SRC_BASE:.c=.o)) NB = $(words $(SRC_BASE)) INDEX = 0 all : @make -C $(LIBFT_DIR) @make -j $(NAME) $(NAME): $(LIBFT_LIB) $(OBJ_DIR) $(OBJS) $(CLIENT_OBJ) @$(CC) $(OBJS) -o $@ \ -I $(INC_DIR) \ -I $(LIBFT_INC) \ $(LIBFT_LIB) $(CLIENT_OBJ) $(FLAGS) \ -lm @printf "\r\033[38;5;117m✓ MAKE $@ \033[0m\033[K\n" $(LIBFT_LIB): @make -C $(LIBFT_DIR) $(OBJ_DIR) : @mkdir -p $(OBJ_DIR) $(OBJ_DIR)%.o : $(SRC_DIR)%.c | $(OBJ_DIR) @$(eval DONE=$(shell echo $$(($(INDEX)*20/$(NB))))) @$(eval PERCENT=$(shell echo $$(($(INDEX)*100/$(NB))))) @$(eval TO_DO=$(shell echo $$((20-$(INDEX)*20/$(NB) - 1)))) @$(eval COLOR=$(shell list=(160 196 202 208 215 221 226 227 190 154 118 82 46); index=$$(($(PERCENT) * $${#list[@]} / 100)); echo "$${list[$$index]}")) @printf "\r\033[38;5;%dm⌛ [%s]: %2d%% `printf '█%.0s' {0..$(DONE)}`%*s❙%*.*s\033[0m\033[K" $(COLOR) ft_p $(PERCENT) $(TO_DO) "" $(DELTA) $(DELTA) "$(shell echo "$@" | sed 's/^.*\///')" @$(CC) $(FLAGS) $(OBJ_FLAG) -MMD -c $< -o $@\ -I $(INC_DIR)\ -I $(LIBFT_INC) @$(eval INDEX=$(shell echo $$(($(INDEX)+1)))) clean: cleanlib @if [ -e $(OBJ_DIR) ]; then \ rm -rf $(OBJ_DIR); \ printf "\r\033[38;5;202m✗ clean $(NAME) \033[0m\033[K\n"; \ fi; cleanlib: @make -C $(LIBFT_DIR) clean fclean: clean fcleanlib @for file in $(NAME); do \ if [ -e $$file ]; then \ rm -f $$file ; \ printf "\r\033[38;5;196m✗ fclean $$file\033[0m\033[K\n"; \ fi; \ done; fcleanlib: cleanlib @make -C $(LIBFT_DIR) fclean re: fclean all relib: fcleanlib $(LIBFT_LIB) .PHONY : fclean clean re relib cleanlib fcleanlib -include $(OBJS:.o=.d)