-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
73 lines (56 loc) · 1.82 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
NAME = cub.a
CC = clang
SRC_DIR = $(shell find srcs -type d)
INC_DIR = $(shell find includes -type d)
OBJ_DIR = objs
vpath %.c $(foreach dir, $(SRC_DIR), $(dir):)
# List de toute les library a linker au projet (le nom - le lib et - le .a)
LIB = libmlx.a
#SRC = $(foreach dir, $(SRC_DIR), $(foreach file, $(wildcard $(dir)/*.c), $(notdir $(file))))
SRC = $(foreach dir, $(SRC_DIR), $(foreach file, $(wildcard $(dir)/*.c), $(notdir $(file))))
OBJ = $(addprefix $(OBJ_DIR)/, $(SRC:%.c=%.o))
#Compilation flag
CFLAGS = -Wall -Wextra -Werror -g3 -O0
#Include flag
IFLAGS = $(foreach dir, $(INC_DIR), -I$(dir))
#Library flagF
LFLAGS = $(foreach lib_dir, $(LIB_DIR), -L $(lib_dir)) $(foreach lib, $(LIB), -l $(lib))
# Colors
_GREY=$'\x1b[30m
_RED=$'\x1b[31m
_GREEN=$'\x1b[32m
_YELLOW=$'\x1b[33m
_BLUE=$'\x1b[34m
_PURPLE=$'\x1b[35m
_CYAN=$'\x1b[36m
_WHITE=$'\x1b[37m
all:
make $(NAME)
show:
@echo "SRC :\n$(SRC)"
@echo "OBJ :\n$(OBJ)"
@echo "CFLAGS :\n$(CFLAGS)"
@echo "IFLAGS :\n$(IFLAGS)"
@echo "LFLAGS :\n$(LFLAGS)"
$(OBJ_DIR)/%.o : %.c
@echo "Compiling $(_YELLOW)$@$(_WHITE) ... \c"
@mkdir -p $(OBJ_DIR)
@$(CC) $(CFLAGS) $(IFLAGS) -I minilibx-linux -o $@ -c $<
@echo "$(_GREEN)DONE$(_WHITE)"
$(NAME): $(OBJ) Makefile
@echo "-----\n$(_GREEN)Compiling $(_YELLOW)$@ ... \c"
@make -C minilibx-linux
@cp minilibx-linux/libmlx.a libmlx.a
@clang $(OBJ) libmlx.a -I minilibx-linux -lm -lbsd -lX11 -lXext $(CFLAGS) -o cub3D
@echo "$(_RED)DONE\n$(_YELLOW)-----"
exec: $(NAME)
@echo "Compiling the $(_YELLOW)executable$(_WHITE) ... \c"
@$(CC) main.c $(NAME) $(CFLAGS) $(IFLAGS) -I ./mlx.h $(LFLAGS)
@echo "$(_GREEN)DONE$(_WHITE)"
./a.out
re: fclean all
clean:
rm -rf $(OBJ_DIR)
fclean: clean
rm -f $(NAME)
.PHONY: all install re-install exec re clean fclean