-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
60 lines (44 loc) · 1.16 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
SHELL = /bin/sh
NAME = gnl
SRCS = \
srcs/main.c \
srcs/get_next_line.c \
srcs/get_next_line_utils.c
INC = includes/
# **************************************************************************** #
OBJDIR = objs/
OBJS = $(patsubst srcs/%.c, $(OBJDIR)%.o, $(SRCS))
DEPS = $(OBJS:.o=.d)
BUFFER = 3
CC = gcc
CFLAGS = -Wall -Werror -Wextra
CFLAGS += -MMD -MP -g
CFLAGS += $(addprefix -I,$(INC))
BFLAG = -D BUFFER_SIZE=$(BUFFER)
RM = rm -f
GR = \033[32;1m
RE = \033[31;1m
YE = \033[33;1m
CY = \033[36;1m
RC = \033[0m
# **************************************************************************** #
all: $(NAME)
$(NAME) : $(OBJDIR) $(OBJS)
@printf "\n$(GR)=== Compiled ==="
@printf "\n--- $(notdir $(SRCS))$(RC)\n"
@printf "$(YE)&&& Linked [$(CC)] &&&\n--- $(NAME)$(RC)\n"
$(CC) $(CFLAGS) $(BFLAG) $(OBJS) -o $(NAME)
$(OBJDIR):
@mkdir -p $(OBJDIR)
@printf "$(GR)=== Compiling ... [$(CC) $(CFLAGS) $(BFLAG)] ===$(RC)\n"
$(OBJDIR)%.o: srcs/%.c
@$(CC) $(CFLAGS) $(BFLAG) -c -o $@ $<
@printf "$(GR)+$(RC)"
clean:
$(RM) -r $(OBJDIR)
fclean: clean
@printf "$(RE)=== Removing $(NAME) ===$(RC)\n"
$(RM) $(NAME)
re: fclean all
.PHONY: all clean fclean re
-include $(DEPS)