-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
167 lines (135 loc) · 5.18 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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: mpeulet <[email protected]> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2023/05/20 15:19:55 by mpeulet #+# #+# #
# Updated: 2023/09/08 13:35:58 by mpeulet ### ########.fr #
# #
# **************************************************************************** #
#Colors / base 16 / Bright
DEF_COLOR = \033[0;39m
GREY = \033[0;90m
RED = \033[0;91m
GREEN = \033[0;92m
YELLOW = \033[0;93m
BLUE = \033[0;94m
MAGENTA = \033[0;95m
CYAN = \033[0;96m
WHITE = \033[0;97m
#Colors / Perso / Bright
ORANGE = \033[38;5;214m
#Libft
LIBFT_DIR = libft/
LIBFT_NAME = libft.a
LIBFT = $(LIBFT_DIR)$(LIBFT_NAME)
#Variables
BONUS = checker
NAME = push_swap
CC = cc
FLAGS = -Wall -Werror -Wextra -g3
RM = rm -rf
TXT = *txt
VCF = valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes
ERR = 2>> error.txt
MESS = 3>> message.txt
AR = ar rcs
NORM = ./includes\
./libft/include/\
./libft/src_lib
INCLUDE = -I ./includes/\
-I ./libft/include/
#Sources
OBJ_DIR_P = obj/
SRC_DIR_P = src/
SRC_FUNCTIONS_P = is_input_correct movements move_stack_a move_stack_b \
move_both_stacks parse_string radix_sort sort super_sort_utils \
super_sort utils
PUSH_SRC = $(addprefix $(SRC_DIR_P), $(addsuffix .c, $(SRC_FUNCTIONS_P)))
PUSH_OBJ = $(addprefix $(OBJ_DIR_P), $(addsuffix .o, $(SRC_FUNCTIONS_P)))
IFMAKE_DIR_P = .cache_exists
all: $(NAME)
$(IFMAKE_DIR_P):
@mkdir -p $(OBJ_DIR_P)
$(LIBFT):
@echo "$(GREY)Getting libft ready...$(DEF_COLOR)"
@make -sC $(LIBFT_DIR)
$(OBJ_DIR_P)%.o: $(SRC_DIR_P)%.c | $(IFMAKE_DIR_P)
@echo "$(ORANGE)Loading... $< $(DEF_COLOR)"
@$(CC) $(FLAGS) $(INCLUDE) -c $< -o $@
$(NAME): $(LIBFT) $(PUSH_OBJ)
@echo "$(GREY)Compiling push_swap...$(DEF_COLOR)"
@$(CC) $(FLAGS) -o $(NAME) src/main.c $(PUSH_OBJ) $(LIBFT) $(INCLUDE)
@echo "$(GREEN)Push_swap ready.$(DEF_COLOR)"
bonus: $(LIBFT) $(BONUS)
$(BONUS): $(PUSH_OBJ) $(LIBFT)
@$(CC) $(FLAGS) -o $(BONUS) src/checker_bonus.c $(PUSH_OBJ) $(LIBFT) $(INCLUDE)
@echo "$(GREEN)Checker ready.$(DEF_COLOR)"
clean:
@echo "$(MAGENTA)push_swap objects files cleaned!$(DEF_COLOR)"
@$(RM) $(OBJ_DIR_P)
@make -s clean -C $(LIBFT_DIR)
fclean: clean
@echo "$(RED)push_swap removed.$(DEF_COLOR)"
@$(RM) $(NAME) $(BONUS)
@$(RM) $(LIBFT_DIR)$(LIBFT_NAME)
@$(RM) $(TXT)
re: fclean all
@echo "$(BLUE)Cleaned and rebuilt everything for push_swap$(DEF_COLOR)"
test2: $(LIBFT) $(NAME)
$(eval ARG = $(shell shuf -i 1-2 -n 2))
@echo $(ARG)
$(VCF) ./push_swap $(ARG) $(ERR) $(MESS)
@ ./push_swap $(ARG) | ./checker_linux $(ARG)
@echo -n "Instructions: "
@./push_swap $(ARG) | wc -l
test3: $(LIBFT) $(NAME)
$(eval ARG = $(shell shuf -i 1-3 -n 3))
$(VCF) ./push_swap $(ARG) $(ERR) $(MESS)
@ ./push_swap $(ARG) | ./checker_linux $(ARG)
@echo $(ARG)
@echo -n "Instructions: "
@./push_swap $(ARG) | wc -l
test4: $(LIBFT) $(NAME)
$(eval ARG = $(shell shuf -i 1-4 -n 4))
@$(VCF) ./push_swap $(ARG) $(ERR) $(MESS)
@ ./push_swap $(ARG) | ./checker_linux $(ARG)
@echo $(ARG)
@echo -n "Instructions: "
@./push_swap $(ARG) | wc -l
test5: $(LIBFT) $(NAME)
$(eval ARG = $(shell shuf -i 1-5 -n 5))
@$(VCF) ./push_swap $(ARG) $(ERR) $(MESS)
@ ./push_swap $(ARG) | ./checker_linux $(ARG)
@echo $(ARG)
@echo -n "Instructions: "
@./push_swap $(ARG) | wc -l
test10: $(LIBFT) $(NAME)
$(eval ARG = $(shell shuf -i 1-10 -n 10))
@$(VCF) ./push_swap $(ARG) $(ERR) $(MESS)
@ ./push_swap $(ARG) | ./checker_linux $(ARG)
@echo $(ARG)
@echo -n "Instructions: "
@./push_swap $(ARG) | wc -l
test100: $(LIBFT) $(NAME)
$(eval ARG = $(shell shuf -i 1-100 -n 100))
@$(VCF) ./push_swap $(ARG) $(ERR) $(MESS)
@ ./push_swap $(ARG) | ./checker_linux $(ARG)
@echo $(ARG)
@echo -n "Instructions: "
@./push_swap $(ARG) | wc -l
test500: $(LIBFT) $(NAME)
$(eval ARG = $(shell shuf -i 1-500 -n 500))
@$(VCF) ./push_swap $(ARG) $(ERR) $(MESS)
@ ./push_swap $(ARG) | ./checker_linux $(ARG)
@echo $(ARG)
@echo -n "Instructions: "
@./push_swap $(ARG) | wc -l
random:
@seq -1000 1000 | shuf -n 100 | tr '\n' ' '; echo
norm:
@norminette $(SRC_DIR_P) $(NORM) | grep -A1 -B1 Error | grep -v 'OK!' || true
@echo "$(RED)Norminet $(ORANGE)the $(YELLOW)cat $(GREEN)says$(CYAN): $(RED)M$(ORANGE)e$(YELLOW)o$(GREEN)w$(CYAN) !$(BLUE)!$(MAGENTA)!$(DEF_COLOR)"
.PHONY: all bonus clean fclean re test2 test3 test4 test5 test10 test100 test500 norm