-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
127 lines (96 loc) · 2.83 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
SRC = main.c \
get_next_line.c get_next_line_u.c \
parse_map.c \
exit.c \
utils_str.c utils_free.c utils_str2.c \
check_cub.c check_cub2.c check_cub3.c \
check_handv.c \
count_island.c count_island_utils.c \
ray_casting.c ray_casting_utils.c \
draw.c \
open_texture.c \
texturing.c \
init_player.c \
utils_mlx.c \
controls.c controls_wasd.c \
ft_split.c \
ft_convert_base.c ft_convert_base2.c \
SRC_BONUS = main.c \
get_next_line.c get_next_line_u.c \
parse_map.c \
exit.c \
utils_str.c utils_free.c utils_str2.c \
check_cub.c check_cub2.c check_cub3.c \
check_handv.c \
count_island.c count_island_utils.c \
ray_casting.c ray_casting_utils.c \
draw.c \
open_texture.c \
texturing.c \
init_player.c \
utils_mlx.c \
controls.c controls_wasd.c \
ft_split.c \
ft_convert_base.c ft_convert_base2.c \
mouse.c \
mini_map.c \
background.c \
NAME = cub3D
NAME_BONUS = cub3D_bo
UNAME := $(shell uname)
CC = gcc
ifeq ($(UNAME), Darwin)
MLX_DIR = mlx_OG
MLX = libmlx.a
FLAGS2 = -lmlx -framework OpenGL -framework Appkit
else
MLX_DIR = mlx
MLX = libmlx.a
FLAGS2 = -lmlx -lm -lbsd -lX11 -lXext
endif
MAND_MLX_DIR = $(addprefix cub3d_mand/, $(MLX_DIR))
BONUS_MLX_DIR = $(addprefix cub3d_bonus/, $(MLX_DIR))
MAND_MLX = $(addprefix cub3d_mand/, $(MLX))
BONUS_MLX = $(addprefix cub3d_bonus/, $(MLX))
CFLAGS = -Wall -Wextra -Werror #-g -fsanitize=address
OBJ_DIR = cub3d_mand/obj
SRC_DIR = cub3d_mand/src
INC_DIR = cub3d_mand/inc
OBJ_DIR_BONUS = cub3d_bonus/obj
SRC_DIR_BONUS = cub3d_bonus/src
INC_DIR_BONUS = cub3d_bonus/inc
OBJ_BONUS = $(addprefix $(OBJ_DIR_BONUS)/,$(SRC_BONUS:.c=.o))
OBJ = $(addprefix $(OBJ_DIR)/,$(SRC:.c=.o))
DPD_BONUS = $(addprefix $(OBJ_DIR_BONUS)/,$(SRC_BONUS:.c=.d))
DPD = $(addprefix $(OBJ_DIR)/,$(SRC:.c=.d))
.c.o:
${CC} ${CFLAGS} -c$< -o ${<:.c=.o}
all: $(NAME)
$(NAME): $(OBJ)
${CC} $(CFLAGS) -o $(NAME) $(OBJ) -L $(MAND_MLX_DIR) $(FLAGS2)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | .gitignore
make -C $(MAND_MLX_DIR)
@mkdir -p $(OBJ_DIR)
${CC} $(CFLAGS) -I $(INC_DIR) -I $(MAND_MLX_DIR) -c $< -o $@
bonus: $(NAME_BONUS)
$(NAME_BONUS): $(OBJ_BONUS)
${CC} $(CFLAGS) -o $(NAME_BONUS) $(OBJ_BONUS) -L $(BONUS_MLX_DIR) $(FLAGS2)
$(OBJ_DIR_BONUS)/%.o: $(SRC_DIR_BONUS)/%.c | .gitignore
make -C $(BONUS_MLX_DIR)
@mkdir -p $(OBJ_DIR_BONUS)
${CC} $(CFLAGS) -I $(INC_DIR_BONUS) -I $(BONUS_MLX_DIR) -c $< -o $@
.gitignore:
@echo $(NAME) > .gitignore
clean:
@rm -rf $(OBJ_DIR)
fclean: clean
@rm -rf $(NAME)
cleanb:
@rm -rf $(OBJ_DIR_BONUS)
fcleanb: cleanb
@rm -rf $(NAME_BONUS)
ffclean: fclean fcleanb
re: fclean all
reb: fcleanb bonus
.PHONY: all, clean, fclean, re, bonus
-include $(DPD)