forked from The-Friendly-Ghost/Cub3d
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
102 lines (78 loc) · 3 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
# **************************************************************************** #
# #
# :::::::: #
# Makefile :+: :+: #
# +:+ #
# By: merel <merel@student.42.fr> +#+ #
# +#+ #
# Created: 2022/12/05 09:38:13 by cpost #+# #+# #
# Updated: 2023/01/31 13:27:31 by mevan-de ######## odam.nl #
# #
# **************************************************************************** #
#=====================================#
#========= General variables =========#
#=====================================#
SRC_PATH = src
OBJ_PATH = obj
INC_PATH = include lib/Libft/include lib/get_next_line/include lib/MLX42/include
LIBFT_PATH = lib/Libft/
GNL_PATH = lib/get_next_line/
MLX42_PATH = lib/MLX42/
NAME = cub3D
BOLD = \033[1m
GREEN = \033[32;1m
RED = \033[31;1m
YELLOW = \033[33;1m
RESET = \033[0m
#=====================================#
#========= Command arguments =========#
#=====================================#
CC = gcc
CFLAGS = -Wall -Wextra -Werror #-g -fsanitize=address
MLXFLAGS = -I include -lglfw3 -framework Cocoa -framework OpenGL -framework IOKit
#MLXFLAGS = -lglfw -L/opt/homebrew/Cellar/glfw/3.3.8/lib/#Not at codam
#=====================================#
#============ Input files ============#
#=====================================#
SRC = $(shell find $(SRC_PATH) -type f -name '*.c')
OBJ = $(addprefix $(OBJ_PATH)/,$(SRC:.c=.o))
INC = $(addprefix -I,$(INC_PATH))
LIB = $(LIBFT_PATH)libft.a $(GNL_PATH)getnextline.a
LIB += $(MLX42_PATH)libmlx42.a
#=====================================#
#=============== Rules ===============#
#=====================================#
all: $(NAME)
$(NAME): $(OBJ)
@make -C $(LIBFT_PATH)
@make -C $(GNL_PATH)
@make -C $(MLX42_PATH)
@$(CC) $(CFLAGS) $(LIB) $(MLXFLAGS) $(OBJ) $(INC) -o $(NAME) && printf "$(YELLOW)$(BOLD)\rBuild $(NAME)\r\e[35C[OK]\n$(RESET)"
$(OBJ_PATH)/%.o: %.c include/cub3d*
@mkdir -p $(@D)
@$(CC) $(CFLAGS) -o $@ -c $< $(INC) && printf "$(GREEN)$(BOLD)\rCompiling: $(notdir $<)\r\e[35C[OK]\n$(RESET)"
run: all
@./cub3D
cleanlib:
@make -C $(LIBFT_PATH) clean
@make -C $(GNL_PATH) clean
clean:
@rm -rf $(OBJ_PATH)
@echo "$(RED)Cleaning cub3D$(RESET)"
fclean: clean
@rm -f $(NAME)
@make -C $(LIBFT_PATH) fclean
@make -C $(GNL_PATH) fclean
@make -C $(MLX42_PATH) fclean
bonus: all
re: fclean all
norm:
norminette src lib/Libft lib/get_next_line include
play: all
./cub3D maps/basic.cub
./cub3D maps/color_walls.cub
./cub3D maps/large.cub
./cub3D maps/long_map.cub
./cub3D maps/small.cub
./cub3D maps/wide_map.cub
.PHONY: clean, fclean, re, all, play, norm