-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
78 lines (61 loc) · 2.32 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: user42 <[email protected]> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2019/11/11 05:46:03 by dzonda #+# #+# #
# Updated: 2021/05/10 21:55:55 by user42 ### ########lyon.fr #
# #
# **************************************************************************** #
NAME = ft_ping
SRCDIR = src
OBJDIR = obj
LIBDIR = libft
MAKEFILE_NAME = Makefile-$(lastword $(subst /, ,$(NAME)))
CC = gcc
CFLAGS = -g3 #-Wall -Wextra -Werror -Wunused -Wunreachable-code
LDFLAGS = -Llibft
LDLIBS = -lft
include $(SRCDIR)/src.mk
SRCDIRS = $(foreach dir, $(SUBDIR), $(addprefix $(SRCDIR)/, $(dir)))
OBJDIRS = $(foreach dir, $(SUBDIR), $(addprefix $(OBJDIR)/, $(dir)))
INCLUDES = $(foreach dir, $(SRCDIRS), $(addprefix -I, $(dir)))
SRCS = $(foreach file, $(SUBFILE), $(addprefix $(SRCDIR)/, $(file)))
OBJS := $(subst $(SRCDIR),$(OBJDIR),$(SRCS:.c=.o))
DEPS = $(OBJS:.o=.d)
VERBOSE = FALSE
ifeq ($(VERBOSE),TRUE)
HIDE =
else
HIDE = @
endif
MAKE = make -C
RM = rm -rf
MKDIR = mkdir -p
ERRIGNORE = 2>/dev/null
.PHONY: all clean fclean re lib
all: lib $(NAME)
$(NAME): $(OBJDIRS) $(OBJS)
$(HIDE)echo $(MAKEFILE_NAME): "Linking \t ->" $@
$(HIDE)$(CC) $(OBJS) $(LDFLAGS) $(LDLIBS) -o $(NAME)
-include $(DEPS)
$(OBJDIR)/%.o: $(SRCDIR)/%.c
@echo $(MAKEFILE_NAME): "Building \t ->" $@
$(HIDE)$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ -MMD
$(OBJDIRS):
@echo $(MAKEFILE_NAME): "Making \t ->" $(OBJDIRS)
$(HIDE)$(MKDIR) $(OBJDIRS) $(ERRIGNORE)
lib:
$(HIDE)$(MAKE) $(LIBDIR)
clean:
$(HIDE)$(MAKE) $(LIBDIR) clean
$(HIDE)$(RM) $(OBJDIR) $(ERRIGNORE)
@echo $(MAKEFILE_NAME): Clean done !
fclean:
$(HIDE)$(MAKE) $(LIBDIR) fclean
$(HIDE)$(RM) $(OBJDIR) $(ERRIGNORE)
$(HIDE)$(RM) $(NAME) $(ERRIGNORE)
@echo $(MAKEFILE_NAME): Fclean done !
re: fclean all