################################################################################ ################################## VARIABLES ################################### ################################################################################ NAME := philo CC = cc CFLAGS = -Wall -Wextra -Werror HEADERS = -Iinclude VPATH := src SRC := main.c init.c ft_utils.c simulation.c philo_eat.c OBJ_DIR := _obj OBJ := $(addprefix $(OBJ_DIR)/, $(SRC:%.c=%.o)) ################################################################################ #################################### RULES ##################################### ################################################################################ all: $(NAME) $(NAME): $(OBJ) @$(CC) $(CFLAGS) $(HEADERS) $^ -o $@ @echo "[$(NAME)] Created binary." $(OBJ_DIR)/%.o: %.c @if [ ! -d "$(dir $@)" ]; then \ mkdir -p $(dir $@); \ fi @$(CC) $(CFLAGS) $(HEADERS) -c $< -o $@ @echo "[$(NAME)] Compiled $<." clean: @if [ -d "$(OBJ_DIR)" ]; then \ rm -rf $(OBJ_DIR); \ echo "[$(NAME)] Removed object files."; \ fi fclean: clean @if [ -f "$(NAME)" ]; then \ rm -f $(NAME); \ echo "[$(NAME)] Removed binary."; \ fi re: fclean all .PHONY: all clean fclean re ################################################################################ ################################################################################