-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
194 lines (159 loc) · 8 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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
CC := cc
NAME := cub3d
NAME_BONUS := cub3d_bonus
CFLAGS := -Wall -Werror -Wextra -O0 -g3
MLX := ./libs/MLX42/build/libmlx42.a
BIN := ./bin/
INCLUDES := -I./mandatory/include -I./libs/MLX42/include
INCLUDES_BONUS := -I./bonus/include -I./libs/MLX42/include
MLX_LIBS := $(MLX) -ldl -lglfw -pthread -lm
PRINTF := ./libs/libft/Printf/libftprintf.a
LIBFT := ./libs/libft/libft.a
42LIBS := $(PRINTF) $(LIBFT)
SOURCE := main.c parse.c utils.c get_textures.c get_colors.c \
get_map_matrice.c key_hooks.c loop_hooks.c draw_images.c inits.c \
draw_line.c draw_line_utils.c horizontal_rays.c vertical_rays.c rays_utils.c \
load_textures.c get_cardinal_direction.c key_hooks_utils.c movement_keys.c draw_wall.c \
get_map_matrice_utils.c replace_tabs.c
SOURCE_BONUS := main_bonus.c parse_bonus.c utils_bonus.c get_textures_bonus.c get_colors_bonus.c \
get_map_matrice_bonus.c key_hooks_bonus.c loop_hooks_bonus.c draw_images_bonus.c inits_bonus.c \
draw_line_bonus.c draw_line_utils_bonus.c horizontal_rays_bonus.c vertical_rays_bonus.c rays_utils_bonus.c \
load_textures_bonus.c get_cardinal_direction_bonus.c key_hooks_utils_bonus.c movement_keys_bonus.c draw_wall_bonus.c \
get_map_matrice_utils_bonus.c replace_tabs_bonus.c mouse_bonus.c
OBJECTS := $(addprefix $(BIN),$(SOURCE:.c=.o))
OBJECTS_BONUS := $(addprefix $(BIN),$(SOURCE_BONUS:.c=.o))
BLUE := \033[1;34m
RED := \033[0;31m
GREEN := \033[0;32m
END := \033[0m
.PHONY: all clean fclean re val bonus re_bonus
all: $(LIBFT) $(PRINTF) $(MLX) $(BIN) $(NAME)
$(LIBFT):
@printf "$(BLUE)----------------------$(END)\n"
@printf "$(BLUE)--Compiling Libft...-$(END)\n"
@printf "$(BLUE)----------------------$(END)\n"
@make -C ./libs/libft --no-print-directory
$(PRINTF):
@printf "$(BLUE)----------------------$(END)\n"
@printf "$(BLUE)-Compiling Printf...-$(END)\n"
@printf "$(BLUE)----------------------$(END)\n"
@make -C ./libs/libft/Printf --no-print-directory
$(BIN):
@mkdir -p $(BIN)
$(BIN)%.o: ./mandatory/src/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(BIN)%.o: ./mandatory/src/verifications/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(BIN)%.o: ./mandatory/src/parse/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(BIN)%.o: ./mandatory/src/hooks/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(BIN)%.o: ./mandatory/src/image/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(BIN)%.o: ./mandatory/src/draw_line/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(BIN)%.o: ./mandatory/src/inits/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(BIN)%.o: ./mandatory/src/ray_cast/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(NAME): $(OBJECTS)
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $(NAME)...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) $(OBJECTS) $(42LIBS) $(MLX_LIBS) -o $(NAME)
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(GREEN)--$(NAME) compiled!-$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
$(BIN)%.o: ./bonus/src/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(BIN)%.o: ./bonus/src/verifications/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(BIN)%.o: ./bonus/src/parse/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(BIN)%.o: ./bonus/src/hooks/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(BIN)%.o: ./bonus/src/image/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(BIN)%.o: ./bonus/src/draw_line/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(BIN)%.o: ./bonus/src/inits/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(BIN)%.o: ./bonus/src/ray_cast/%.c
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $<...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES_BONUS)
$(NAME_BONUS): $(OBJECTS_BONUS)
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(BLUE)Compiling $(NAME_BONUS)...$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@$(CC) $(CFLAGS) $(OBJECTS_BONUS) $(42LIBS) $(MLX_LIBS) -o $(NAME_BONUS)
@printf "$(BLUE)-----------------------------------------------$(END)\n"
@printf "$(GREEN)--$(NAME_BONUS) compiled!-$(END)\n"
@printf "$(BLUE)-----------------------------------------------$(END)\n"
$(MLX):
@cmake ./libs/MLX42/ -B ./libs/MLX42/build/ && make -C ./libs/MLX42/build -j4
bonus: $(LIBFT) $(PRINTF) $(MLX) $(BIN) $(NAME_BONUS)
clean:
@printf "$(RED)Cleaning...$(END)\n"
@make -C ./libs/libft/Printf clean --no-print-directory
@make -C ./libs/libft clean --no-print-directory
@rm -rf ./libs/MLX42/build
@rm -rf $(BIN)
fclean: clean
@printf "$(RED)Full cleaning...$(END)\n"
@make -C ./libs/libft/Printf --no-print-directory fclean
@make -C ./libs/libft --no-print-directory fclean
@rm -rf $(NAME)
@rm -rf $(NAME_BONUS)
@printf "$(GREEN)All cleaned!$(END)\n"
val:
valgrind -q --leak-check=full --show-leak-kinds=all --track-origins=yes --suppressions=./sup.sup ./cub3d assets/maps/minecraft_lib.cub
re: fclean all
re_bonus: fclean bonus
val: