-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
114 lines (92 loc) · 2.96 KB
/
Makefile
File metadata and controls
114 lines (92 loc) · 2.96 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: JFikents <Jfikents@student.42Heilbronn.de> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/05/14 23:23:18 by apeposhi #+# #+# #
# Updated: 2024/08/20 21:03:44 by JFikents ### ########.fr #
# #
# **************************************************************************** #
AUTHORS := apeposhi && JFikents
NAME := cub3d
# Metadata
AUTHOR := apeposhi\
JFikents
NAME := cub3d
ifeq ($(DEBUG), 1)
re: fclean all
endif
all: $(NAME)
# Sources & Objects
_DEPENDENCIES := cub3d.h exec.h
DEPENDENCIES := $(addprefix include/, $(_DEPENDENCIES))
_EXEC_SRC := cast_rays.c\
draw_fov.c\
draw_utils.c\
exec.c\
horizontal_rays.c\
keyhook.c\
math.c\
minimap_player_floor_and_ceiling.c\
movement.c\
vertical_rays.c
EXEC_SRC := $(addprefix execution/, $(_EXEC_SRC))
_PARSER_SRC := parsing.c\
checker_utils.c\
f_c_handler.c\
map_handler.c\
map_utils.c\
texture_handler.c\
raw_data_handler.c\
utils.c\
validate_map_layout.c
PARSER_SRC := $(addprefix parser/, $(_PARSER_SRC))
_SRC := main.c\
$(PARSER_SRC)\
$(CLEANUP_SRC)\
$(EXEC_SRC)
SRC := $(addprefix src/, $(_SRC))
OBJS := $(SRC:src/%.c=bin/%.o)
# Compiler and Flags
CC := cc
CFLAGS := -Wall -Wextra -Werror -Wunreachable-code
ifeq ($(DEBUG), 1)
CFLAGS += -g3
endif
_INCLUDES := include/ libft/includes/ lib/MLX42/include/MLX42/
INCLUDES := $(addprefix -I, $(_INCLUDES))
# Libraries
_LIB_PATH := lib/MLX42/build/ lib/libft/ libft/
LIB_PATH := $(addprefix -L, $(_LIB_PATH))
LIBMLX42 := lib/MLX42/build/libmlx42.a
LIBFT := libft/libft_local.a lib/libft/libft.a
_LIBS := mlx42 ft glfw m ft_local
LIBS := $(addprefix -l, $(_LIBS))
LIB_FLAGS := $(LIB_PATH) $(LIBS)
$(LIBMLX42):
@git submodule update --init --recursive lib/MLX42
@cmake -B lib/MLX42/build -S lib/MLX42/
@cmake --build lib/MLX42/build -j4
$(LIBFT):
@git submodule update --init --recursive lib/libft
@make -C libft
@make -C lib/libft
# Targets
$(NAME): $(LIBFT) $(LIBMLX42) $(OBJS)
$(CC) -o $@ $(OBJS) $(CFLAGS) $(INCLUDES) $(LIB_FLAGS)
clean:
rm -rf $(OBJS)
$(MAKE) -C libft clean
fclean: clean
rm -rf $(NAME)
$(MAKE) -C libft fclean
re: fclean all
bin/:
@mkdir -p bin/parser bin/execution
# Suffix Rules
bin/%.o: src/%.c $(DEPENDENCIES) | bin/
$(CC) $(CFLAGS) -c -o $@ $< $(INCLUDES)
# Phony Targets
.PHONY: all clean fclean re