-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
130 lines (103 loc) · 2.54 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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#Name
NAME = cub3D
#Compiler
CC = gcc
CFLAGS = -Wall -Wextra -Werror
FRAMEWORKS = -framework OpenGL -framework AppKit $(SDL2_DIR)/$(SDL2)
LIBRARIES = $(LIBFT_DIR)/$(LIBFT) $(MLX_DIR)/$(MLX) $(GNL_DIR)/$(GNL) $(ZLIB_DIR)/$(ZLIB) $(SOUND_DIR)/$(SOUND)
CFLAG = -c
OFLAG = -o
IFLAG = -I
#Make
MAKE = make -s -C
MAKE_CLEAN = make clean -s -C
MAKE_FCLEAN = make fclean -s -C
#Unzip
UNZIP = unzip -X -o -q
#Norm
NORM = norminette
#Shell
MKDIR = mkdir -p
CP = cp
RM = rm -rf
#Directories
SOURCES_DIR = ./src
OBJECTS_DIR = ./objs
HEADERS_DIR = ./headers
BUILD_DIR = ./build
LIBRARIES_DIR = ./libraries
LIBFT_DIR = ./libraries/libft
MLX_DIR = ./libraries/mlx
ZLIB_DIR = ./libraries/zlib
GNL_DIR = ./libraries/gnl
SOUND_DIR = ./libraries/sound
SDL2_DIR = ./libraries/sdl2
#Libs
LIBFT = libft.a
MLX = libmlx.a
ZLIB = libz.a
GNL = gnl.a
SOUND = sound.a
SDL2 = SDL2.framework/SDL2
#Files
FILES = cub3d.c \
parser.c \
texture.c \
events.c \
timer.c \
world.c \
renderer.c \
utils.c \
player.c \
mouse.c \
collisions.c \
story.c \
battle.c \
font.c \
hud.c \
key.c \
raycaster.c \
screenshot.c \
battle_v3.c \
mouse_event.c
#Srcs
SRCS = $(foreach FILE, $(FILES), $(shell find $(SOURCES_DIR) -name $(FILE)))
#Objs
OBJS = $(patsubst $(SOURCES_DIR)/%, $(OBJECTS_DIR)/%, $(SRCS:.c=.o))
$(OBJECTS_DIR)/%.o: $(SOURCES_DIR)/%.c
@$(MKDIR) $(@D)
@$(CC) $(CFLAGS) $(IFLAG) $(HEADERS_DIR) $(IFLAG) $(LIBRARIES_DIR) $(CFLAG) $(OFLAG) $@ $<
all: $(NAME)
$(NAME): $(LIBFT) $(GNL) $(MLX) $(ZLIB) $(SDL2) $(SOUND) $(OBJS)
@$(CC) $(CFLAGS) $(OBJS) $(FRAMEWORKS) $(LIBRARIES) main.c $(OFLAG) $(NAME)
@echo "Done!"
$(LIBFT):
@$(UNZIP) libraries/libft.zip -d libraries
@$(MAKE) $(LIBFT_DIR)
$(ZLIB):
@$(UNZIP) libraries/zlib.zip -d libraries
@cd libraries/zlib; bash configure; make; cd ../../
$(MLX):
@$(UNZIP) libraries/mlx.zip -d libraries
@$(MAKE) $(MLX_DIR)
$(GNL):
@$(UNZIP) libraries/gnl.zip -d libraries
@$(MAKE) $(GNL_DIR)
$(SOUND):
@$(UNZIP) libraries/sound.zip -d libraries
@$(MAKE) $(SOUND_DIR)
$(SDL2):
@$(UNZIP) libraries/sdl2.zip -d libraries
norminette:
@$(NORM) $(shell find $(SOURCES_DIR) -name *.c)
@$(NORM) $(shell find $(HEADERS_DIR) -name *.h)
clean:
@$(RM) $(OBJECTS_DIR) $(LIBFT_DIR) $(GNL_DIR) $(MLX_DIR) $(ZLIB_DIR) $(SOUND_DIR) $(SDL2_DIR) $(LIBRARIES_DIR)/__MACOSX
fclean: clean
@$(RM) $(NAME)
re: fclean all
run: all clean
@./$(NAME) settings.cub
screenshot: all clean
@./$(NAME) settings.cub --save
.PHONY: all screeshot norminette clean fclean re run