-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
108 lines (76 loc) · 2.13 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
##############################################
###LIBS ######
##############################################
LIBFTDIR = libft
LIBFTINC = -I$(LIBFTDIR)/includes/
LIBFTLD = -L$(LIBFTDIR) -lft
LIBFT = $(LIBFTDIR)/libft.a
UNAME = $(shell uname)
ifeq ($(UNAME), Darwin)
MLXDIR = libmlx_macos
MLXLD = -lmlx -L$(MLXDIR) -framework OpenGL -framework AppKit
else
MLXDIR = libmlx
MLXLD = -lmlx -L$(MLXDIR) -lXext -lX11 -lm -lz
endif
MLX = $(MLXDIR)/libmlx.a
MLXINC = -I$(MLXDIR)
##############################################
###HEADERS ######
##############################################
HDRDIR = includes/
HDRINC = -I$(HDRDIR)
##############################################
###SRCS ######
##############################################
SRCDIR = srcs/
SRC_M = \
minirt/minirt \
SRCS = $(addsuffix .c, $(addprefix $(SRCDIR), $(SRC_M)))
##############################################
###OBJS ######
##############################################
OBJDIR = objs/
OBJS = $(subst $(SRCDIR), $(OBJDIR), $(subst .c,.o,$(SRCS)))
OBJDIRS = $(sort $(dir $(OBJS)))
##############################################
###FLAGS ######
##############################################
NAME = miniRT
CC = cc
#FSANITIZE = -fsanitize=address -g
CFLAGS = -Wall -Wextra -Werror$(if $(FSANITIZE), $(FSANITIZE))
ifeq ($(UNAME), Darwin)
CFLAGS += -DDARWIN
endif
IFLAGS = $(HDRINC) $(LIBFTINC) $(MLXINC)
LFLAGS = $(LIBFTLD) $(MLXLD)
RM = rm -rf
MAKE = make
MAKE_C = $(MAKE) -C
UP = \033[1A
FLUSH = \033[2K
##############################################
###RULES ######
##############################################
all: $(NAME)
bonus: all
$(NAME): $(LIBFT) $(MLX) $(OBJDIRS) $(OBJS)
$(CC) $(CFLAGS) $(IFLAGS) -o $@ $(OBJS) $(LFLAGS)
$(LIBFT):
$(MAKE_C) $(LIBFTDIR)
$(MLX):
$(MAKE_C) $(MLXDIR)
$(OBJDIRS):
mkdir -p $@
$(OBJDIR)%.o: $(SRCDIR)%.c
$(CC) $(CFLAGS) $(IFLAGS) -c $< -o $@
clean:
$(RM) $(OBJDIR)
$(MAKE_C) $(LIBFTDIR) $@
$(MAKE_C) $(MLXDIR) $@
fclean: clean
$(RM) $(NAME)
$(MAKE_C) $(LIBFTDIR) $@
re: fclean all
.PHONY: all bonus clean fclean re