# **************************************************************************** # # # # ::: :::::::: # # Makefile :+: :+: :+: # # +:+ +:+ +:+ # # By: ruiferna +#+ +:+ +#+ # # +#+#+#+#+#+ +#+ # # Created: 2025/09/22 00:00:00 by ruiferna #+# #+# # # Updated: 2025/09/22 17:15:15 by ruiferna ### ########.fr # # # # **************************************************************************** # # Program name NAME = powerset # Compiler and flags CC = gcc CFLAGS = -Wall -Wextra -Werror # Source files SRCS = powerset.c OBJS = $(SRCS:.c=.o) # Header files HEADERS = powerset.h # Colors for output GREEN = \033[0;32m RED = \033[0;31m RESET = \033[0m # Default target all: $(NAME) # Build the program $(NAME): $(OBJS) @echo "$(GREEN)Linking $(NAME)...$(RESET)" @$(CC) $(CFLAGS) $(OBJS) -o $(NAME) @echo "$(GREEN)✓ $(NAME) compiled successfully!$(RESET)" # Compile source files to object files %.o: %.c $(HEADERS) @echo "$(GREEN)Compiling $<...$(RESET)" @$(CC) $(CFLAGS) -c $< -o $@ # Clean object files clean: @echo "$(RED)Cleaning object files...$(RESET)" @rm -f $(OBJS) # Clean everything fclean: clean @echo "$(RED)Cleaning $(NAME)...$(RESET)" @rm -f $(NAME) # Rebuild everything re: fclean all # Test the program with the examples from the subject test: $(NAME) @echo "$(GREEN)Running tests...$(RESET)" @echo "\n$(GREEN)Test 1: powerset 3 1 0 2 4 5 3$(RESET)" @./$(NAME) 3 1 0 2 4 5 3 @echo "\n$(GREEN)Test 2: powerset 12 5 2 1 8 4 3 7 11$(RESET)" @./$(NAME) 12 5 2 1 8 4 3 7 11 @echo "\n$(GREEN)Test 3: powerset 0 1 -1$(RESET)" @./$(NAME) 0 1 -1 @echo "\n$(GREEN)Test 4: powerset 7 3 8 2 (should be empty)$(RESET)" @./$(NAME) 7 3 8 2 @echo "$(GREEN)✓ All tests completed!$(RESET)" # Help help: @echo "Available targets:" @echo " all - Build the program (default)" @echo " clean - Remove object files" @echo " fclean - Remove object files and executable" @echo " re - Rebuild everything" @echo " test - Run test cases" @echo " help - Show this help message" # Declare phony targets .PHONY: all clean fclean re test help