#******************************************************************************# # # # ::: :::::::: # # Makefile :+: :+: :+: # # +:+ +:+ +:+ # # By: tmaze +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2019/02/23 14:30:57 by tmaze #+# #+# # # Updated: 2019/03/18 14:27:44 by tmaze ### ########.fr # # # #******************************************************************************# NAME1 = checker NAME2 = push_swap # Make options MAKEFLAGS += --no-print-directory # Output UNAME := $(shell uname) ifeq ($(UNAME), Darwin) ECHO = @echo endif ifeq ($(UNAME), Linux) ECHO = @echo -e endif # Compilator CC = gcc FLAGS = -Wall -Wextra -Werror # Folders LIBDIR = libft SRCDIR = srcs OBJDIR = objs INCDIR = includes libft # Source files SRC = ps_clean.c \ ps_push.c \ ps_rot.c \ ps_rerot.c \ ps_swap.c \ ps_stktools.c \ ps_stktools2.c \ ps_sort.c \ ps_sorttools.c \ ps_specsort.c MAIN1 = checker.c MAIN2 = push_swap.c OBJ = $(SRC:.c=.o) OBJ1 = $(MAIN1:.c=.o) OBJ2 = $(MAIN2:.c=.o) LIB = ft LIBFILE = libft.a # Prefixes OBJP = $(addprefix $(OBJDIR)/, $(SRC:.c=.o)) OBJP1 = $(addprefix $(OBJDIR)/, $(MAIN1:.c=.o)) OBJP2 = $(addprefix $(OBJDIR)/, $(MAIN2:.c=.o)) INCP = $(foreach dir, $(INCDIR), -I$(dir)) # Default Rule DRULE = all # Main rules default : @echo -e "$(PUR)===> $(GRE)$(NAME2) : $(PUR) START RULE : $(DRULE) <===$(DEF)" @make $(DRULE) @echo -e "$(PUR)===> $(GRE)$(NAME2) : $(PUR) END RULE : $(DRULE) <===$(DEF)" all : $(NAME1) $(NAME2) # Compilation rules $(OBJDIR)/%.o : $(SRCDIR)/%.c includes/push_swap.h @mkdir -p $(OBJDIR) $(CC) $(FLAGS) -c -o $@ $< $(INCP) $(LIBDIR)/$(LIBFILE) : @echo -e "$(YEL)===> $(GRE)$(NAME2) : $(YEL) Librairy Compilation <===$(DEF)" $(MAKE) -C $(LIBDIR) all $(NAME1) : $(OBJP1) $(OBJP) $(LIBDIR)/$(LIBFILE) @echo -e "$(YEL)===> $(GRE)$(NAME1) : $(YEL) Binary Compilation <===$(DEF)" $(CC) $(FLAGS) -o $@ $^ $(INCP) -L$(LIBDIR) -l$(LIB) $(NAME2) : $(OBJP2) $(OBJP) $(LIBDIR)/$(LIBFILE) @echo -e "$(YEL)===> $(GRE)$(NAME2) : $(YEL) Binary Compilation <===$(DEF)" $(CC) $(FLAGS) -o $@ $^ $(INCP) -L$(LIBDIR) -l$(LIB) # Cleaner rules clean : @echo -e "$(RED)===> $(GRE)$(NAME) : $(RED) Delete Object Files <===$(DEF)" @$(RM) -rf $(OBJDIR) @$(MAKE) -C $(LIBDIR) clean fclean : clean @echo -e "$(RED)===> $(GRE)$(NAME) : $(RED) Delete Binary File <===$(DEF)" @$(RM) -f $(NAME1) $(NAME2) @$(RM) -rf *.dSYM @$(MAKE) -C $(LIBDIR) fclean re : fclean default # Phony .PHONY = default all re clean fclean # Color DEF = \033[0m BLA = \033[30m BLI = \033[5m BLU = \033[34m CYA = \033[36m GRA = \033[1m GRE = \033[32m PUR = \033[35m RED = \033[31m SOU = \033[4m WHI = \033[37m YEL = \033[33m