6
6
# By: aschenk <[email protected] > +#+ +:+ +#+ #
7
7
# +#+#+#+#+#+ +#+ #
8
8
# Created: 2024/11/07 16:20:40 by aschenk #+# #+# #
9
- # Updated: 2025/02/22 08:48:23 by aschenk ### ########.fr #
9
+ # Updated: 2025/02/26 12: 08:29 by aschenk ### ########.fr #
10
10
# #
11
11
# **************************************************************************** #
12
12
13
- # Implement light attenuation (fading of light intensity with distance);
14
- # set FADE to 1 to enable, 0 to disable during compilation ('make FADE=0')
15
- FADE ?= 1
16
-
17
13
NAME := miniRT
18
14
19
15
OS := $(shell uname) # Detect OS type
20
16
21
- # ############################
22
- # PRE-COMPILATION CONSTANTS #
23
- # ############################
17
+ # #########
18
+ # MACROS #
19
+ # #########
24
20
25
21
WINDOW_W ?= 1440 # Default window width
26
22
WINDOW_H ?= 900 # Default window height
@@ -117,16 +113,23 @@ LIB_FLAGS := $(LIBFT_FLAGS) $(MLX_FLAGS)
117
113
118
114
CC := cc
119
115
CFLAGS := -Wall -Wextra -Werror
120
- CFLAGS += -I$(HDRS_DIR ) -I$(LIBFT_DIR ) -I$(MLX_DIR ) # Look for headers in these directories
121
- CFLAGS += -DFADE=$(FADE )
122
- CFLAGS += -DWINDOW_H=$(WINDOW_H ) -DWINDOW_W=$(WINDOW_W ) # Define window dimensions with pre-compilation constants
116
+ CFLAGS += -I$(HDRS_DIR ) -I$(LIBFT_DIR ) -I$(MLX_DIR ) # Look for headers in these directories
117
+ CFLAGS += -DWINDOW_H=$(WINDOW_H ) -DWINDOW_W=$(WINDOW_W ) # Define window dimensions with macros
123
118
124
119
CFLAGS += -g -Wpedantic # Debugging flag, pedantic warnings
125
120
126
121
ifeq ($(strip $(OS ) ) ,Darwin) # Suppress some errors/warnings on MacOS (due to the way prototypes are defined in MiniLibX)
127
122
CFLAGS += -Wno-strict-prototypes
128
123
endif
129
124
125
+ # #########
126
+ # BONUS #
127
+ # ########
128
+
129
+ ifdef BONUS
130
+ CFLAGS += -DBONUS=1
131
+ endif
132
+
130
133
# #####################
131
134
# FORMATTING STRINGS #
132
135
# #####################
@@ -186,7 +189,7 @@ $(LIBMLX):
186
189
git clone https://github.com/42Paris/minilibx-linux.git $(MLX_DIR ) > /dev/null 2>&1 ; \
187
190
fi
188
191
@echo " Compiling MiniLibX..."
189
- @make -s -C $(MLX_DIR ) > /dev/null 2>&1 ;
192
+ @$( MAKE ) -s -C $(MLX_DIR ) > /dev/null 2>&1 ;
190
193
@echo " $( BOLD) MiniLibX compiled.$( RESET) "
191
194
192
195
# Build libft library by calling 'make' in LIBFT_DIR.
@@ -243,7 +246,7 @@ $(LIBFT): $(LIBFT_DIR)/libft.h \
243
246
$(LIBFT_DIR ) /ft_printf_utils.c \
244
247
$(LIBFT_DIR ) /ft_printf.c \
245
248
$(LIBFT_DIR ) /ft_atoi_base.c
246
- @make -s -C $(LIBFT_DIR )
249
+ @$( MAKE ) -s -C $(LIBFT_DIR )
247
250
@echo " "
248
251
249
252
# Compilation of program; depends on $(OBJS) and library files
@@ -261,7 +264,7 @@ $(NAME): $(OBJS) $(LIBFT) $(LIBMLX)
261
264
262
265
@echo "$(RESET)"
263
266
264
- @echo "by Natalie Holbrook & Alex Schenk @42Berlin, December 2024 "
267
+ @echo "by Natalie Holbrook & Alex Schenk @42Berlin, February 2025 "
265
268
@echo "\n$(BOLD)$(YELLOW)Usage: './$(NAME) <scene.rt>'$(RESET)"
266
269
267
270
# #########
@@ -271,7 +274,7 @@ $(NAME): $(OBJS) $(LIBFT) $(LIBMLX)
271
274
# Target to remove all generated files BUT the program executable and compiled libraries.
272
275
clean :
273
276
@rm -rf $(OBJS_DIR )
274
- @make -s -C $(LIBFT_DIR ) clean > /dev/null 2>&1
277
+ @$( MAKE ) -s -C $(LIBFT_DIR ) clean > /dev/null 2>&1
275
278
@rm -rf $(MLX_DIR ) /obj
276
279
@echo " $( BOLD) $( RED) Object files removed.$( RESET) "
277
280
@@ -282,20 +285,24 @@ fclean: clean
282
285
283
286
# Target to remove all generated files and the program executable (NOT the compiled libraries).
284
287
fclean_all : fclean
285
- @make -s -C $(LIBFT_DIR ) fclean > /dev/null 2>&1
288
+ @$( MAKE ) -s -C $(LIBFT_DIR ) fclean > /dev/null 2>&1
286
289
@rm -rf $(MLX_DIR )
287
290
@echo " $( BOLD) $( RED) Library files removed.$( RESET) "
288
291
289
292
# Target to remove all object files, the program executable,
290
293
# and then rebuild the program.
291
- re : fclean
292
- @echo " "
293
- @$(MAKE ) -s all
294
+ re : fclean all
294
295
295
296
# Target to remove all object files, the program executable, and the compiled libraries,
296
297
# and then rebuild the program.
297
- re_all : fclean_all
298
- @echo " "
299
- @$(MAKE ) -s all
298
+ re_all : fclean_all all
299
+
300
+ # Bonus rules
301
+ bonus :
302
+ @$(MAKE ) -s BONUS=1
303
+
304
+ re_bonus : fclean bonus
305
+
306
+ re_all_bonus : fclean_all bonus
300
307
301
- .PHONY : all clean fclean re
308
+ .PHONY : all clean fclean fclean_all re re_all bonus re_bonus re_all_bonus
0 commit comments