SOURCE_DIRECTORY = source INCLUDE_DIRECTORY = include BUILD_DIRECTORY = build CC = clang++ CC_EXTENSION = cc CC_FLAGS = -std=c++23 -I $(INCLUDE_DIRECTORY) -Weverything -Wno-padded -Wno-c++98-compat -MMD CLANG_TIDY_CHECKS = '-*,bugprone-*,clang-analyzer-*,concurrency-*,cppcoreguildelines-*,llvm-*,misc-*,modernize-*,performance-*,portability-*,readability-*,-readability-magic-numbers,-llvm-header-guard' CLANG_TIDY_FLAGS = -checks=$(CLANG_TIDY_CHECKS) -header-filter=.* -warnings-as-errors=* -system-headers=0 SOURCES = $(wildcard $(SOURCE_DIRECTORY)/*.$(CC_EXTENSION)) OBJECTS = $(SOURCES:$(SOURCE_DIRECTORY)/%.$(CC_EXTENSION)=$(BUILD_DIRECTORY)/%.o) DEPS = $(OBJECTS:.o=.d) all: $(BUILD_DIRECTORY)/book_store format: clang-format -i $(SOURCES) $(wildcard $(INCLUDE_DIRECTORY)/*.hh) tidy: clang-tidy $(SOURCES) $(CLANG_TIDY_FLAGS) -- $(CC_FLAGS) $(BUILD_DIRECTORY)/%.o: $(SOURCE_DIRECTORY)/%.$(CC_EXTENSION) | $(BUILD_DIRECTORY) $(CC) $(CC_FLAGS) -MF $(@:.o=.d) -c $< -o $@ $(BUILD_DIRECTORY)/book_store: $(OBJECTS) $(CC) $^ -o $@ $(BUILD_DIRECTORY): mkdir -p $(BUILD_DIRECTORY) clean: rm -rf $(BUILD_DIRECTORY) -include $(DEPS) .PHONY: all format tidy clean