-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
119 lines (94 loc) · 3.4 KB
/
Makefile
File metadata and controls
119 lines (94 loc) · 3.4 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
115
116
117
118
119
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: lnicosia <lnicosia@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2018/12/06 15:56:21 by lnicosia #+# #+# #
# Updated: 2023/02/15 19:03:04 by lumenthi ### ########.fr #
# #
# **************************************************************************** #
NAME = fractol
MAKEFILE = Makefile
SRC_DIR = src
OBJ_DIR = obj
INCLUDES_DIR = includes
BIN_DIR = .
LIBFT_DIR = libft
LIBMFT_DIR = libmft
LIBFT = $(LIBFT_DIR)/libft.a
LIBMFT = $(LIBMFT_DIR)/libmft.a
MLX_DIR = minilibx-linux
MLX = $(MLX_DIR)/libmlx.a
SRC_RAW = main.c key_press.c close_window.c julia.c mandelbrot.c init.c ship.c \
export.c buddhabrot.c color.c burning_julia.c newton.c \
buddha2.c color_newton.c barnsley.c koch.c \
plot_line.c coord_utils.c print_color_data.c \
tricorn.c plot_line_aa.c math.c householder.c \
householder_fail.c householder_fail2.c swap_color_base.c \
swap_color_mode.c colorize_buddha.c color_outside.c \
put_fractal_to_window.c newton_utils.c print_outside_data.c \
key_release.c mouse.c
HEADERS = fractol.h mlx_keycode.h hook.h color_newton.h colorize_buddha.h \
print_color_data.h
SRC = $(addprefix $(SRC_DIR)/, $(SRC_RAW))
OBJ = $(addprefix $(OBJ_DIR)/, $(SRC_RAW:.c=.o))
INCLUDES = $(addprefix $(INCLUDES_DIR)/, $(HEADERS))
CFLAGS = -Wall -Wextra -Werror -I $(INCLUDES_DIR) \
-I $(LIBFT_DIR)/$(INCLUDES_DIR) \
-I $(LIBMFT_DIR)/$(INCLUDES_DIR) \
-I $(MLX_DIR) \
-flto -Ofast \
#-g3 -fsanitize=address
DEBUG ?= 0
#ifeq ($(DEBUG), 1)
# CFLAGS += -fsanitize=address
#endif
#MLX = -L /usr/local/lib -lmlx -framework OpenGL -framework Appkit
MLX_FLAGS = -lX11 -lXext -lm -lpthread
#
# Color declarations
#
RED := "\e[0;31m"
GREEN := "\e[0;32m"
YELLOW := "\e[0;33m"
BLUE := "\e[0;34m"
MAGENTA := "\e[0;35m"
CYAN := "\e[0;36m"
RESET :="\e[0m"
all:
@make -C $(LIBFT_DIR)
@make -C $(LIBMFT_DIR)
@make $(BIN_DIR)/$(NAME)
$(OBJ_DIR):
@mkdir -p $(OBJ_DIR)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(INCLUDES) $(SUBMODULES_INIT)
@printf $(YELLOW)"Compiling $<\n"$(RESET)
gcc -c $< -o $@ $(CFLAGS)
$(BIN_DIR)/$(NAME): $(OBJ_DIR) $(OBJ) $(LIBFT) $(LIBMFT) $(MLX)
@printf ${CYAN}"[INFO] Linking $(BIN_DIR)/$(NAME)...\n"${RESET}
gcc $(CFLAGS) $(OBJ) $(LIBFT) $(LIBMFT) $(MLX) $(MLX_FLAGS) -o $(NAME)
@printf ${GREEN}"[INFO] Compiled $(BIN_DIR)/$(NAME) with success!\n"${RESET}
$(SUBMODULES_INIT):
git submodule update --init
$(MLX): $(MLX_DIR)/mlx.h
@make -C $(MLX_DIR)
$(LIBFT):
@make -C $(LIBFT_DIR)
$(LIBMFT):
@make -C $(LIBMFT_DIR)
clean:
@make clean -C libft
@rm -f $(OBJ)
@rm -Rf $(OBJ_DIR)
@printf ${CYAN}"[INFO] Removed objs"${RESET}
fclean:
@make fclean -C libft
@rm -f $(OBJ)
@rm -Rf $(OBJ_DIR)
@printf ${CYAN}"[INFO] Removed objs\n"${RESET}
@rm -Rf $(NAME)
@printf ${CYAN}"[INFO] Removed $(BIN_DIR)/$(NAME)\n"${RESET}
re: fclean all
.PHONY: fclean all clean libft