-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
92 lines (73 loc) · 3.19 KB
/
Makefile
File metadata and controls
92 lines (73 loc) · 3.19 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: aherbin <aherbin@student.42berlin.de> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/05/30 10:55:12 by aherbin #+# #+# #
# Updated: 2024/08/28 17:30:13 by aherbin ### ########.fr #
# #
# **************************************************************************** #
# **************************************************************************** #
# variables #
# **************************************************************************** #
NAME := so_long
CC := cc
CCFLAGS := -Wall -Wextra -Werror
INCLUDES := -I ./include -I ./$(MLX42)/include -I ./$(LIBFT)/include
RM := rm -rf
CLR_RMV := \033[0m
RED := \033[1;31m
GREEN := \033[1;32m
YELLOW := \033[1;33m
BLUE := \033[0;34m
CYAN := \033[1;36m
# SO_LONG #
SRC := src/so_long.c src/utils.c src/map_tools.c src/flood_fill.c src/window.c src/movement.c src/score.c src/win_utils.c
BIN := bin
OBJS = ${SRC:src/%c=${BIN}/%o}
# DEPENDENCY #
LIBFT := ./lib/libft
LIBFTAR := $(LIBFT)/libft.a
LIBMLX := ./lib/MLX42
LIBMLXAR := $(LIBMLX)/build/libmlx42.a
LIBS := $(LIBFTAR) $(LIBMLXAR) -ldl -lglfw -pthread -lm
# **************************************************************************** #
# RULES #
# **************************************************************************** #
all: $(BIN) $(NAME)
submodules:
@if git submodule status | egrep -q '^[-+]' ; then \
echo "INFO: Need to reinitialize git submodules"; \
git submodule update --init; \
fi
${BIN}/%o: src/%c
@${CC} -c $< ${CFLAGS} ${IFLAGS} -o $@
@echo "$(BLUE)Compiling $(GREEN)$@ $(BLUE)..."
${BIN}:
@make submodules
@mkdir -p ${BIN}
$(NAME): $(LIBMLXAR) $(LIBFTAR) $(OBJS)
@echo "$(GREEN)Compilation ${CLR_RMV}of ${CYAN}$(NAME) ${CLR_RMV}..."
@$(CC) ${OBJS} $(CCFLAGS) $(INCLUDES) $(LIBS) -o $(NAME)
@echo "$(CYAN)$(NAME)$(BLUE) compiled $(GREEN)✔️$(CLR_RMV)"
$(LIBFTAR):
@echo "$(YELLOW)----- Libft -----$(CLR_RMV)"
@make -C $(LIBFT) --no-print-directory
@echo "$(YELLOW)-----------------\n$(CLR_RMV)"
$(LIBMLXAR):
@echo "$(YELLOW)----- MLX42 -----$(CLR_RMV)"
@cmake $(LIBMLX) -B $(LIBMLX)/build && make -C $(LIBMLX)/build -j4 --no-print-directory
@echo "$(YELLOW)-----------------\n$(CLR_RMV)"
clean:
@${RM} ${BIN}
@echo "$(CYAN)$(NAME) $(RED)OBJS $(BLUE)successfully deleted\n"
fclean: clean
@make fclean -C $(LIBFT) --no-print-directory
@echo ""
@$(RM) $(NAME)
@$(RM) $(LIBMLXAR)
@echo "$(CYAN)$(NAME) $(BLUE)successfully deleted"
re: fclean all
.PHONY: all clean fclean re submodules