-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
126 lines (109 loc) · 3.28 KB
/
Copy pathMakefile
File metadata and controls
126 lines (109 loc) · 3.28 KB
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
NAME = minishell
LIBFT_DIR = libft
LIBFT = $(LIBFT_DIR)/libft.a
INCLUDES = -I./include -I./libft
CC = cc
CFLAGS = -Wextra -Werror -Wall $(INCLUDES) -g
LDFLAGS = -lreadline
RM = rm -f
VG_LOG = valgrind.log
SUPP_FILE = readline.supp
VFLAGS = --log-file=$(VG_LOG) \
--suppressions=$(SUPP_FILE) \
--leak-check=full \
--show-leak-kinds=all \
--track-fds=yes
HEREDOC_SRCS = src/heredoc/heredoc.c \
src/heredoc/heredoc_fill.c \
src/heredoc/heredoc_expand.c \
src/heredoc/heredoc_utils.c \
EXEC_SRCS = src/exec/exec_utils.c \
src/exec/exec_path.c \
src/exec/exec_cmd.c \
src/exec/exec_dispatch.c \
src/exec/exec_logic.c \
src/exec/exec_redirections.c \
src/exec/exec_pipeline.c \
src/exec/exec_subshell.c \
src/exec/exec_wildcard.c \
src/exec/exec_error.c \
BUILTIN_SRCS = src/builtins/builtin_dispatch.c \
src/builtins/ft_echo.c \
src/builtins/ft_pwd.c \
src/builtins/ft_env.c \
src/builtins/ft_exit.c \
src/builtins/ft_cd.c \
src/builtins/ft_export.c \
src/builtins/ft_unset.c \
PARSER_SRCS = src/parser/expr_parse_line.c \
src/parser/scanner_utils.c \
src/parser/scanner_getters.c \
src/parser/expr_utils.c \
src/parser/expr_begin.c \
src/parser/expr_builder.c \
src/parser/expr_print_cmd.c \
src/parser/expr_print_wrappers.c \
src/parser/expr_print_json.c \
src/parser/chop_token_logic.c \
src/parser/chop_token_redir.c \
src/parser/chop_token_paren.c \
src/parser/chop_token_word.c \
src/parser/lexer.c \
src/parser/lexer_utils.c \
src/parser/lexer_tokenize.c \
src/parser/lexer_error.c \
src/parser/parse_expr.c \
src/parser/parse_logic.c \
src/parser/parse_pipeline.c \
src/parser/parse_subshell.c \
src/parser/parse_cmd.c \
src/parser/parse_variable.c \
src/parser/parse_arg.c \
src/parser/parse_dquotes.c \
src/parser/word_is_empty.c \
ENV_SRCS = src/env/env_init.c \
src/env/env_get_tab.c \
src/env/env_utils.c
SRCS = $(ENV_SRCS) \
$(PARSER_SRCS) \
$(EXEC_SRCS) \
$(BUILTIN_SRCS) \
$(HEREDOC_SRCS) \
src/main.c \
src/signals.c \
OBJS = $(SRCS:src/%.c=obj/%.o)
obj/%.o: src/%.c
@mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
all: $(NAME)
$(LIBFT):
make --no-print-directory -C $(LIBFT_DIR) bonus
$(NAME): $(LIBFT) $(OBJS)
$(CC) $(CFLAGS) $(OBJS) $(LIBFT) $(LDFLAGS) -o $(NAME)
clean:
$(RM) -r obj
make --no-print-directory -C $(LIBFT_DIR) clean
fclean: clean
$(RM) $(NAME) $(VG_LOG) $(SUPP_FILE) $(LIBFT)
re: fclean all
leakcheck: all
@echo "{" > $(SUPP_FILE)
@echo " ignore_libreadline_leaks" >> $(SUPP_FILE)
@echo " Memcheck:Leak" >> $(SUPP_FILE)
@echo " ..." >> $(SUPP_FILE)
@echo " obj:*/libreadline.so.*" >> $(SUPP_FILE)
@echo "}" >> $(SUPP_FILE)
@echo "{" >> $(SUPP_FILE)
@echo " ignore_readline_function" >> $(SUPP_FILE)
@echo " Memcheck:Leak" >> $(SUPP_FILE)
@echo " ..." >> $(SUPP_FILE)
@echo " fun:readline" >> $(SUPP_FILE)
@echo "}" >> $(SUPP_FILE)
@echo "{" >> $(SUPP_FILE)
@echo " ignore_add_history_function" >> $(SUPP_FILE)
@echo " Memcheck:Leak" >> $(SUPP_FILE)
@echo " ..." >> $(SUPP_FILE)
@echo " fun:add_history" >> $(SUPP_FILE)
@echo "}" >> $(SUPP_FILE)
@-valgrind $(VFLAGS) ./$(NAME)
.PHONY: all clean fclean re leakcheck