-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
114 lines (90 loc) · 3.67 KB
/
Makefile
File metadata and controls
114 lines (90 loc) · 3.67 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
NAME = minirt
BONUS_NAME =
TEST = test
INCLUDES = includes/
SRCS_FOLDER = srcs/
OBJS_FOLDER = .objs/
SRCS_FILES = main.c error.c \
render/render.c render/fps.c render/image.c render/thread.c \
render/chunk.c render/move.c \
draw/draw.c draw/util.c draw/line.c draw/color_conversion.c \
draw/color_conversion2.c draw/color_operation.c draw/color_operation2.c \
events/events.c events/handlers.c events/handlers2.c \
parsing/parsing.c parsing/parse_line.c parsing/parse_objects.c \
parsing/parse_value.c parsing/parse_value2.c parsing/normalize.c \
parsing/parse_texture.c parsing/parse_texture2.c parsing/parse_move.c \
parsing/parse_value3.c \
struct/t_scene.c struct/print.c struct/t_object.c struct/t_texture.c \
struct/print2.c \
math/geometry_ope.c math/geometry_ope2.c math/cam_rotation.c \
math/plane_inter.c math/sphere_inter.c math/matrix2.c\
math/cylinder_inter.c math/cylinder_inter2.c math/get_rot_matrices.c \
math/cone_inter.c math/cone_inter2.c math/triangle_inter.c\
math/equation.c math/multiple.c math/matrix.c math/rotations.c \
raytracing/camera.c raytracing/rays.c raytracing/transform.c \
raytracing/light.c raytracing/light2.c raytracing/rays2.c \
texture/img_texture.c texture/color_get.c texture/color_get2.c \
texture/utils_texture.c \
mapping/local_base.c mapping/mapping.c
OBJS = $(addprefix $(OBJS_FOLDER),$(SRCS_FILES:.c=.o))
SRCS = $(addprefix $(SRCS_FOLDER),$(SRCS_FILES))
OBJS_TEST = $(addprefix $(OBJS_FOLDER),$(SRCS_TEST:.c=.o))
LIBFT = libft/libft.a
LIBMLX = libmlx/libmlx.a
HEADERS = $(INCLUDES)libft.h $(INCLUDES)mlx.h $(INCLUDES)mlx_int.h \
$(INCLUDES)$(NAME)/$(NAME).h $(INCLUDES)$(NAME)/draw.h \
$(INCLUDES)$(NAME)/objects.h $(INCLUDES)$(NAME)/raytracing.h \
$(INCLUDES)$(NAME)/types.h $(INCLUDES)$(NAME)/calculus.h
DEPS = $(LIBFT) $(LIBMLX) $(HEADERS)
CC = cc
STATIC_LINK = -Llibft/ -lft -Llibmlx/ -lmlx -lXext -lX11 -lm
CFLAGS = -Wall -Wextra -Werror -g3 -I$(INCLUDES)
CFLAGS_OPTI = -Wall -Wextra -Werror -O3 -I$(INCLUDES)
.PHONY = all clean fclean test re bonus
all: $(NAME)
opti: $(SRCS) $(DEPS)
@echo "\n-----COMPILING $(NAME)-------\n"
$(CC) $(CFLAGS_OPTI) $(SRCS) $(STATIC_LINK) -o $(NAME)
@echo "Executable has been successfully created."
$(NAME): $(DEPS) $(OBJS)
@echo "\n-----COMPILING $(NAME)-------\n"
$(CC) $(CFLAGS) $(OBJS) $(STATIC_LINK) -o $(NAME)
@echo "Executable has been successfully created."
$(TEST): $(DEPS) $(OBJS_TEST)
@echo "\n-----COMPILING $(TEST)-------\n"
$(CC) $(CFLAGS) $(OBJS_TEST) $(STATIC_LINK) -o $(TEST)
@echo "Executable has been successfully created."
bonus: $(BONUS_NAME)
$(OBJS_FOLDER)%.o: $(SRCS_FOLDER)%.c Makefile $(DEPS)
mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c -o $@ $<
$(INCLUDES)libft.h: libft/libft.h
@echo "------ UPDATING LIBFT HEADER -------\n"
cp libft/libft.h $(INCLUDES)libft.h
$(INCLUDES)mlx.h: libmlx/mlx.h
@echo "------ UPDATING MLX HEADER -------\n"
cp libmlx/mlx.h $(INCLUDES)mlx.h
$(INCLUDES)mlx_int.h: libmlx/mlx_int.h
@echo "------ UPDATING MLX HEADER -------\n"
cp libmlx/mlx_int.h $(INCLUDES)mlx_int.h
$(LIBFT): $(INCLUDES)libft.h
@echo "\n-------COMPILING LIBFT--------------\n"
make -C libft/
make clean -C libft/
@echo "\n\n"
$(LIBMLX): $(INCLUDES)mlx.h
@echo "\n-------COMPILING MINILIBX--------------\n"
make -C libmlx/
@echo "\n\n"
clean:
@echo "\n-------------CLEAN--------------\n"
make clean -C libft/
make clean -C libmlx/
rm -rf $(OBJS_FOLDER)
@echo "object files have been removed."
fclean: clean
@echo "\n-------------FORCE CLEAN--------------\n"
make fclean -C libft/
rm -rf $(NAME) $(BONUS_NAME) $(TEST)
@echo "$(NAME) and object files have been removed."
re: fclean all