-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
97 lines (77 loc) · 3.19 KB
/
Makefile
File metadata and controls
97 lines (77 loc) · 3.19 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: iverniho <iverniho@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2024/05/14 15:15:48 by iverniho #+# #+# #
# Updated: 2024/08/22 13:01:07 by iverniho ### ########.fr #
# #
# **************************************************************************** #
NAME = minishell
CC = cc
CFLAGS = -Wall -Wextra -Werror #-fsanitize=address -static-libasan -g
LIBFT = ./lib/libft/
GNL = get_next_line.c #get_next_line_utils.c
SRC_GNL = $(addprefix lib/gnl/, $(GNL))
INC = -I./includes -I./lib/libft/includes -I./lib/gnl/includes
OBJ_DIR = ./obj/
READLINE = -lreadline
SRC_DIR = ./src/main.c
SRC_BUILTIN_DIR = ./src/builtin/
SRC_ENV_DIR = ./src/env/
SRC_EXEC_DIR = ./src/exec/
SRC_INIT_DIR = ./src/init/
SRC_PARS_DIR = ./src/parser/
SRC_REDIRECT_DIR = ./src/redirect/
SRC_SIGNAL_DIR = ./src/signal/
SRC_UTILS_DIR = ./src/utils/
SRC_BUILTIN = builtin_cd.c builtin_exit.c builtin_utils.c builtin_echo.c builtin_pwd.c builtin_export.c builtin_unset.c
SRC_ENV = envp_functions.c additional_env.c env_utils.c
SRC_EXEC = execution.c command_utils.c path_utils.c pipe_utils.c exec_utils.c
SRC_INIT = initilisation.c
SRC_PARS = parser.c parser_utils.c expand_vars.c tokenization_utils.c tokenization.c tokenization2.c\
expand_vars_utils.c expand_vars_utils1.c expand_vars_utils2.c input.c node.c node_utils.c
SRC_REDIRECT = here_doc.c redirection.c
SRC_SIGNAL = signal.c
SRC_UTILS = error.c utils.c prompt.c
SRC = $(SRC_DIR) \
$(SRC_GNL) \
$(addprefix $(SRC_BUILTIN_DIR), $(SRC_BUILTIN)) \
$(addprefix $(SRC_ENV_DIR), $(SRC_ENV)) \
$(addprefix $(SRC_EXEC_DIR), $(SRC_EXEC)) \
$(addprefix $(SRC_INIT_DIR), $(SRC_INIT)) \
$(addprefix $(SRC_PARS_DIR), $(SRC_PARS)) \
$(addprefix $(SRC_REDIRECT_DIR), $(SRC_REDIRECT)) \
$(addprefix $(SRC_TESTER_DIR), $(SRC_TESTER)) \
$(addprefix $(SRC_SIGNAL_DIR), $(SRC_SIGNAL)) \
$(addprefix $(SRC_UTILS_DIR), $(SRC_UTILS))
OBJ = $(patsubst %.c,$(OBJ_DIR)%.o,$(SRC))
GREEN=\033[0;32m
RED=\033[0;31m
NC=\033[0m
all: $(NAME)
$(OBJ_DIR)%.o: %.c
@mkdir -p $(@D)
$(CC) $(CFLAGS) $(INC) -c $< -o $@
$(NAME): $(OBJ)
@make -C $(LIBFT)
$(CC) $(CFLAGS) $(INC) $(OBJ) -o $(NAME) -L$(LIBFT) -lft $(READLINE)
@echo -e "$(GREEN)Minishell built Successfully$(NC)"
debug: CFLAGS += -g
debug: re
@echo -e "$(GREEN)GDB Debugging Mode built Successfully$(NC)"
fsan: CFLAGS += -fsanitize=address
fsan: re
@echo -e "$(GREEN) Fsan Debugging Mode built Successfully$(NC)"
clean:
@make clean -C $(LIBFT)
rm -rf $(OBJ_DIR)
@echo -e "$(RED)Objects removed$(NC)"
fclean: clean
rm -f $(NAME)
@make fclean -C $(LIBFT)
@echo -e "$(RED)Minishell removed$(NC)"
re: fclean all
.PHONY: all clean fclean re