-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
114 lines (91 loc) · 3.6 KB
/
Makefile
File metadata and controls
114 lines (91 loc) · 3.6 KB
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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: yulpark <yulpark@student.codam.nl> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/03/10 20:28:14 by flima #+# #+# #
# Updated: 2025/06/29 03:02:11 by yulpark ### ########.fr #
# #
# **************************************************************************** #
NAME = cub3D
RESET = \033[0m
GREEN = \033[32m
YELLOW = \033[33m
BLUE = \033[34m
CFLAGS = -Wall -Werror -Wextra -g
CFLAGS += -fsanitize=address
LIBFT_DIR = Libft
LIBFT = $(LIBFT_DIR)/libft.a
INCLUDE = include
HEADERS = $(INCLUDE)/libft.h \
$(INCLUDE)/cub3D.h
MLX42_DIR = MLX42
MLX42_LIB = $(MLX42_DIR)/build/libmlx42.a
MLX42_INC = -IMLX42/include
MLX_INC = -I$(INCLUDE) $(MLX42_INC)
MLX_FLAGS = -L$(MLX42_DIR)/build -lmlx42 -lglfw -ldl -lm -lGL -pthread
SRCS_DIR = srcs
PARSE_DIR = $(SRCS_DIR)/parsing
PARSE_FILES = $(PARSE_DIR)/get_map_from_map.c\
$(PARSE_DIR)/get_map_from_map_utils.c\
$(PARSE_DIR)/get_texture_from_map.c\
$(PARSE_DIR)/utils.c\
$(PARSE_DIR)/parse.c\
$(PARSE_DIR)/get_colors_from_map.c
RAY_ENGINE_DIR = $(SRCS_DIR)/engine_ray_casting
RAY_ENGINE_FILES = $(RAY_ENGINE_DIR)/DDA_utils.c \
$(RAY_ENGINE_DIR)/DDA_dist_utils.c \
$(RAY_ENGINE_DIR)/DDA.c \
$(RAY_ENGINE_DIR)/vetor.c \
$(RAY_ENGINE_DIR)/player_controls.c \
$(RAY_ENGINE_DIR)/player_control_utils.c \
$(RAY_ENGINE_DIR)/utils.c
ERR_FREE_DIR = $(SRCS_DIR)/errors_n_free
ERR_FREE_FILES = $(ERR_FREE_DIR)/error_handler_msg.c\
$(ERR_FREE_DIR)/free_all_data.c
RENDERING_DIR = $(SRCS_DIR)/rendering
RENDERING_FILES = $(RENDERING_DIR)/floor_ceiling.c\
$(RENDERING_DIR)/window.c\
$(RENDERING_DIR)/minimap.c\
$(RENDERING_DIR)/minimap_player.c\
$(RENDERING_DIR)/utils.c
SRCS_FILES = $(PARSE_FILES) $(ERR_FREE_FILES) $(RENDERING_FILES)\
$(RAY_ENGINE_FILES) $(SRCS_DIR)/main.c
OBJS_DIR = objs
OBJS = $(patsubst $(SRCS_DIR)/%.c,$(OBJS_DIR)/%.o,$(SRCS_FILES))
all: $(NAME)
$(OBJS_DIR)/%.o: $(SRCS_DIR)/%.c $(HEADERS) | $(MLX42_LIB)
@mkdir -p $(@D)
@$(CC) $(CFLAGS) $(MLX_INC) -c $< -o $@
@echo "$(GREEN)Compiling: $< into $@$(RESET)"
$(LIBFT):
@$(MAKE) --no-print-directory -C $(LIBFT_DIR)
$(MLX42_LIB):
@if [ ! -d "$(MLX42_DIR)" ]; then \
echo "Cloning MLX42..."; \
git clone https://github.com/codam-coding-college/MLX42.git $(MLX42_DIR); \
fi
@cmake -S $(MLX42_DIR) -B $(MLX42_DIR)/build
@cmake --build $(MLX42_DIR)/build
$(NAME): $(LIBFT) $(OBJS) Makefile $(MLX42_LIB)
@$(CC) $(CFLAGS) $(OBJS) $(LIBFT) $(MLX42_LIB) $(MLX_FLAGS) -o $(NAME)
@echo "\n$(GREEN)cub3D ✅$(RESET)\n"
delete_MLX:
@if [ -d $(MLX42_DIR) ]; then \
rm -rf $(MLX42_DIR); \
fi
clean:
@$(MAKE) --no-print-directory clean -C $(LIBFT_DIR)
@if [ -d $(OBJS_DIR) ]; then \
echo "$(YELLOW)Object files have been removed ✅$(RESET)"; \
fi
@rm -rf $(OBJS_DIR)
fclean: clean
@$(MAKE) --no-print-directory fclean -C $(LIBFT_DIR)
@rm -f $(NAME)
@echo "$(YELLOW)Executable file has been removed ✅$(RESET)"
re: fclean all
@echo "$(GREEN)Rebuild complete! All files cleaned and recompiled ✅$(RESET)\n"
.PHONY: all clean fclean re