-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
52 lines (38 loc) · 1.02 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
OS = $(shell uname)
NAME = fdf
NAME_B = fdf_bonus
MANDATORY = main.c initialise.c segment.c
BONUS = main_bonus.c initialise_bonus.c segment_bonus.c
BOTH = get_next_line.c ft_split.c functions.c
CC = gcc
CFLAGS = -O3 -g -fsanitize=address
ifeq ($(OS), Linux)
MLXFLAGS = -lmlx -lbsd -lXext -lX11
LIBRARY = mlx_linux/libmlx.a
endif
ifeq ($(OS), Darwin)
MLXFLAGS = -framework OpenGl -framework Appkit -Imlx -Iincludes
LIBRARY = mlx_mac/libmlx.a
endif
OBJS = $(MANDATORY:.c=.o)
OBJS_B = $(BOTH:.c=.o)
OBJS_BN = $(BONUS:.c=.o)
all: $(NAME)
bonus: $(NAME_B)
check_OS:
ifndef MLXFLAGS
@echo "\033[1;31m INCOMPATIBLE OS \033[0;37m"
@exit 1
endif
$(NAME): $(OBJS) $(OBJS_B) check_OS
@$(CC) $(OBJS) $(OBJS_B) $(LIBRARY) -o $@ $(CFLAGS) $(MLXFLAGS) -lm
$(NAME_B): $(OBJS_BN) $(OBJS_B) check_OS
@$(CC) $(OBJS_BN) $(OBJS_B) $(LIBRARY) -o $@ $(CFLAGS) $(MLXFLAGS) -lm
%.o: %.c
@$(CC) -c $< $(CFLAGS)
clean:
@rm -rf $(OBJS) $(OBJS_B) $(OBJS_BN)
fclean: clean
@rm -rf $(NAME) $(NAME_B)
re: fclean all
.PHONY: all clean fclean re