-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
84 lines (68 loc) · 2.65 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: amalsago <amalsago@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2018/11/15 11:06:32 by amalsago #+# #+# #
# Updated: 2018/12/19 18:11:55 by amalsago ### ########.fr #
# #
# **************************************************************************** #
# **************************************************************************** #
# Compilator and flags
CC = gcc
CFLAGS = -Wall -Wextra -Werror
# **************************************************************************** #
# System commands :
RM = rm -rf
MKDIR = mkdir -p
MAKE = make -C
# **************************************************************************** #
# General :
NAME = fillit
CPPFLAGS = -I ./includes
LIB_NAME = libft.a
# **************************************************************************** #
# Directories of source and object files :
SRCDIR = ./sources
OBJDIR = ./objects
INCDIR = ./includes
LIBDIR = ./libft
# **************************************************************************** #
# List of source files :
SRC_NAME = main.c \
checks.c \
fill_tetri_coo.c \
create_square.c \
fill_square.c \
print_map_tetri.c \
utils.c
# **************************************************************************** #
# Automatic variables where are listed the names of sources and objects files :
SRC = $(addprefix $(SRCDIR)/, $(SRC_NAME))
OBJ = $(addprefix $(OBJDIR)/, $(SRC_NAME:.c=.o))
LIB = $(addprefix $(LIBDIR)/, $(LIB_NAME))
# **************************************************************************** #
# Rules :
all: $(NAME)
$(NAME): $(LIB) $(OBJ)
$(CC) $^ -o $@
debug:
$(CC) $(SRC) -o $(NAME) -fsanitize=address -g3 $(CPPFLAGS) $(LIB)
$(OBJDIR)/%.o: $(SRCDIR)/%.c
$(MKDIR) $(OBJDIR)
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<
$(LIB):
$(MAKE) $(LIBDIR) fclean && $(MAKE) $(LIBDIR)
clean:
$(RM) $(OBJ)
$(RM) $(OBJDIR) 2> /dev/null || true
$(MAKE) $(LIBDIR) clean
fclean: clean
$(MAKE) $(LIBDIR) fclean
$(RM) $(NAME)
re: fclean all
norm:
norminette $(SRCDIR) $(INCDIR) $(LIBDIR)
.PHONY: all clean fclean re norm debug