# **************************************************************************** # # # # ::: o_ :::::: ::: # # Makefile :+: / :+::+: :+: # # +:+ > +:++:+ +:+ # # By: whaffman +#+ +:+ +#++#++:++#++ # # +#+ +#+#+ +#++#+ +#+ \o/ # # Created: 2024/10/15 11:48:46 by whaffman #+#+# #+#+# #+# #+# | # # Updated: 2024/10/15 12:40:48 by whaffman ### ### ### ### / \ # # # # **************************************************************************** # NAME = push_swap SRC_PATH = src INC_PATH = inc LIB_PATH = lib OBJ_PATH = obj VPATH = $(SRC_PATH) SOURCES = push_swap.c OBJECTS = $(addprefix $(OBJ_PATH)/, $(SOURCES:.c=.o)) CC = cc RM = rm -rf CFLAGS = -Wall -Wextra -Werror -I./$(INC_PATH) LDFLAGS = -L./lib LDLIBS = -lft all: $(NAME) $(LIB_PATH)/libft.a: @echo "Make Libft and add the archive to lib and the header to inc" @$(MAKE) -sC libft @$(MAKE) -sC libft clean @mkdir -p $(INC_PATH) @mkdir -p $(LIB_PATH) @cp libft/inc/libft.h $(INC_PATH)/libft.h @mv libft/libft.a $(LIB_PATH)/libft.a $(NAME): $(OBJECTS) @echo "Linking the object files in the executable." @$(CC) $(CFLAGS) $(OBJECTS) $(LDFLAGS) $(LDLIBS) -o $(NAME) $(OBJ_PATH): @mkdir -p $@ $(OBJ_PATH)/%.o: %.c $(LIB_PATH)/libft.a | $(OBJ_PATH) @echo "Compiling $@." @$(CC) $(CFLAGS) -c $< $(LDFLAGS) $(LDLIBS) -o $@ clean: @echo "Delete object files and the object path" @$(RM) $(OBJECTS) $(OBJ_PATH) @$(MAKE) -sC libft clean fclean: clean @echo "Delete the executable and the library path" @$(RM) $(NAME) $(LIB_PATH) @$(MAKE) -sC libft fclean re: fclean all run: all @$(eval ARG = $(shell shuf -i 0-100 -n 5)) ./$(NAME) $(ARG) .PHONY: all bonus clean fclean re