-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
105 lines (79 loc) · 2.58 KB
/
Copy pathMakefile
File metadata and controls
105 lines (79 loc) · 2.58 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
##
## EPITECH PROJECT, 2026
## Makefile
## File description:
## Compiles CXX files
##
CC = g++
SRC_DIR = src/
DIR_OBJ = .obj/
LIB_DIR = lib/
GAMES_DIR = games/
GRAPH_DIR = graphicals/
CORE_FILES = main.cpp \
Core.cpp \
MenuSelector.cpp
CORE = $(addprefix $(SRC_DIR), $(CORE_FILES))
CORE_OBJ = $(CORE:%.cpp=$(DIR_OBJ)%.o)
BINARY = arcade
SNAKE = $(SRC_DIR)$(GAMES_DIR)Snake/SnakeModule.cpp
SNAKE_OBJ = $(SNAKE:%.cpp=$(DIR_OBJ)%.o)
SNAKE_LIB = $(LIB_DIR)arcade_snake.so
PACMAN = $(SRC_DIR)$(GAMES_DIR)Pacman/PacmanModule.cpp
PACMAN_OBJ = $(PACMAN:%.cpp=$(DIR_OBJ)%.o)
PACMAN_LIB = $(LIB_DIR)arcade_pacman.so
NCURSES = $(SRC_DIR)$(GRAPH_DIR)Ncurses/NcursesModule.cpp
NCURSES_OBJ = $(NCURSES:%.cpp=$(DIR_OBJ)%.o)
NCURSES_LIB = $(LIB_DIR)arcade_ncurses.so
NCURSES_FLAGS = -lncurses
SDL2 = $(SRC_DIR)$(GRAPH_DIR)Sdl2/Sdl2Module.cpp
SDL2_OBJ = $(SDL2:%.cpp=$(DIR_OBJ)%.o)
SDL2_LIB = $(LIB_DIR)arcade_sdl2.so
SDL2_FLAGS = -lSDL2 -lSDL2_ttf
SFML = $(SRC_DIR)$(GRAPH_DIR)Sfml/SfmlModule.cpp
SFML_OBJ = $(SFML:%.cpp=$(DIR_OBJ)%.o)
SFML_LIB = $(LIB_DIR)arcade_sfml.so
SFML_FLAGS = -lsfml-graphics -lsfml-window -lsfml-system
CPPFLAGS = -std=c++20 -Iinclude -fPIC -g -Wall -Wextra -Werror
LDFLAGS_CORE = -ldl -rdynamic
LDFLAGS_LIB = -shared
all: core games graphicals
core: $(BINARY)
games: $(SNAKE_LIB) $(PACMAN_LIB)
graphicals: $(NCURSES_LIB) $(SDL2_LIB) $(SFML_LIB)
$(BINARY): $(CORE_OBJ)
@$(CC) $^ -o $@ $(LDFLAGS_CORE)
@echo -e "\x1b[32m[OK] Executable $@\x1b[0m"
$(SNAKE_LIB): $(SNAKE_OBJ)
@mkdir -p $(dir $(LIB_DIR))
@$(CC) $^ -o $@ $(LDFLAGS_LIB)
@echo -e "\x1b[32m[OK] Library $@\x1b[0m"
$(PACMAN_LIB): $(PACMAN_OBJ)
@mkdir -p $(dir $(LIB_DIR))
@$(CC) $^ -o $@ $(LDFLAGS_LIB)
@echo -e "\x1b[32m[OK] Library $@\x1b[0m"
$(NCURSES_LIB): $(NCURSES_OBJ)
@mkdir -p $(dir $(LIB_DIR))
@$(CC) $^ -o $@ $(LDFLAGS_LIB) $(NCURSES_FLAGS)
@echo -e "\x1b[32m[OK] Library $@\x1b[0m"
$(SDL2_LIB): $(SDL2_OBJ)
@mkdir -p $(dir $(LIB_DIR))
@$(CC) $^ -o $@ $(LDFLAGS_LIB) $(SDL2_FLAGS)
@echo -e "\x1b[32m[OK] Library $@\x1b[0m"
$(SFML_LIB): $(SFML_OBJ)
@mkdir -p $(dir $(LIB_DIR))
@$(CC) $^ -o $@ $(LDFLAGS_LIB) $(SFML_FLAGS)
@echo -e "\x1b[32m[OK] Library $@\x1b[0m"
$(DIR_OBJ)%.o: %.cpp
@mkdir -p $(dir $@)
@$(CC) $(CPPFLAGS) -c $< -o $@
@echo -e "\x1b[36m[Compiling] $<\x1b[0m"
clean:
@rm -rf $(DIR_OBJ)
@echo -e "\x1b[35m[Clean] Objects removed\x1b[0m"
fclean: clean
@rm -f $(BINARY)
@rm -rf $(LIB_DIR)
@echo -e "\x1b[35m[Fclean] Binary and Libs removed\x1b[0m"
re: fclean all
.PHONY: all core games graphicals clean fclean re