-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
121 lines (100 loc) · 2.76 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
#########################################################
### VARIABLES
#########################################################
NAME = cub3D
CC = cc
HEADERS = ./headers
CFLAGS = -Wall -Wextra -Werror -g3 -I ${HEADERS}
#########################################################
### LIBS
#########################################################
LIBFT = libft
MLX = minilibx-linux
SRCDIR = srcs
OBJDIR = obj
ifneq ($(LIBFT),false)
LIB += -I$(LIBFT) -L$(LIBFT) -lft
endif
ifneq ($(MLX),false)
LIB += -I$(MLX) -L$(MLX) -lmlx_Linux -lbsd -lXext -lX11
endif
GREEN = \e[92;118m
YELLOW = \e[93;226m
BLUE = \e[94;226m
RESET = \e[0m
#########################################################
### SOURCES
#########################################################
SRCS = data_operations.c\
events.c\
exit.c\
main.c\
math_utils.c\
movements.c\
minimap.c\
pixel.c\
rayCast_angles.c\
rayCast_draw_calculate.c\
rayCast_draw.c\
set_imgs.c\
utils.c\
win_utils.c\
scene_parser/map_closing.c\
scene_parser/map_dimensions.c\
scene_parser/parse_error_handler.c\
scene_parser/parse_scene.c\
scene_parser/parsing_utils.c\
scene_parser/populate_map.c\
scene_parser/scene_loader.c\
scene_parser/set_text_and_col.c
SRC = $(addprefix $(SRCDIR)/, $(SRCS))
OBJS = $(SRCS:.c=.o)
OBJ = $(OBJDIR)/main.o $(addprefix $(OBJDIR)/, $(OBJS))
#########################################################
### REGLES
#########################################################
.PHONY: all clean fclean re fclean_lib fclean_all bonus
all: ${NAME}
$(NAME): $(OBJ)
ifneq ($(LIBFT),false)
@echo "$(YELLOW)Making Libft$(RESET)"
@${MAKE} -C ${LIBFT} -s
@echo "$(BLUE)Libft ready$(RESET)"
endif
ifneq ($(MLX),false)
@echo "$(YELLOW)Making MiniLibX$(RESET)"
@${MAKE} -C ${MLX} -s
@echo "$(BLUE)MiniLibX ready$(RESET)"
endif
@echo "$(YELLOW)Compiling$(RESET)"
@$(CC) $(CFLAGS) -o $@ $^ $(LIB) -lm
@echo "$(GREEN)Ready to use $(_COLOR_BOLD)$@ !$(RESET)"
# Rule to build object files
./$(OBJDIR)/%.o: ./$(SRCDIR)/%.c
@mkdir -p $(@D)
@$(CC) $(CFLAGS) -c $< -o $@ $(INCLUDES)
$(LIBFT) :
@echo "$(YELLOW)Making $(LIBFT)$(RESET)"
@make all -sC $(LIBFT_DIR) -s
@echo "$(BLUE)Ready to use$(RESET)"
fclean_lib:
ifneq ($(LIBFT),false)
@echo "$(YELLOW)Cleaning Libft$(RESET)"
@cd $(LIBFT) && make fclean -s
@echo "$(BLUE)Libft cleaned$(RESET)"
endif
ifneq ($(MLX),false)
@echo "$(YELLOW)Cleanng MiniLibX$(RESET)"
@cd $(MLX) && make clean -s
@echo "$(BLUE)MiniLibX cleaned$(RESET)"
endif
clean:
@echo "$(YELLOW)Cleaning objects$(RESET)"
@rm -rf $(OBJDIR)
@echo "$(BLUE)Objects cleaned$(RESET)"
fclean: clean fclean_lib
@echo "$(YELLOW)removing $(NAME)$(RESET)"
@rm -f ${NAME}
@echo "$(BLUE)$(NAME) removed$(RESET)"
fclean_all: fclean fclean_lib
re: fclean all