-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
113 lines (98 loc) · 3.79 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
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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: oal-tena <[email protected]> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2022/04/19 18:46:59 by oal-tena #+# #+# #
# Updated: 2022/04/22 18:13:11 by oal-tena ### ########.fr #
# #
# **************************************************************************** #
# Project file
NAME = minishell
MINISHELL_HEADER= include/minishell.h
LIBDIR = lib/libft/
LIBFT = lib/libft/libft.a
SRC= src/main.c \
src/tools/exec/execute.c \
src/tools/exec/pipe.c \
src/tools/exec/path.c \
src/tools/exec/built_ins.c \
src/tools/builtins/ft_echo.c \
src/tools/builtins/ft_cd.c \
src/tools/builtins/ft_env.c \
src/tools/builtins/ft_pwd.c \
src/tools/builtins/ft_export.c \
src/tools/builtins/ft_export_tools.c \
src/tools/builtins/ft_unset.c \
src/tools/builtins/ft_exit.c \
src/tools/parser/parser.c \
src/tools/parser/here_doc.c \
src/tools/parser/redirect_parser.c \
src/tools/hash/hash.c \
src/tools/hash/insert_hash.c\
src/tools/hash/find_hash.c\
src/tools/hash/update_hash.c\
src/tools/hash/remove_hash.c\
src/tools/hash/print_hash.c\
src/tools/tokenizer/tokenizer.c \
src/tools/tokenizer/tokenizer_tools.c \
src/tools/tokenizer/cmd/check_command_table.c \
src/tools/tokenizer/cmd/redirect_in.c \
src/tools/tokenizer/cmd/redirect_out.c \
src/tools/tokenizer/cmd/cmd_step_1.c \
src/tools/tokenizer/cmd/cmd_step_2.c \
src/tools/tokenizer/define_type.c \
src/tools/tokenizer/quotes/quotes.c \
src/tools/tokenizer/special_case.c \
src/tools/tokenizer/special_case_tools.c \
src/tools/tokenizer/quotes/quotes_remove_quotes.c \
src/tools/tokenizer/quotes/ft_handle_quotes.c \
src/tools/tokenizer/quotes/q_handle_s.c \
src/tools/tokenizer/quotes/q_handle_d.c \
src/tools/tokenizer/expand_parameters.c \
src/utils/msg.c \
src/utils/ft_free.c \
src/utils/ft_free_2.c \
src/utils/ft_helper.c \
src/utils/signals.c \
src/utils/here_doc_signal.c \
src/utils/error.c \
CC = gcc -g
CC_FLAG = -Wall -Wextra -Werror -I /usr/local/opt/readline/include
OBJ_DIR = obj/
OBJS = $(SRC:.c=.o)
OBJECTS_PREFIXED = $(addprefix $(OBJ_DIR), $(OBJS))
$(OBJ_DIR)%.o:%.c $(MINISHELL_HEADER)
@mkdir -p $(OBJ_DIR)/src
@mkdir -p $(OBJ_DIR)/src/tools
@mkdir -p $(OBJ_DIR)/src/tools/parser
@mkdir -p $(OBJ_DIR)/src/tools/exec
@mkdir -p $(OBJ_DIR)/src/tools/builtins
@mkdir -p $(OBJ_DIR)/src/tools/hash
@mkdir -p $(OBJ_DIR)/src/tools/tokenizer
@mkdir -p $(OBJ_DIR)/src/tools/tokenizer/cmd
@mkdir -p $(OBJ_DIR)/src/tools/tokenizer/quotes
@mkdir -p $(OBJ_DIR)/src/utils
@echo "Compiling $@"
@$(CC) $(CC_FLAG) -c $< -o $@
$(LIBFT):
make re -C $(LIBDIR)
$(NAME): $(OBJECTS_PREFIXED) $(LIBFT)
@$(CC) $(CC_FLAG) $(OBJECTS_PREFIXED) $(LIBFT) -o $(NAME) -L /usr/local/opt/readline/lib -lreadline
@echo "minishell Done !"
leak: #only use to check leak with valgrind
@echo "leak"
@make re
@valgrind --leak-check=full --show-leak-kinds=all --suppressions=valgrind_filter.supp --tool=memcheck ./$(NAME)
all: $(NAME)
@make all -C $(LIBDIR)
clean:
@echo "Cleaning"
@rm -rf $(OBJ_DIR)
@make clean -C $(LIBDIR)
fclean:
rm -f $(NAME)
@make fclean -C $(LIBDIR)
re: fclean all