|
6 | 6 | # By: sede-san <sede-san@student.42madrid.com +#+ +:+ +#+ # |
7 | 7 | # +#+#+#+#+#+ +#+ # |
8 | 8 | # Created: 2024/10/29 19:07:42 by sede-san #+# #+# # |
9 | | -# Updated: 2025/08/26 00:27:39 by sede-san ### ########.fr # |
| 9 | +# Updated: 2025/08/29 16:58:10 by sede-san ### ########.fr # |
10 | 10 | # # |
11 | 11 | # **************************************************************************** # |
12 | 12 |
|
13 | 13 | # ******************************* Output files ******************************* # |
14 | 14 |
|
15 | | -# Project name |
16 | 15 | NAME = libftprintf.a |
17 | 16 |
|
18 | 17 | # ************************** Compilation variables *************************** # |
19 | 18 |
|
20 | | -# Compiler |
21 | | -CC = cc |
| 19 | +CC = cc |
| 20 | +CFLAGS = -Wall -Wextra -Werror -Wunreachable-code |
| 21 | +HEADERS = -I $(INCLUDE_PATH) -I $(LIBFT_INCLUDE_PATH) |
22 | 22 |
|
23 | | -# Compilation flags |
24 | | -CFLAGS = -Wall -Wextra -Werror -Wunreachable-code # -Ofast |
25 | | - |
26 | | -# Additional headers |
27 | | -HEADERS = -I $(INCLUDE_PATH) -I $(LIBFT_INCLUDE_PATH) |
28 | | - |
29 | | -# Debug flags, execute with DEBUG=1 -> make DEBUG=1 |
30 | | -DFLAGS = -g3 |
31 | 23 | ifeq ($(DEBUG), 1) |
32 | | - CFLAGS += $(DFLAGS) |
| 24 | + CFLAGS += -g3 |
33 | 25 | endif |
34 | 26 |
|
35 | | -# Make command with no-print-directory flag |
36 | 27 | MAKE += --no-print-directory |
37 | 28 |
|
38 | | -# ***************************** Style variables ****************************** # |
39 | | - |
40 | | -# Define color codes |
41 | | -RED = \033[0;31m |
42 | | -GREEN = \033[0;32m |
43 | | -YELLOW = \033[0;33m |
44 | | -BLUE = \033[0;34m |
45 | | -RESET = \033[0m # No Color |
46 | | - |
47 | | -# Emojis |
48 | | -EMOJI_BROOM = 🧹 |
49 | | -EMOJI_CHECK = ✅ |
50 | | -EMOJI_CROSS = ❌ |
51 | | -EMOJI_WRENCH = 🔧 |
52 | | -EMOJI_BOX = 📦 |
53 | | - |
54 | 29 | # ****************************** Source files ******************************** # |
55 | 30 |
|
56 | | -# Source files path |
57 | 31 | SRC_PATH = src |
58 | 32 |
|
59 | | -# Source files |
60 | | -SRC = \ |
| 33 | +SRC = \ |
61 | 34 | $(SRC_PATH)/ft_printf.c \ |
62 | 35 | $(SRC_PATH)/character_string_types/ft_printf_putchar.c \ |
63 | 36 | $(SRC_PATH)/character_string_types/ft_printf_putstr.c \ |
64 | 37 | $(SRC_PATH)/integer_types/ft_printf_putint.c \ |
65 | 38 | $(SRC_PATH)/integer_types/ft_printf_putuint.c \ |
66 | 39 | $(SRC_PATH)/memdir_types/ft_printf_putptr.c |
67 | 40 |
|
68 | | -# Include path |
69 | | -INCLUDE_PATH = ./include |
| 41 | +INCLUDE_PATH = include |
70 | 42 |
|
71 | 43 | # ****************************** Object files ******************************** # |
72 | 44 |
|
73 | | -# Object files path |
74 | 45 | OBJS_PATH = build |
75 | 46 |
|
76 | | -# Source files and destination paths |
77 | 47 | OBJS = $(SRC:$(SRC_PATH)/%.c=$(OBJS_PATH)/%.o) |
78 | 48 |
|
79 | | -# Compile as object files |
80 | 49 | $(OBJS_PATH)/%.o: $(SRC_PATH)/%.c |
81 | 50 | @mkdir -p $(@D) |
82 | 51 | @$(CC) $(CFLAGS) -c $< -o $@ $(HEADERS) |
83 | 52 | @echo "$< compiled" |
84 | 53 |
|
85 | 54 | # ********************************* Rules ************************************ # |
86 | 55 |
|
87 | | -# Compile all |
88 | 56 | all: libft $(NAME) |
89 | 57 | .PHONY: all |
90 | 58 |
|
91 | | -# Compile project |
92 | 59 | $(NAME): $(OBJS) |
93 | 60 | @echo "$(YELLOW)$(EMOJI_BOX) Linking...$(RESET)" |
94 | 61 | @cp $(LIBFT_BIN) $(NAME) |
95 | 62 | ar rcs $(NAME) $(OBJS) |
96 | 63 | @echo "$(GREEN)$(EMOJI_CHECK) Linked.$(RESET)" |
97 | 64 |
|
98 | | -# Clean object files |
99 | 65 | clean: |
100 | 66 | @echo "$(RED)$(EMOJI_BROOM) Cleaning object files...$(RESET)" |
101 | 67 | @rm -rf $(OBJS_PATH) |
102 | 68 | @echo "$(GREEN)$(EMOJI_CHECK) Object files cleaned.$(RESET)" |
103 | 69 | .PHONY: clean |
104 | 70 |
|
105 | | -# Clean object files and binaries |
106 | 71 | fclean: clean |
107 | 72 | @echo "$(RED)$(EMOJI_BROOM) Cleaning binaries...$(RESET)" |
108 | 73 | @rm -f $(NAME) |
109 | | - @if [ -d $(LIBFT_PATH) ]; then \ |
110 | | - $(MAKE) -C $(LIBFT_PATH) fclean; \ |
| 74 | + @if [ -d $(LIBFT_PATH) ]; then \ |
| 75 | + $(MAKE) --silent -C $(LIBFT_PATH) fclean; \ |
111 | 76 | fi |
112 | 77 | @echo "$(GREEN)$(EMOJI_CHECK) Binaries cleaned.$(RESET)" |
113 | 78 | .PHONY: fclean |
114 | 79 |
|
115 | | -# Recompile |
116 | 80 | re: fclean all |
117 | 81 | .PHONY: re |
118 | 82 |
|
119 | 83 | # ********************************* Libraries ******************************** # |
120 | 84 |
|
121 | | -# Compile libraries |
122 | | -lib: |
123 | | - @$(MAKE) libft |
124 | | -.PHONY: lib |
125 | | - |
126 | | -# Compile file with libraries |
127 | | -LIBS = $(LIBFT_BIN) |
128 | | - |
129 | | -# Libraries path |
130 | 85 | LIB_PATH = lib |
131 | 86 |
|
132 | 87 | # ** Libft ** # |
133 | 88 |
|
134 | 89 | LIBFT = Libft |
135 | 90 | LIBFT_REPO = https://github.com/sdevsantiago/Libft.git |
136 | | -LIBFT_PATH = $(LIB_PATH)/$(LIBFT) |
| 91 | +ifndef LIBFT_PATH |
| 92 | + LIBFT_PATH = $(LIB_PATH)/$(LIBFT) |
| 93 | +endif |
137 | 94 | LIBFT_INCLUDE_PATH = $(LIBFT_PATH) |
138 | 95 | LIBFT_BIN = $(LIBFT_PATH)/libft.a |
139 | 96 |
|
140 | 97 | libft: $(LIBFT_BIN) |
| 98 | +.PHONY: libft |
141 | 99 |
|
142 | 100 | $(LIBFT_BIN): |
143 | 101 | @if [ ! -d $(LIBFT_PATH) ]; then \ |
144 | | - echo "$(YELLOW)$(EMOJI_WRENCH) Cloning $(LIBFT)...$(RESET)"; \ |
145 | | - git clone $(LIBFT_REPO) $(LIBFT_PATH); \ |
146 | | - rm -rf $(LIBFT_PATH)/.git; \ |
147 | | - echo "$(GREEN)$(EMOJI_CHECK) $(LIBFT) cloned...$(RESET)"; \ |
| 102 | + echo "$(YELLOW)$(EMOJI_WRENCH) Cloning $(LIBFT)...$(RESET)"; \ |
| 103 | + git clone --quiet $(LIBFT_REPO) $(LIBFT_PATH); \ |
| 104 | + rm -rf $(LIBFT_PATH)/.git; \ |
| 105 | + echo "$(GREEN)$(EMOJI_CHECK) $(LIBFT) cloned...$(RESET)"; \ |
148 | 106 | fi |
149 | 107 | @if [ ! -f $(LIBFT_BIN) ]; then \ |
150 | | - echo "$(YELLOW)$(EMOJI_WRENCH) Compiling $(LIBFT)...$(RESET)"; \ |
151 | | - $(MAKE) -C $(LIBFT_PATH) all clean; \ |
152 | | - echo "$(GREEN)$(EMOJI_CHECK) $(LIBFT) compiled.$(RESET)"; \ |
153 | | - else \ |
154 | | - echo "$(GREEN)$(EMOJI_CHECK) $(LIBFT) already compiled.$(RESET)"; \ |
| 108 | + echo "$(YELLOW)$(EMOJI_WRENCH) Compiling $(LIBFT)...$(RESET)"; \ |
| 109 | + $(MAKE) --silent -C $(LIBFT_PATH) all clean; \ |
| 110 | + echo "$(GREEN)$(EMOJI_CHECK) $(LIBFT) compiled.$(RESET)"; \ |
155 | 111 | fi |
156 | | -.PHONY: libft |
| 112 | + |
| 113 | +# ***************************** Style variables ****************************** # |
| 114 | + |
| 115 | +RED = \033[0;31m |
| 116 | +GREEN = \033[0;32m |
| 117 | +YELLOW = \033[0;33m |
| 118 | +BLUE = \033[0;34m |
| 119 | +RESET = \033[0m |
| 120 | + |
| 121 | +EMOJI_BROOM = 🧹 |
| 122 | +EMOJI_CHECK = ✅ |
| 123 | +EMOJI_CROSS = ❌ |
| 124 | +EMOJI_WRENCH = 🔧 |
| 125 | +EMOJI_BOX = 📦 |
0 commit comments