summaryrefslogtreecommitdiff
path: root/config.mk
diff options
context:
space:
mode:
Diffstat (limited to 'config.mk')
-rw-r--r--config.mk32
1 files changed, 32 insertions, 0 deletions
diff --git a/config.mk b/config.mk
new file mode 100644
index 0000000..5637879
--- /dev/null
+++ b/config.mk
@@ -0,0 +1,32 @@
+# Input & Output Directories
+SOURCE_DIRECTORY = source
+INCLUDE_DIRECTORY = include
+BUILD_DIRECTORY = build
+
+# Clang-Tidy Configuration
+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) -warnings-as-errors=* -quiet
+
+# All Sources & Objects
+SOURCES = $(wildcard $(SOURCE_DIRECTORY)/*.$(CC_EXTENSION))
+OBJECTS = $(SOURCES:$(SOURCE_DIRECTORY)/%.$(CC_EXTENSION)=$(BUILD_DIRECTORY)/%.o)
+
+# Main Sources & Objects
+MAIN_SOURCES = $(filter-out $(SOURCE_DIRECTORY)/test.cc, $(SOURCES))
+MAIN_OBJECTS = $(MAIN_SOURCES:$(SOURCE_DIRECTORY)/%.$(CC_EXTENSION)=$(BUILD_DIRECTORY)/%.o)
+
+# Test Sources & Objects
+TEST_SOURCES = $(filter-out $(SOURCE_DIRECTORY)/main.cc, $(SOURCES))
+TEST_OBJECTS = $(TEST_SOURCES:$(SOURCE_DIRECTORY)/%.$(CC_EXTENSION)=$(BUILD_DIRECTORY)/%.o)
+
+# Compiler Configuration
+CC = clang++
+CC_EXTENSION = cc
+CC_FLAGS = -std=c++23 -I $(INCLUDE_DIRECTORY) -Weverything -Wno-padded -Wno-c++98-compat -MMD -W-noc++98-compat-pedantic
+CC_DEPENDENCIES = $(OBJECTS:.o=.d)
+
+# Output Configuration
+NAME = book_store
+MAIN_OUTPUT = $(BUILD_DIRECTORY)/$(NAME)
+TEST_OUTPUT = $(BUILD_DIRECTORY)/$(NAME)_test
+