-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
81 lines (60 loc) · 2.6 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: erosas-c <erosas-c@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2023/08/04 17:25:20 by erosas-c #+# #+# #
# Updated: 2024/03/31 19:31:03 by erosas-c ### ########.fr #
# #
# **************************************************************************** #
NAME = minishell
HEADER = inc/minishell.h
USERNAME := $(shell whoami)
SRC_DIR = src/
INC_DIR = inc
SRC_FILES = builtins.c ft_export.c parser2.c syntax.c \
builtins_utils.c ft_export_edit.c parser_rmquotes.c trim.c \
ctrl_chars.c ft_export_utils.c parser_utils.c utils.c \
error.c ft_unset.c parser_utils2.c var_utils.c \
exec.c heredoc.c parser_utils3.c var_utils2.c \
exec_utils.c lexer_delquotes.c pipe_utils.c variables.c \
exec_utils2.c lexer_utils.c prompt.c variables2.c \
ft_cd.c list2array.c signal.c parser_utils4.c \
ft_echo.c main.c subsplit.c var_utils3.c \
ft_exit.c parser.c subsplit_utils.c var_utils4.c \
ft_cd_utils.c
OBJ_DIR = obj/
OBJ_FILES = $(SRC_FILES:.c=.o)
OBJS = $(addprefix $(OBJ_DIR), $(OBJ_FILES))
DEP_FILES = $(SRC_FILES:.c=.d)
DEPS = $(addprefix $(OBJ_DIR), $(DEP_FILES))
LIBFT = lib/libft/libft.a
LREADLINE = -L /Users/$(USERNAME)/.brew/opt/readline/lib
IREADLINE = -I /Users/$(USERNAME)/.brew/opt/readline/include
INCLUDE = -I inc/ -I lib/libft/ $(IREADLINE)
CC = gcc
CFLAGS = -Wall -Wextra -Werror -MMD
RM = rm -rf
######################################################################
all: libft $(NAME)
libft:
make -C lib/libft/
$(NAME): $(OBJS)
$(CC) $(CFLAGS) $(LREADLINE) -lreadline -L lib/libft/ -lft $(OBJS) -o $@
$(OBJS): | $(OBJ_DIR)
$(OBJ_DIR):
mkdir $@
$(OBJ_DIR)%.o: $(SRC_DIR)%.c $(LIBFT) Makefile
$(CC) $(CFLAGS) $(INCLUDE) -g -c $< -o $@
clean:
@make -C lib/libft/ clean
$(RM) $(OBJS) $(DEPS)
fclean: clean
@make -C lib/libft/ fclean
$(RM) $(NAME)
$(RM) $(OBJ_DIR)
re: fclean all
-include $(DEPS)
.PHONY: all libft clean fclean re