feat: added tests
This commit is contained in:
parent
a7b7cda496
commit
f3377656e4
6 changed files with 234 additions and 10 deletions
50
Makefile
50
Makefile
|
|
@ -1,31 +1,61 @@
|
|||
CC = clang
|
||||
CFLAGS = -Wall -Wextra -Werror -O3
|
||||
CFLAGS = -Wall -Wextra -Werror -O2
|
||||
LDFLAGS = -flto
|
||||
SRC_DIR = srcs
|
||||
OBJ_DIR = obj
|
||||
BUILD_DIR = build
|
||||
HDR_DIR = hdrs
|
||||
SRCS = $(wildcard $(SRC_DIR)/*.c)
|
||||
OBJS = $(SRCS:$(SRC_DIR)/%.c=$(OBJ_DIR)/%.o)
|
||||
HDRS_DIR = hdrs
|
||||
LIBRARY = $(BUILD_DIR)/libft.a
|
||||
|
||||
# Source and object files for library
|
||||
SRCS = $(shell find $(SRC_DIR) -type f -name "*.c")
|
||||
OBJS = $(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))
|
||||
|
||||
# Test configuration
|
||||
TESTS_DIR = tests
|
||||
TESTS_SRCS = $(wildcard $(TESTS_DIR)/*.c)
|
||||
TESTS_OBJS = $(patsubst $(TESTS_DIR)/%.c,$(OBJ_DIR)/%.test.o,$(TESTS_SRCS))
|
||||
TESTS_BINS = $(patsubst $(TESTS_DIR)/%.c,$(BUILD_DIR)/%_test,$(TESTS_SRCS))
|
||||
|
||||
all: $(LIBRARY)
|
||||
|
||||
$(OBJ_DIR) $(BUILD_DIR):
|
||||
@mkdir -p $@
|
||||
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(HDR_DIR)/*.h | $(OBJ_DIR)
|
||||
$(CC) $(CFLAGS) -I$(HDR_DIR) -c $< -o $@
|
||||
# Build object files for library
|
||||
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c $(HDRS_DIR)/*.h | $(OBJ_DIR)
|
||||
@mkdir -p $(dir $@)
|
||||
@echo -e " CC\t$<"
|
||||
@$(CC) $(CFLAGS) -I$(HDRS_DIR) -c $< -o $@
|
||||
|
||||
$(LIBRARY): $(OBJS) | $(BUILD_DIR)
|
||||
$(AR) rcs $(LIBRARY) $(OBJS)
|
||||
@echo -e " AR\t$@"
|
||||
@$(AR) rcs $(LIBRARY) $(OBJS)
|
||||
# Build object files for tests
|
||||
$(OBJ_DIR)/%.test.o: $(TESTS_DIR)/%.c $(HDRS_DIR)/*.h | $(OBJ_DIR)
|
||||
@mkdir -p $(dir $@)
|
||||
@echo -e " CC\t$<"
|
||||
@$(CC) $(CFLAGS) -I$(HDRS_DIR) -I$(SRC_DIR) -c $< -o $@
|
||||
|
||||
# Link each test binary
|
||||
$(BUILD_DIR)/%_test: $(OBJ_DIR)/%.test.o $(LIBRARY) | $(BUILD_DIR)
|
||||
@echo -e " LD\t$@"
|
||||
@$(CC) $(CFLAGS) $< -L$(BUILD_DIR) -lft -o $@
|
||||
|
||||
tests: $(LIBRARY) $(TESTS_BINS)
|
||||
@for testbin in $(TESTS_BINS); do \
|
||||
./$$testbin; \
|
||||
done
|
||||
|
||||
clean:
|
||||
rm -rf $(OBJ_DIR)/*.o
|
||||
@echo " CLEAN"
|
||||
@rm -rf $(OBJ_DIR)
|
||||
|
||||
fclean: clean
|
||||
rm -rf $(BUILD_DIR)
|
||||
@echo " FCLEAN"
|
||||
@rm -rf $(BUILD_DIR)
|
||||
@rm -f $(TESTS_BIN)
|
||||
|
||||
re: fclean all
|
||||
|
||||
.PHONY: all clean fclean re
|
||||
.PHONY: all clean fclean re tests
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue