-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
144 lines (108 loc) · 5.73 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: nmota-bu <nmota-bu@student.42barcel> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2022/05/19 22:10:52 by nmota-bu #+# #+# #
# Updated: 2023/11/28 21:43:49 by nmota-bu ### ########.fr #
# #
# **************************************************************************** #
# ═══ NAMES ═══════════════════════════════════════════════════════════════════#
NAME = libft.a
# ═══ COLORS ══════════════════════════════════════════════════════════════════#
GREEN =\033[0;32m
BLUE =\033[0;34m
ORANGE =\033[38;5;214m
RED =\033[0;31m
YELLOW =\033[0;33m
WHITE =\033[0;37m
BCYAN =\033[1;36m
# ═══ COMPILATE ══════════════════════════════════════════════════════════════════#
CC := gcc
CFLAGS := -Wall -Wextra -Werror -g3
AR := ar -rcs
RM := rm -f
MKDIR := -mkdir -p
# ═══ DIRECTORIES ═════════════════════════════════════════════════════════════#
INCLUDES := inc/
SRC_DIR := src/
OBJ_DIR := obj/
IS_DIR := is/
LST_DIR := lst/
MEM_DIR := mem/
PUT_DIR := put/
STR_DIR := str/
TO_DIR := to/
GET_DIR := get/
ERR_DIR := err/
PRINTF_DIR := printf/
PRINTF_PRINT_DIR := printf/print/
PRINTF_PUT_DIR := printf/put/
PRINT_DIR := print/
MATH_DIR := math/
# ═══ SOURCES ════════════════════════════════════════════════════════════════#
IS_FILES := ft_isalpha ft_isdigit ft_isalnum ft_isascii ft_isprint \
ft_isprime ft_isnumber
LST_FILES = ft_lstnew ft_lstadd_front ft_lstsize ft_lstlast ft_lstadd_back \
ft_lstdelone ft_lstclear ft_lstiter ft_lstmap ft_lstdelitem ft_lstprint \
ft_lstfind ft_lstreverse ft_lstfree ft_lst_to_dptr ft_lstfree_node \
ft_lstfind_to_dptr ft_lstfind_rm
MEM_FILES := ft_bzero ft_calloc ft_memcmp ft_memcpy ft_memchr ft_memmove \
ft_memset ft_free_dptr ft_free_tptr
PUT_FILES := ft_putchar_fd ft_putendl_fd ft_putnbr_fd ft_putstr_fd ft_putuni \
ft_file_to_dptr ft_file_to_dptr_m
STR_FILES := ft_split ft_strchr ft_strdup ft_striteri ft_strjoin ft_strlcat \
ft_strlcpy ft_strlen ft_strmapi ft_strncmp ft_strnstr ft_strrchr \
ft_strtrim ft_substr ft_cp_dptr ft_strcmp ft_strcspn ft_strpbrk \
ft_strrev ft_strspn ft_strcpy ft_strtok ft_split_join
TO_FILES := ft_atoi ft_itoa ft_tolower ft_toupper ft_abs ft_atoi_long
GET_FILES := get_next_line
ERR_FILES := ft_message
PRINTF_FILES := ft_printf ft_search_arg ft_read_text
PRINTF_PRINT_FILES := ft_print_str ft_print_char ft_print_dec ft_print_unsint \
ft_print_ptr ft_print_hex
PRINTF_PUT_FILES := ft_putstr ft_write
PRINT_FILES := ft_print_dptr ft_print_tptr
MATH_FILES := ft_len_token ft_len_dptr ft_numdup
# ═══ SOURCES ════════════════════════════════════════════════════════════════#
SRC_FILES+=$(addprefix $(IS_DIR),$(IS_FILES))
SRC_FILES+=$(addprefix $(LST_DIR),$(LST_FILES))
SRC_FILES+=$(addprefix $(MEM_DIR),$(MEM_FILES))
SRC_FILES+=$(addprefix $(PUT_DIR),$(PUT_FILES))
SRC_FILES+=$(addprefix $(STR_DIR),$(STR_FILES))
SRC_FILES+=$(addprefix $(TO_DIR),$(TO_FILES))
SRC_FILES+=$(addprefix $(GET_DIR),$(GET_FILES))
SRC_FILES+=$(addprefix $(ERR_DIR),$(ERR_FILES))
SRC_FILES+=$(addprefix $(PRINTF_DIR),$(PRINTF_FILES))
SRC_FILES+=$(addprefix $(PRINTF_PRINT_DIR),$(PRINTF_PRINT_FILES))
SRC_FILES+=$(addprefix $(PRINTF_PUT_DIR),$(PRINTF_PUT_FILES))
SRC_FILES+=$(addprefix $(PRINT_DIR),$(PRINT_FILES))
SRC_FILES+=$(addprefix $(MATH_DIR),$(MATH_FILES))
SRCS := $(addprefix $(SRC_DIR), $(addsuffix .c, $(SRC_FILES)))
OBJS := $(addprefix $(OBJ_DIR), $(addsuffix .o, $(SRC_FILES)))
DEPS := $(addprefix $(OBJ_DIR), $(addsuffix .d, $(SRC_FILES)))
# ═══ RULES ══════════════════════════════════════════════════════════════════#
$(OBJ_DIR)%.o : $(SRC_DIR)%.c Makefile
@$(MKDIR) $(dir $@)
@clear
@echo "$(ORANGE) Compilando libft ➟ $(BCYAN)[$<]$(WHITE)"
@$(CC) $(CFLAGS) -I$(INCLUDES) -MMD -MP -c $< -o $@
all: $(NAME)
$(NAME) : $(OBJS)
@$(AR) $(NAME) $(OBJS)
@echo "$(GREEN)\n ✓ Creado $(NAME)\n$(WHITE)"
clean :
@$(RM) -rf $(OBJ_DIR) $(NAME)
@echo "$(RED)\n ✗ Archivos objetos libft borrados.‼️\n$(WHITE)";
fclean : clean
@$(RM) -f $(NAME)
@echo "$(GREEN) Toda libreria libft limpita...🤟🏼$(WHITE)"
re: fclean all
@echo "$(YELLOW) Borrado todo y recompilado...🤟🏼$(WHITE)"
norm:
@norminette $(SRCS) $(INCLUDES) | grep -v Norme -B1 || true
# Non-file targets
-include $(DEPS)
.PHONY: all clean fclean re norm