NAME =		libft.a

SRC_FILE =	ft_atoi.c \
			ft_toupper.c \
			ft_bzero.c \
			ft_isalnum.c \
			ft_tolower.c \
			ft_memcpy.c \
			ft_memccpy.c \
			ft_memmove.c \
			ft_memset.c \
			ft_memchr.c \
			ft_memcmp.c \
			ft_strlcat.c \
			ft_strnstr.c \
			ft_strlcat.c \
			ft_strlen.c \
			ft_strchr.c \
			ft_strrchr.c \
			ft_isalpha.c \
			ft_isascii.c \
			ft_strlcpy.c \
			ft_strncmp.c \
			ft_isdigit.c \
			ft_isprint.c \
			ft_toupper.c \
			ft_bzero.c \
			ft_strdup.c \
			ft_strnstr.c \
			ft_strnstr_nullterminated.c \
			ft_calloc.c \
			ft_substr.c \
			ft_strjoin.c \
			ft_u_itoa.c \
			ft_itoa.c \
			ft_strmapi.c \
			ft_putchar_fd.c \
			ft_putstr_fd.c \
			ft_putnbr_fd.c \
			ft_putendl_fd.c \
			ft_strtrim.c \
			ft_split.c \
			ft_u_convert.c \
			ft_convert_base.c \
			ft_revert_int.c \
			ft_lstnew.c \
			ft_lstadd_front.c \
			ft_lstsize.c \
			ft_lstlast.c \
			ft_lstadd_back.c \
			ft_lstdelone.c \
			ft_lstclear.c \
			ft_lstiter.c \
			ft_lstmap.c \

OBJ_FILE =	$(SRC_FILE:.c=.o)

INC_FILE =	libft.h

SRC_DIR =	src/
OBJ_DIR =	obj/
INC_DIR =	inc/
SRC =		$(addprefix $(SRC_DIR), $(SRC_FILE))
OBJ =		$(addprefix $(OBJ_DIR), $(OBJ_FILE))
INC =		$(addprefix $(INC_DIR), $(INC_FILE))

CC =		gcc
CFLAGS =	-Wall -Werror -Wextra

GREEN =		\033[32m
RED =		\033[31m
ORANGE =	\033[33m
CYAN =		\033[36m
WHITE =		\033[0m

all: $(NAME)

$(NAME): $(OBJ) $(INC) 
	@ar rc $(NAME) $(OBJ)
	@ranlib $(NAME)
	@echo -e "$(GREEN)[OK]$(WHITE) $(NAME)"

$(OBJ_DIR)%.o: $(SRC_DIR)%.c $(INC) 
	@if [ ! -d ./obj ]; then \
		mkdir -p ./obj; \
	fi;
	@$(CC) $(CFLAGS) -I $(INC_DIR) -o $@ -c $<
	@echo -e "$(CYAN)[CC]$(WHITE) $(<:$(SRC_DIR)%=%)"

clean:
	@echo -e "$(ORANGE)[CLEAN]$(WHITE) $(NAME)"
	@rm -rf $(OBJ_DIR)

fclean:
	@echo -e "$(ORANGE)[CLEAN]$(WHITE) $(NAME)"
	@rm -rf $(OBJ_DIR)
	@echo -e "$(RED)[DELETE]$(WHITE) $(NAME)"
	@rm -f $(NAME)

re: fclean all

.PHONY: all clean fclean re