-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile_Linux
67 lines (53 loc) · 1.75 KB
/
Makefile_Linux
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
# Program name
NAME = cub3D
NAME^^ = $(shell echo $(NAME) | tr 'a-z' 'A-Z')
NAME-- = $(shell echo $(NAME) | tr 'A-Z' 'a-z')
# Directories
INC_DIR = include/
SRC_DIR = srcs/
OBJ_DIR = objs/
# Sources
__SRCS = $(shell find $(SRC_DIR) -type f -name "*.c" | cut -c 6-)
SRCS = $(addprefix $(SRC_DIR), $(__SRCS))
OBJS = $(addprefix $(OBJ_DIR), $(__SRCS:.c=.o))
# Compile
CC = clang
CFLAGS = -Wall -Werror -Wextra -march=native #-O3
INCLUDE = -I $(INC_DIR) -I ./mlx -I ./libft
LIBS = -L ./libft -lft -lmlx -lX11 -lXext -lm
# Format
OFFSET = 25
OFFSET_OBJ = 60
RESET = \033[0;0m
FG_BWHIT = \033[1;97m
FG_WHIT = \033[0;97m
FG_BGRAY = \033[1;37m
FG_GRAY = \033[0;37m
FG_BMAGE = \033[1;35m
FG_MAGE = \033[0;35m
FG_BCYAN = \033[1;36m
FG_CYAN = \033[0;36m
FG_BGREE = \033[1;32m
FG_GREE = \033[0;32m
# Rules
all: $(NAME)
$(OBJ_DIR)%.o: $(SRC_DIR)%.c $(INC_DIR)$(NAME--).h
mkdir -p $(OBJ_DIR)
printf "$(FG_BGRAY)[ $(NAME^^) ] $(FG_BCYAN)OBJ\033[$(OFFSET)G$(FG_BWHIT): $(FG_WHIT)$@ $(FG_BCYAN)\033[$(OFFSET_OBJ)G[.]$(RESET)\r"
$(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@
printf "$(FG_BGRAY)[ $(NAME^^) ] $(FG_BCYAN)OBJ\033[$(OFFSET)G$(FG_BWHIT): $(FG_WHIT)$@ $(FG_BGREE)\033[$(OFFSET_OBJ)G[✓]$(RESET)\n"
$(NAME): $(OBJS)
make -C ./libft
$(CC) $(CFLAGS) $(INCLUDE) $(OBJS) -o $(NAME) $(LIBS)
printf "$(FG_BGRAY)[ $(NAME^^) ] $(FG_BGREE)BUILD\033[$(OFFSET)G$(FG_BWHIT): $(FG_BWHIT)$(NAME)$(RESET)\n"
clean:
make -C ./libft clean
rm -rf $(OBJ_DIR)
printf "$(FG_BGRAY)[ $(NAME^^) ] $(FG_BMAGE)CLEAN\033[$(OFFSET)G$(FG_BWHIT): $(FG_WHIT).o files cleaned$(RESET)\n"
fclean: clean
make -C ./libft fclean
rm -f $(NAME)
printf "$(FG_BGRAY)[ $(NAME^^) ] $(FG_BMAGE)FCLEAN\033[$(OFFSET)G$(FG_BWHIT): $(FG_WHIT)executable cleaned$(RESET)\n"
re: fclean all
.PHONY: all clean fclean re
.SILENT: