80 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| NAME = cub3d
 | |
| CPP = gcc
 | |
| LIBRARIES_DIR = Libft Minilibx
 | |
| LIBRARIES_A = Libft/libft.a Minilibx/libmlx.a
 | |
| SHARED = -lX11 -lXext -lm
 | |
| CPP_1 = $(CPP) -Wall -Wextra -Werror -I Libft -I Minilibx -I include $(FLAGS) $(FLAGS_1)
 | |
| CPP_2 = $(CPP) $(FLAGS) $(FLAGS_2)
 | |
| C_FILES = $(wildcard src/*.c)
 | |
| O_FILES = $(patsubst %.c,%.o,$(C_FILES))
 | |
| 
 | |
| ECHO = echoo(){ \
 | |
| 	if [ -t 1 ]; then \
 | |
| 		echo "$$*"; \
 | |
| 	else \
 | |
| 		echo "$$*" | sed -E "s/\x1B[[][0-9;]+m//g"; \
 | |
| 	fi; \
 | |
| };echoo
 | |
| 
 | |
| all : $(NAME)
 | |
| 
 | |
| debug :
 | |
| 	$(MAKE) all FLAGS_1="$(FLAGS_1) -g"
 | |
| 
 | |
| debugre :
 | |
| 	$(MAKE) re FLAGS_1="$(FLAGS_1) -g"
 | |
| 
 | |
| $(LIBRARIES_DIR):
 | |
| 	@$(ECHO)
 | |
| 	@$(ECHO) "\e[30;47;1m  $(NAME): making library $@...  \e[0m"
 | |
| 	$(MAKE) -C $@
 | |
| 
 | |
| clean :
 | |
| 	@$(ECHO)
 | |
| 	@$(ECHO) "\e[30;47;1m  $(NAME): clean...  \e[0m"
 | |
| 	-rm -f $(O_FILES)
 | |
| 
 | |
| fclean : clean
 | |
| 	@$(ECHO)
 | |
| 	@$(ECHO) "\e[30;47;1m  $(NAME): fclean...  \e[0m"
 | |
| 	-rm -f $(NAME)
 | |
| 	-$(MAKE) -C Libft fclean
 | |
| 	-$(MAKE) -C Minilibx clean
 | |
| 	-rm $$(find Minilibx -name "Makefile.gen")
 | |
| 
 | |
| re : fclean all
 | |
| 
 | |
| $(NAME) : $(O_FILES) $(LIBRARIES_DIR)
 | |
| 	@$(ECHO)
 | |
| 	@$(ECHO) "\e[30;47;1m  $(NAME): linking...  \e[0m"
 | |
| 	$(CPP_2) $(O_FILES) $(LIBRARIES_A) $(SHARED) -o $@
 | |
| 	@$(ECHO)
 | |
| 	@$(ECHO) "\t\t \e[0;92m\(^o^)/  \e[0;102;30;1m $(NAME) made! \e[0;92m \(^o^)/\e[0m"
 | |
| 	@$(ECHO)
 | |
| 
 | |
| %.o : %.c
 | |
| 	@$(ECHO)
 | |
| 	@$(ECHO) "\e[30;47;1m  $(NAME): making '$@'...  \e[0m"
 | |
| 	$(CPP_1) $(FLAGS_1) -c $< -o $@
 | |
| 
 | |
| check_headers :
 | |
| 	@ERROR=0; \
 | |
| 	for HEADER in $(wildcard *.h) $(wildcard **/*.h); \
 | |
| 	do \
 | |
| 		echo "check header $$HEADER..."; \
 | |
| 		> __tmp_check_header.c echo "#include \"$$HEADER\""; \
 | |
| 		>> __tmp_check_header.c echo "#include \"$$HEADER\""; \
 | |
| 		>> __tmp_check_header.c echo "int main() {}"; \
 | |
| 		$(CPP_1) -o __tmp_check_header.out __tmp_check_header.c; \
 | |
| 		if [ $$? -ne 0 ]; \
 | |
| 		then \
 | |
| 			ERROR=1; \
 | |
| 			echo "  error \e[31m:(\e[0m"; \
 | |
| 		fi; \
 | |
| 		echo "  good \e[32m:)\e[0m"; \
 | |
| 		2> /dev/null rm -- "__tmp_check_header.out" "__tmp_check_header.c"; \
 | |
| 	done; \
 | |
| 	2> /dev/null rm __tmp_check_header.out __tmp_check_header.c; \
 | |
| 	if [ $$ERROR -eq 0 ]; then true; else false; fi;
 | |
| 
 | |
| .PHONY : all clean fclean re check_headers $(LIBRARIES_DIR)
 | 
