-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
75 lines (56 loc) · 1.45 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
FT_SSL = ft_ssl
G = -g
FSAN = -fsanitize=address $(G)
FLAGS = -Wall -Werror -Wextra
SRCS_DIR = src/
OBJS_DIR = obj/
INC = inc/
HEADER = $(INC)ft_ssl.h
LIBFT = libft/ft_printf
LIBFT_A = $(LIBFT)/libftprintf.a
SRCS_FILES = ft_ssl.c \
read.c \
read_fd.c \
print.c \
md5.c \
md5_chunk.c \
sha256.c \
sha256_chunk.c \
sha256_cmd.c \
sha512.c \
sha512_chunk.c \
sha512_cmd.c
SRCS_PATH = $(SRCS_FILES:%=$(SRCS_DIR)%)
OBJS = $(SRCS_FILES:%.c=%.o)
OBJS_PATH = $(addprefix $(OBJS_DIR), $(OBJS))
GREEN = "\033[0;32m"
RED = "\033[0;31m"
DEFAULT = "\033[0m"
all: comp_libft $(FT_SSL)
comp_libft:
@make -C $(LIBFT)
norm:
norminette $(INC) $(SRCS_DIR) $(SHARED) libft/
fsanitize:
@echo $(RED)"Compiling all with -g and -fsanitize:" $(FT_SSL) $(DEFAULT)
make -C $(LIBFT)/ fsanitize
gcc $(FLAGS) $(FSAN) -c $(SRCS_PATH) -I $(INC)
mkdir -p $(OBJS_DIR)
mv $(OBJS) $(OBJS_DIR)
gcc $(FLAGS) $(FSAN) $(OBJS_PATH) $(LIBFT_A) -o $(FT_SSL) -I $(LIBFT) -I $(INC)
$(FT_SSL): $(LIBFT_A) $(OBJS_DIR) $(OBJS_PATH)
@echo "Compiling:" $(GREEN) $(FT_SSL) $(DEFAULT)
gcc $(G) $(FLAGS) $(OBJS_PATH) $(LIBFT_A) -o $(FT_SSL) -I $(LIBFT) -I $(INC)
$(OBJS_DIR):
@mkdir -p $(OBJS_DIR)
$(OBJS_DIR)%.o: $(SRCS_DIR)%.c $(HEADER)
@echo "Compiling:" $(GREEN) $< $(DEFAULT)
gcc $(G) $(FLAGS) -c $< -o $@ -I $(INC)
clean:
@make -C $(LIBFT)/ clean
@rm -rf $(OBJS_DIR)
fclean:
@make -C $(LIBFT)/ fclean
@rm -rf $(OBJS_DIR) $(FT_SSL)
re: fclean all
.PHONY: all comp_libft clean fclean re