-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
148 lines (117 loc) · 3.67 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
# Makefile
NAME = cub3D
# Paths
LIB_DIR = ./lib
LIBFT_DIR = $(LIB_DIR)/libft
LIBFT_A = $(LIBFT_DIR)/libft.a
MLX_DIR = $(LIB_DIR)/mlx/mlx
# MLX_DIR = $(LIB_DIR)/mlx/minilibx-linux
MLX_DYLIB = libmlx.dylib
# MLX_A = $(MLX_DIR)/libmlx_Linux.a
LIB_A = $(LIBFT_A) $(MLX_DYLIB)
# LIB_A = $(LIBFT_A) $(MLX_A)
HEAD_DIR = ./include
# Sources
FILES = \
main.c\
exit.c\
error.c\
PARSING_FILES = \
init.c\
init_map.c\
parsing.c\
parsing_arguments.c\
parsing_map.c\
checking_map.c\
PARSING = $(addprefix parsing/, $(PARSING_FILES))
EXECUTION_FILES = \
execution.c\
raycasting.c\
raycasting_calc.c\
draw_3D.c\
draw_2D.c\
texture.c\
events_loop.c\
events_events.c\
events_reset.c\
events_mouse.c\
execution_bonus.c\
files.c\
files_gif.c\
floor.c\
sprite.c\
levels1.c\
render_sprite.c\
render_sprite_aus.c\
EXECUTION = $(addprefix execution/, $(EXECUTION_FILES))
UTILS_FILES = \
utils.c\
utils_angles.c\
utils_bres.c\
utils_colors.c\
utils_colors_trgb.c\
utils_point.c\
utils_sprite.c\
UTILS = $(addprefix utils/, $(UTILS_FILES))
SRCS_DIR = ./srcs
SRCS = \
$(addprefix $(SRCS_DIR)/,$(FILES))\
$(addprefix $(SRCS_DIR)/,$(PARSING))\
$(addprefix $(SRCS_DIR)/,$(EXECUTION))\
$(addprefix $(SRCS_DIR)/,$(UTILS))\
# Objects
OBJS_DIR = ./objs
OBJS = $(patsubst $(SRCS_DIR)%,$(OBJS_DIR)%,$(SRCS:.c=.o))
# Flags and libraries
INCLUDES = -I $(LIBFT_DIR) -I $(MLX_DIR) -I $(HEAD_DIR)
CFLAGS = -Wall -Wextra -Werror $(INCLUDES) -g #-fsanitize=address
MLX_FLAGS = $(MLX_DYLIB) -g -L $(MLX_DIR) -framework Metal -framework AppKit -F/Library/Frameworks
# MLX_FLAGS = $(MLX_A) -L $(MLX_DIR) -I $(MLX_DIR) -lXext -lX11 -lm -lz
# Colors
GREEN = \033[01;32m
RESET = \033[00m
# Rules
all: $(NAME)
$(NAME): libraries $(LIB_A) $(OBJS)
@gcc -g $(CFLAGS) $(OBJS) $(MLX_FLAGS) $(LIB_A) -o $(NAME)
@echo "$(GREEN)$(NAME) successfully compiled $(RESET)"
sanitize: libraries $(LIB_A) $(OBJS)
@gcc -g -fsanitize=address $(CFLAGS) $(OBJS) $(MLX_FLAGS) $(LIB_A) -o $(NAME)
@echo "$(GREEN)$(NAME) successfully compiled $(RESET)"
$(OBJS_DIR)/%.o: $(SRCS_DIR)/%.c
@mkdir -p $(@D)
@gcc -c -g $(CFLAGS) $< -o $@
$(OBJS): | $(OBJS_DIR)
$(OBJS_DIR):
@mkdir $(OBJS_DIR)
libraries:
@printf "Making libft..." && make -C $(LIBFT_DIR) && echo "$(GREEN)Libft successfully compiled $(RESET)"
@printf "Making mlx..." && make -C $(MLX_DIR) && echo "$(GREEN)Mlx successfully compiled $(RESET)"
@mv $(MLX_DIR)/$(MLX_DYLIB) .
# this last line to be commented if on linux
clean:
@make clean -C $(LIBFT_DIR)
@make clean -C $(MLX_DIR)
@rm -f $(OBJS)
@echo "$(GREEN)Successfully cleaned objects - $(NAME)$(RESET)"
fclean: clean
@make fclean -C $(LIBFT_DIR)
@make clean -C $(MLX_DIR)
@rm -f $(OBJS)
@rm -f $(NAME)
@rm -f $(MLX_DYLIB)
@rm -rf $(OBJS_DIR)
@echo "$(GREEN)Successfully forced cleaned - $(NAME)$(RESET)"
bis:
@rm -f $(OBJS)
@rm -f $(NAME)
@rm -rf $(OBJS_DIR)
@echo "$(GREEN)Successfully cleaned binary and objects - $(NAME)$(RESET)"
@make
run: bis
@say -v Amelie “Le projet Cube 3D a bien été compilé. Vous vous apprêtez à entrer dans le monde du conte de la princesse Ka gou ya”
@./$(NAME) '/Users/avilla-m/Desktop/42_workspace/_Cub3D/maps/test.cub'
re: fclean all
norme:
norminette ./include ./srcs ./lib/libft | awk '! /OK!/'
.PHONY: all clean fclean re libraries bis run bonus norme