-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
88 lines (63 loc) · 3.1 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: mzomeno- <marvin@42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2021/10/07 18:27:39 by mzomeno- #+# #+# #
# Updated: 2022/02/04 19:06:17 by mzomeno- ### ########.fr #
# #
# **************************************************************************** #
# Program variables ============================================================
STL_TEST = stl_containers
FT_TEST = ft_containers
# Compilation variables ========================================================
CC = clang++
CFLAGS += -Wall -Wextra -Werror -g
INCLUDES = -I $(INCLUDE_DIR)utils \
-I $(INCLUDE_DIR)iterators \
-I $(INCLUDE_DIR)containers
# Directories ==================================================================
SRC_DIR = tests/
INCLUDE_DIR = src/
OBJ_DIR = obj/
STL_OBJ_DIR = stl/
FT_OBJ_DIR = ft/
# Source files =================================================================
SRC = $(shell ls $(SRC_DIR)*.cpp | cut -d '/' -f 2)
STL_OBJ = $(addprefix $(OBJ_DIR)$(STL_OBJ_DIR), $(SRC:.cpp=.o))
FT_OBJ = $(addprefix $(OBJ_DIR)$(FT_OBJ_DIR), $(SRC:.cpp=.o))
# Main targets ==================================================================
all: $(STL_TEST) $(FT_TEST)
$(STL_TEST): $(STL_OBJ)
$(CC) $(CFLAGS) $(STL_OBJ) $(INCLUDES) -o $(STL_TEST)
$(FT_TEST): $(FT_OBJ)
$(CC) $(CFLAGS) $(FT_OBJ) $(INCLUDES) -o $(FT_TEST)
# Creating directories ==========================================================
$(STL_OBJ_DIR):
mkdir -p $(OBJ_DIR)$(STL_OBJ_DIR)
$(FT_OBJ_DIR):
mkdir -p $(OBJ_DIR)$(FT_OBJ_DIR)
# Building sources ==============================================================
$(OBJ_DIR)$(STL_OBJ_DIR)%.o: $(SRC_DIR)%.cpp | $(STL_OBJ_DIR)
$(CC) $(CFLAGS) $(INCLUDES) -D ORIGINAL=1 -D NAMESPACE=std -c $< -o $@
$(OBJ_DIR)$(FT_OBJ_DIR)%.o: $(SRC_DIR)%.cpp | $(FT_OBJ_DIR)
$(CC) $(CFLAGS) $(INCLUDES) -D ORIGINAL=0 -D NAMESPACE=ft -c $< -o $@
# Testing -======================================================================
original: $(STL_TEST) # NEED TO FIND A WAY TO EXECUTE THESE EVEN WHEN THE PROGRAM HAS ALREADY BEEN CREATED
@./$(STL_TEST)
replica: $(FT_TEST)
@./$(FT_TEST)
test: all
@./$(STL_TEST) > original
@./$(FT_TEST) > replica
@diff original replica
@rm original replica
# Cleaning ======================================================================
clean:
rm -rf $(OBJ_DIR) original replica
fclean: clean
rm -f $(FT_TEST) $(STL_TEST)
re: fclean all
.PHONY: all clean fclean re test