-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
73 lines (56 loc) · 1.82 KB
/
Makefile
File metadata and controls
73 lines (56 loc) · 1.82 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
NAME := miniRT
CC := cc
INC_DIR := inc/
SRC_DIR := src/
SRC := camera.c catadioptric_utils.c catadioptric.c cylinder_utils.c cylinder.c \
dcolor.c display.c ft_mlx.c intersections.c libft2.c libft3.c main.c material.c \
material_init.c object.c parse_objects_utils.c parse_objects.c parse_scene.c \
parser_utils.c parser.c plane.c renderer.c shader.c skybox.c sphere.c texture_mapping.c \
texture_register.c texture.c utils.c vector_utils.c vector.c
OBJ_DIR := obj/
OBJ := $(addprefix $(OBJ_DIR), $(SRC:.c=.o))
LIBFT_DIR := libft/
LIBFT := $(LIBFT_DIR)libft.a
MLX_DIR := mlx/
MLX := $(MLX_DIR)libmlx.a
STB_DIR := stb/
STB_HEADER := $(STB_DIR)stb_image.h
DFLAGS := -g -O3 -MMD
CFLAGS := -Wall -Wextra -Werror $(DFLAGS)
IFLAGS := -I$(INC_DIR) -I$(LIBFT_DIR)$(INC_DIR) -I$(MLX_DIR) -I$(STB_DIR)
MLX_URL := https://github.com/42Paris/minilibx-linux.git
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Darwin)
LD_FLAGS := $(MLX_DIR)libmlx.a -L$(MLX_DIR) -lmlx -L/usr/X11R6/lib -lXext -lX11 -lm -lz
else ifeq ($(UNAME_S), Linux)
LD_FLAGS := -L$(MLX_DIR) -lmlx -lX11 -lXext -lm
endif
LFLAGS := -L$(LIBFT_DIR) -lft $(LD_FLAGS)
all: $(MLX) $(OBJ_DIR) $(NAME)
-include $(OBJ_DIR)/*.d
$(OBJ_DIR):
mkdir -p $@
$(NAME): $(OBJ_DIR) $(LIBFT) $(OBJ)
$(CC) $(CFLAGS) $(IFLAGS) $(OBJ) -o $@ $(LFLAGS)
$(MLX):
@if [ -d "$(MLX_DIR)" ]; then \
echo "Using existing MiniLibX directory."; \
else \
echo "Cloning MiniLibX..."; \
git clone $(MLX_URL) $(MLX_DIR); \
fi
@$(MAKE) -C $(MLX_DIR)
$(LIBFT):
$(MAKE) bonus -C $(LIBFT_DIR)
$(OBJ_DIR)%.o: $(SRC_DIR)%.c
$(CC) $(CFLAGS) $(IFLAGS) -c $< -o $@
clean:
$(MAKE) $@ -C $(LIBFT_DIR)
rm -rf $(OBJ_DIR)
fclean: clean
$(MAKE) $@ -C $(LIBFT_DIR)
rm -f $(NAME)
re: fclean all
memory: fclean
$(MAKE) CFLAGS="$(CFLAGS) -g -fsanitize=address"
.PHONY: all clean fclean re