-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
81 lines (59 loc) · 2.73 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
################################################################################
# #
# MAKEFILE #
# Project: fract-ol #
# Created: 19/11/2024 #
# Author: Noel Monzon (nmonzon) #
# #
################################################################################
################################################################################
############### BUILD SETUP ###############
################################################################################
NAME = fractol
CC = cc
FLAGS = -Wall -Wextra -Werror -flto -Ofast -march=native -MMD -MP $(addprefix -I, $(INCLUDES))
LDFLAGS = -flto
LIBFT = ./libft/libft.a
MLX = ./MLX42/build/libmlx42.a
ifeq ($(shell uname), Darwin)
MLX_FLAGS = -ldl -lglfw -L"/Users/$(USER)/.brew/opt/glfw/lib/" -pthread -lm
else ifeq ($(shell uname), Linux)
MLX_FLAGS = -L./MLX42/build -lglfw -ldl -pthread -lm
endif
################################################################################
############### DIRECTORIES ###############
################################################################################
INCLUDES = ./include ./libft ./MLX42/include/MLX42
SOURCES = ./src
OBJECTS = _obj
vpath %.h $(INCLUDES)
vpath %.c $(SOURCES)
################################################################################
############### SOURCE FILES ###############
################################################################################
SRCS = fractol_main.c fractol_render.c fractol_math.c fractol_error.c fractol_userinput.c \
fractol_ui.c fractol_color.c fractol_utils.c
OBJ = $(addprefix $(OBJECTS)/, $(SRCS:.c=.o))
################################################################################
############### COMPILATION RULES ###############
################################################################################
all: mlx_lib ft_lib $(NAME)
$(NAME): $(OBJ)
$(CC) $(FLAGS) $^ $(LIBFT) $(MLX) $(MLX_FLAGS) -o $@
$(OBJECTS)/%.o: %.c | $(OBJECTS)
@$(CC) $(FLAGS) -c $< -o $@ $(LDFLAGS)
$(OBJECTS):
@mkdir -p $@
mlx_lib:
cd MLX42 && cmake -B build && make -C build -j4
ft_lib:
$(MAKE) -C libft
clean:
rm -rf $(OBJECTS)
$(MAKE) -C libft clean
cd MLX42 && rm -rf build
fclean: clean
rm -f $(NAME)
re: fclean all
-include $(OBJ:.o=.d)
.PHONY: all clean fclean re