NAME = fillit CC = gcc D_SRC = src F_SRC := $(shell find $(D_SRC) -type f -regex ".*\.c$$") D_OBJ = obj F_OBJ = $(notdir $(F_SRC:.c=.o)) DF_OBJ := $(addprefix $(D_OBJ)/, $(F_OBJ)) D_INC = includes O_INC = $(addprefix -I, $(D_INC)) W_FLAGS = -Wall -Wextra -Werror D_FLAGS = MKDIR = mkdir -p RM = /bin/rm -rf .PHONY: all clean fclean re all: $(NAME) $(D_OBJ)/%.o: $(D_SRC)/*/%.c $(D_INC) @$(MKDIR) $(D_OBJ) @$(CC) $(O_INC) $(W_FLAGS) -c $< -o $@ $(D_FLAGS) @echo "Compiling "$<"..." $(NAME): $(DF_OBJ) $(CC) $(O_INC) $(W_FLAGS) $(DF_OBJ) -o $@ $(D_FLAGS) clean: $(RM) $(D_OBJ) fclean: clean $(RM) $(NAME) re: fclean all