-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
101 lines (77 loc) · 2.86 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
NAME = miniRT
CC = cc
CFLAGS = -Wall -Wextra -Werror
RM = rm -f
LIBFT = libft
LIBFT_LIB = ./libft/libft.a
MLX = mlx
MLX_LIB = ./mlx/libmlx.a
HEADER_DIR = ./include/
detected_OS := $(shell uname)
ifeq ($(detected_OS), Linux)
MLX_LIB = -Lmlx_linux -lmlx_Linux -L/usr/lib -Imlx_linux -lXext -lX11 -lm -lz
else ifeq ($(detected_OS), Darwin)
MLX_LIB = -lm -Lmlx -lmlx -framework OpenGL -framework AppKit
endif
SRC_DIR = ./src/
SRC_LIST = main.c
MAIN_SRCS = $(addprefix $(SRC_DIR), $(SRC_LIST))
MAIN_OBJS = $(MAIN_SRCS:.c=.o)
PARSE_DIR = $(SRC_DIR)parse/
PARSE_LIST = get_next_line.c get_next_line_utils.c parse_file.c rt_info_list.c
PARSE_SRCS = $(addprefix $(PARSE_DIR), $(PARSE_LIST))
PARSE_OBJS = $(PARSE_SRCS:.c=.o)
VALID_DIR = $(SRC_DIR)parse/is_valid/
VALID_LIST = is_rt_file.c is_valid_elements_light.c \
is_valid_elements_object.c is_valid_elements_utils_base.c \
is_valid_elements_utils.c parse_elements.c
VALID_SRCS = $(addprefix $(VALID_DIR), $(VALID_LIST))
VALID_OBJS = $(VALID_SRCS:.c=.o)
SCENE_DIR = $(SRC_DIR)scene/
SCENE_LIST = canvas.c get_new_object_in_list.c object_create.c \
scene_init.c scene_utils.c scene.c
SCENE_SRCS = $(addprefix $(SCENE_DIR), $(SCENE_LIST))
SCENE_OBJS = $(SCENE_SRCS:.c=.o)
UTILS_DIR = $(SRC_DIR)utils/
UTILS_LIST = free_return.c ft_atod.c object_utils.c parse_elements.c \
split_count_utils.c vector_mount_utils.c vector_mult_divide_utils.c \
vector_plus_minus_utils.c vector_unit_utils.c vector_utils.c
UTILS_SRCS = $(addprefix $(UTILS_DIR), $(UTILS_LIST))
UTILS_OBJS = $(UTILS_SRCS:.c=.o)
TRACE_DIR = $(SRC_DIR)trace/
RAY_DIR = $(TRACE_DIR)ray/
RAY_LIST = ray.c phong_lighting.c
RAY_SRCS = $(addprefix $(RAY_DIR), $(RAY_LIST))
RAY_OBJS = $(RAY_SRCS:.c=.o)
HIT_DIR = $(TRACE_DIR)hit/
HIT_LIST = hit.c normal.c hit_sphere.c hit_plane.c hit_cylinder.c
HIT_SRCS = $(addprefix $(HIT_DIR), $(HIT_LIST))
HIT_OBJS = $(HIT_SRCS:.c=.o)
WINDOW_DIR = $(SRC_DIR)window/
WINDOW_LIST = draw_pixel.c handle_key.c
WINDOW_SRCS = $(addprefix $(WINDOW_DIR), $(WINDOW_LIST))
WINDOW_OBJS = $(WINDOW_SRCS:.c=.o)
PRINT_DIR = ${SRC_DIR}print/
PRINT_LIST = print_error.c
PRINT_SRCS = $(addprefix $(PRINT_DIR), $(PRINT_LIST))
PRINT_OBJS = ${PRINT_SRCS:.c=.o}
SET_COLOR_DIR = ${SRC_DIR}set_color/
SET_COLOR_LIST = set_basic_color.c set_color.c
SET_COLOR_SRCS = $(addprefix $(SET_COLOR_DIR), $(SET_COLOR_LIST))
SET_COLOR_OBJS = ${SET_COLOR_SRCS:.c=.o}
OBJS = $(MAIN_OBJS) $(PARSE_OBJS) $(VALID_OBJS) $(SCENE_OBJS) $(UTILS_OBJS) $(RAY_OBJS) $(HIT_OBJS) $(WINDOW_OBJS) $(PRINT_OBJS) $(SET_COLOR_OBJS)
all : $(NAME)
$(NAME): $(OBJS)
make bonus -C $(LIBFT)
make -C $(MLX)
$(CC) $(CFLAGS) -I $(HEADER_DIR) $(OBJS) $(LIBFT_LIB) $(MLX_LIB) -o $@
clean :
$(RM) $(OBJS)
make clean -C $(MLX)
make clean -C $(LIBFT)
fclean : clean
$(RM) $(NAME) $(LIBFT_LIB) $(MLX_LIB)
re: fclean all
%.o: %.c
$(CC) ${CFLAGS} -c $< -o $@
.PHONY : all clean fclean re