-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
122 lines (99 loc) · 3.64 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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: dshatilo <[email protected]> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/05/27 17:31:32 by ivalimak #+# #+# #
# Updated: 2024/08/02 12:33:07 by ivalimak ### ########.fr #
# #
# **************************************************************************** #
NAME := miniRT
BUILD := normal
SRCDIR := srcs
OBJDIR := objs
INCDIR := inc
LFTDIR := libft
MLXDIR := MLX42
INCLUDE := -I$(INCDIR) -I$(LFTDIR)/$(INCDIR) -I$(MLXDIR)/include/MLX42
CC := cc
cflags.common := -Wall -Wextra -Werror
cflags.debug := -g
cflags.asan := $(cflags.debug) -fsanitize=address
cflags.normal := -Ofast
cflags.extra :=
CFLAGS := $(cflags.common) $(cflags.$(BUILD)) $(cflags.extra) $(INCLUDE)
ifeq ($(shell uname),Linux)
LDFLAGS := -L$(LFTDIR) -L$(MLXDIR)/build -lft -lmlx42 -ldl -lglfw -pthread -lm
else
LDFLAGS := -L$(LFTDIR) -L$(MLXDIR)/build -L"/opt/homebrew/Cellar/glfw/3.3.9/lib/" -lft -lmlx42 -lglfw -framework Cocoa -framework OpenGL -framework IOKit
endif
PARSER_NAME := element.c \
error.c \
file.c \
object.c \
file_utils.c \
parse_utils.c
PARSER_PATH := parser
PARSER := $(addprefix $(PARSER_PATH)/, $(PARSER_NAME))
LIN_ALG_NAME := vec3_operations.c \
vec3_operations2.c
LIN_ALG_PATH := lin_alg
LIN_ALG := $(addprefix $(LIN_ALG_PATH)/, $(LIN_ALG_NAME))
DRAWER_NAME := draw_scene.c \
calculate_img.c \
init_transform.c \
get_ray_direction.c \
hit_objects.c \
hit_spheres.c \
hit_planes.c \
hit_conics.c \
hit_cylinders.c \
hit_cones.c \
get_color.c \
color_alg.c \
get_texture_color.c \
add_lights.c
DRAWER_PATH := drawer
DRAWER := $(addprefix $(DRAWER_PATH)/, $(DRAWER_NAME))
SRCS := $(addprefix $(SRCDIR)/, main.c) \
$(addprefix $(SRCDIR)/, utils.c) \
$(addprefix $(SRCDIR)/, $(LIN_ALG)) \
$(addprefix $(SRCDIR)/, $(DRAWER)) \
$(addprefix $(SRCDIR)/, $(PARSER))
OBJS := $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(SRCS))
LFT := $(LFTDIR)/libft.a
MLX42 := $(MLXDIR)/build/libmlx42.a
all: $(NAME)
$(NAME): $(MLX42) $(LFT) $(OBJDIR) $(OBJS)
@printf "\e[32;1mMINIRT >\e[m Compiling %s\n" $@
@cc $(CFLAGS) $(OBJS) $(LDFLAGS) -o $@
@printf "\e[32;1mMINIRT >\e[m \e[1mDone!\e[m\n"
$(MLX42):
@git submodule init
@git submodule update MLX42
@cmake $(MLXDIR) -B $(MLXDIR)/build && make -j4 --no-print-directory -C $(MLXDIR)/build
$(LFT):
@git submodule init
@git submodule update libft
@make --no-print-directory -C $(LFTDIR) BUILD=$(BUILD) cflags.extra=$(cflags.extra)
$(OBJDIR):
@printf "\e[32;1mMINIRT >\e[m Creating objdir\n"
@mkdir -p $(OBJDIR)/$(PARSER_PATH)
@mkdir -p $(OBJDIR)/$(LIN_ALG_PATH)
@mkdir -p $(OBJDIR)/$(DRAWER_PATH)
$(OBJDIR)/%.o: $(SRCDIR)/%.c
@printf "\e[32;1mMINIRT >\e[m Compiling %s\n" $@
@$(CC) $(CFLAGS) -c $< -o $@
clean:
@make --no-print-directory -C $(LFTDIR) clean
@rm -rf $(MLXDIR)/build
@rm -f $(OBJS)
fclean: clean
@make --no-print-directory -C $(LFTDIR) fclean
@rm -rf $(OBJDIR)
@rm -f $(NAME)
re: fclean all
.PHONY: all clean fclean re
# cmake ./lib/MLX42 -B ./lib/MLX42/build && make -C ./lib/MLX42/build -j4