-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
87 lines (67 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
# **************************************************************************** #
# #
# ::: :::::::: #
# Makefile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: abaudot <[email protected]> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2021/04/19 20:59:34 by abaudot #+# #+# #
# Updated: 2021/04/25 00:04:45 by abaudot ### ########.fr #
# #
# **************************************************************************** #
NAME = miniRT
CC = gcc
MLX_DIR = mlx_linux
NUM_THREADS = $(shell nproc --all)
alias = 1
ANTI = $$(( $(alias) * $(alias) ))
CFLAGS = -Wall -Wextra -Werror -D NUM_THREADS=$(NUM_THREADS)
CFLAGS += -D ANTIALIASING=$(alias) -D ANTI2=$(ANTI)
CFLAGS += -Iincludes -Imlx_linux -Ofast
LDFLAGS = -Lmlx_linux -lmlx -lXext -lX11 -lm -lbsd -lpthread
OBJS_DIR = objs
#DEPS_DIR = $(BUILD_DIR)/deps
#PRECOMPILE = mkdir -p $(dir $@)
PRECOMPILE = mkdir -p $(dir $(OBJS_DIR)/$*)
DEF = \033[0m
RED = \033[31;1m
GRN = \033[32;1m
YEL = \033[33;1m
BLU = \033[34;1m
include assets/src.mk
include assets/inc.mk
include assets/src_bonus.mk
OBJS = $(patsubst src/%.c, $(OBJS_DIR)/%.o, $(SRCS))
OBJS_BONUS = $(patsubst src/%.c, $(OBJS_DIR)/%.o, $(SRCS_BONUS))
all: $(NAME)
$(OBJS_DIR)/%.o: src/%.c $(INCLUDES)
@$(PRECOMPILE)
@$(CC) $(CFLAGS) -c -o $@ $<
@echo "$(BLU)Created: $(@:%=%) $(DEF)"
$(NAME): $(OBJS)
@$(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS)
@echo "$(YEL)\n ******************* Everything's done ! ************************$(DEF)"
@echo "$(YEL)\$(DEF)"
@echo "$(YEL) Compiled with: $(BLU)$(NUM_THREADS) threads $(YEL)| $(GRN)$(alias)x$(alias) antialiasing$(YEL) and.. $(RED)LOVE <3\t$(DEF)"
@echo "$(YEL) Usage : ./miniRT scenes/myscene.rt [skymaps/skymapDir/] [--save]\n$(DEF)"
@echo "$(RED) Note : To modify aliasing x factor type: $(GRN)make $(BLU)alias=x $(GRN)re \n$(DEF)"
bonus: $(OBJS_BONUS)
@$(CC) -o miniRT $^ $(CFLAGS) $(LDFLAGS)
@echo "$(YEL)\n ******************* Everything's done ! ************************$(DEF)"
@echo "$(YEL)\$(DEF)"
@echo "$(YEL) Compiled with: $(BLU)$(NUM_THREADS) threads $(YEL)| $(GRN)$(alias)x$(alias) antialiasing$(YEL) and.. $(RED)LOVE <3\t$(DEF)"
@echo "$(YEL) Usage : ./miniRT scenes/myscene.rt [skymaps/skymapDir/] [--save]\n$(DEF)"
@echo "$(RED) Note : To modify aliasing x factor type: $(GRN)make $(BLU)alias=x $(GRN)re \n$(DEF)"
install :
#sudo apt-get update && apt-get install libxext-dev libbsd-dev
@$(foreach path, $(MLX_DIR), make -C $(path);)
check_leaks: re
valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./miniRT scenes/sphere1.rt
clean:
@rm -rf objs
@echo "$(GRN)clean !"
fclean: clean
@rm -f $(NAME)
@echo "$(GRN)Everything's clean !"
re: fclean all
.PHONY: all clean fclean re test