-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
71 lines (57 loc) · 2.02 KB
/
Copy pathMakefile
File metadata and controls
71 lines (57 loc) · 2.02 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
CC := cc
CFLAGS := -MP -MMD -Wall -g -Werror -Wextra #-fsanitize=address
LIBFT_DIR := ./subprojects/libft
LDFLAGS := -L$(LIBFT_DIR)
LDLIBS := -lft -lreadline
NAME := minishell
INCLUDES := -Iincludes -I$(LIBFT_DIR)/includes -Isrc/tokenizer
PREFIX ?= ~/.local/bin
SRC := main.c
BUILTIN := ft_cd.c ft_echo.c ft_env.c ft_exit.c ft_export.c ft_pwd.c ft_unset.c
BUILTIN_HELPER := builtin_utils.c cd_utils.c exit_utils.c export_utils.c
CTX := init.c
SIGNALS := signal.c
UTILS := ft_getenv.c free_env.c ft_isoperator.c
PARSER := \
ast_node_helper.c parser_free.c parse_command_helper.c \
parse_command.c pipe_parse.c redirection_create.c \
redirection_parse.c redirection_utils.c simple_command_utils.c \
token_cursor.c
TOKENIZER := tokenizer.c tokenizer_utils.c init_type_tokens.c
EXEC := exec_builtin_helper.c exec_builtin.c exec_cmd.c exec_core.c \
exec_error.c exec_expand.c exec_external.c exec_fd.c exec_heredoc.c \
exec_logical.c exec_pipe.c exec_redir.c exec_wait.c applies_expand.c \
exec_expand_helper.c exec_heredoc_helper.c \
SOURCES = \
$(addprefix src/, $(SRC)) \
$(addprefix src/builtin/, $(BUILTIN)) \
$(addprefix src/builtin/helper/, $(BUILTIN_HELPER)) \
$(addprefix src/exec/, $(EXEC)) \
$(addprefix src/ctx/, $(CTX)) \
$(addprefix src/parser/, $(PARSER)) \
$(addprefix src/signals/, $(SIGNALS)) \
$(addprefix src/tokenizer/, $(TOKENIZER)) \
$(addprefix src/utils/, $(UTILS)) \
OBJS := $(SOURCES:%.c=%.o)
DEPS := $(SOURCES:%.c=%.d)
%.o: %.c
$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@
all: $(NAME)
$(NAME): $(OBJS)
$(MAKE) -C $(LIBFT_DIR) -j8
$(CC) $(CFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS) -o $@
re: fclean
$(MAKE) all
clean:
$(MAKE) -C $(LIBFT_DIR) clean
rm -f $(OBJS) $(DEPS)
fclean: clean
make -C $(LIBFT_DIR) fclean
rm -f $(NAME)
install:
$(MAKE) all
mv $(NAME) $(PREFIX)
uninstall:
rm -f $(PREFIX)/(NAME)
.PHONY: all re fclean clean install uninstall
-include $(DEPS)