-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
126 lines (101 loc) · 3.64 KB
/
Makefile
File metadata and controls
126 lines (101 loc) · 3.64 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: anjose-d <anjose-d@student.42sp.org.br> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2022/04/12 16:42:35 by anjose-d #+# #+# #
# Updated: 2022/05/29 19:25:27 by anjose-d ### ########.fr #
# #
# **************************************************************************** #
NAME = push_swap
NAME_BNS = checker
MAIN_INCS = ./includes
HEADER = $(MAIN_INCS)/push_swap.h
HEADER_BNS = $(MAIN_INCS)/push_swap_bonus.h
#COMPILER VARIABLES
CC = gcc
CFLAGS = -Wall -Werror -Wextra
# LIBFT VARIABLES
LIBFT = ft
LIBFT_DIR = ./libft
LIBFT_INC_DIR = $(addprefix $(LIBFT_DIR)/, includes)
LIB_LINK = -L$(LIBFT_DIR) -l$(LIBFT)
# SOURCES AND OBJECTS
SRCSOPS_DIR = ops
SRCOPS = px.c rrx.c rx.c sx.c
SRCS_OPS = $(addprefix $(SRCSOPS_DIR)/, $(SRCOPS))
SRCS_DIR = ./srcs
SRCS = main.c \
arg_check.c utils1.c utils2.c utils_sort.c \
find_best_mv.c do_best_mv.c \
stack.c feed_stack.c sort_stack.c send_back.c \
short_sort.c large_sort.c \
sort_elems.c \
$(SRCS_OPS) \
OBJS_DIR = ./objs
OBJS = $(SRCS:.c=.o)
OBJS_PATH = $(addprefix $(OBJS_DIR)/, $(OBJS))
SRCS_PATH = $(addprefix $(SRCS_DIR)/, $(SRCS))
# BONUS
SRCSOPS_BNS_DIR = ops
SRCOPS_BNS = px_bonus.c rrx_bonus.c rx_bonus.c sx_bonus.c
SRCS_BNS_OPS = $(addprefix $(SRCSOPS_BNS_DIR)/, $(SRCOPS_BNS))
SRCS_DIR_BNS = ./srcs_bonus
SRCS_BNS = main_bonus.c \
arg_check_bonus.c feed_stack_bonus.c \
utils1_bonus.c stack_bonus.c\
$(SRCS_BNS_OPS) \
get_ops_bonus.c \
check_op_valid_bonus.c checker_bonus.c \
OBJS_BNS_DIR = ./objs_bonus
OBJS_BNS = $(SRCS_BNS:.c=.o)
OBJS_BNS_PATH = $(addprefix $(OBJS_BNS_DIR)/, $(OBJS_BNS))
SRCS_BNS_PATH = $(addprefix $(SRCS_DIR_BNS)/, $(SRCS_BNS))
# ALL INCLUDES
INCS = -I $(MAIN_INCS) -I $(LIBFT_INC_DIR)
# MANDATORY
$(OBJS_DIR)/%.o: $(SRCS_DIR)/%.c $(HEADER)
@mkdir -p $(@D)
$(CC) $(CFLAGS) $(INCS) -c $< -o $@
# BONUS
$(OBJS_BNS_DIR)/%.o: $(SRCS_DIR_BNS)/%.c $(HEADER_BNS)
@mkdir -p $(@D)
$(CC) $(CFLAGS) $(INCS) -c $< -o $@
# MAIN RULES
all: $(NAME)
$(NAME): $(OBJS_PATH)
@make -C $(LIBFT_DIR)
$(CC) $(CFLAGS) $^ $(INCS) $(LIB_LINK) -o $@
bonus: $(NAME_BNS)
$(NAME_BNS): $(OBJS_BNS_PATH)
@make -C $(LIBFT_DIR)
$(CC) $(CFLAGS) $^ $(INCS) $(LIB_LINK) -o $@
clean:
rm -rf $(OBJS_DIR) debug valgrind
rm -rf $(OBJS_BNS_DIR) debug_bonus valgrind_bonus
make $@ -C $(LIBFT_DIR)
fclean: clean
rm -f $(NAME)
rm -f $(NAME_BNS)
make $@ -C $(LIBFT_DIR)
re: fclean all
# DEBUG AND VALGRIND RULES
valgrind:
@make -C $(LIBFT_DIR)
$(CC) -g $(SRCS_PATH) $(INCS) $(LIB_LINK) -o $@
valgrind -s --track-origins=yes --leak-check=full ./$@ 3 2 1 4 5 7 0 8 9 6
debug:
@make -C $(LIBFT_DIR)
$(CC) -g $(SRCS_PATH) $(INCS) $(LIB_LINK) -o $@
gdb --tui ./$@ 3 2 1 4 5 7 0 8 9 6
debug_bonus:
@make -C $(LIBFT_DIR)
$(CC) -g $(SRCS_BNS_PATH) $(INCS) $(LIB_LINK) -o $@
gdb --tui ./$@ 2 1 3
valgrind_bonus:
@make -C $(LIBFT_DIR)
$(CC) -g $(SRCS_BNS_PATH) $(INCS) $(LIB_LINK) -o $@
valgrind -s --leak-check=full --show-leak-kinds=all --track-origins=yes ./$@ 2 1 3
.PHONY: all bonus clean fclean re debug valgrind debug_bonus valgrind_bonus