aboutsummaryrefslogtreecommitdiff
path: root/test/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'test/Makefile')
-rw-r--r--test/Makefile52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..3f31059
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,52 @@
+MAKE_ARGS = --no-print-directory
+
+NAME = test_libft
+
+BUILD_DIR = build
+LIBFT_DIR = ..
+CTEST_DIR = ctest
+
+CC = gcc
+CCFLAGS = -Wall -Wextra -I$(LIBFT_DIR)/include -I$(CTEST_DIR)
+LDFLAGS = -L$(LIBFT_DIR) -lft
+
+HEADER = $(shell find . -name "*.h")
+SRC = $(shell find . -name "*_test.c")
+SRC += $(shell find $(CTEST_DIR) -name "*.c")
+OBJ = $(SRC:%.c=$(BUILD_DIR)/%.o)
+
+all: make_build_dirs $(NAME)
+
+run_raw: all
+ @./$(NAME)
+
+make_build_dirs:
+ @for dir in $$(find . -not -path "*build*" -type d | sed 's/.*/$(BUILD_DIR)\/&/'); \
+ do \
+ if [ ! -d "$$dir" ]; then \
+ mkdir -p $$dir; echo "Making build dir: $$dir"; fi \
+ done
+
+$(NAME): $(OBJ) libft_all
+ @echo "Test: Linking $@"
+ @$(CC) -o $@ $(OBJ) $(LDFLAGS)
+
+$(BUILD_DIR)/%.o: %.c $(HEADER)
+ @echo "Test: Compiling: $@"
+ @$(CC) $(CCFLAGS) -c -o $@ $<
+
+clean:
+ @echo "Test: Removing objects"
+ @$(RM) -r $(BUILD_DIR)
+
+fclean: clean
+ @echo "Test: Removing library"
+ @$(RM) $(NAME)
+ @echo "Test: Removing libft"
+ @$(MAKE) $(MAKE_ARGS) -C $(LIBFT_DIR) fclean
+
+re: fclean all
+
+libft_all:
+ @echo "Test: Making libft"
+ @$(MAKE) $(MAKE_ARGS) -C $(LIBFT_DIR) all