summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-05-26 18:01:25 -0700
committerFuwn <[email protected]>2024-05-26 18:01:25 -0700
commitfa3595d69f817ad1a67b7189ed65dbde1ba9f77d (patch)
treeae85e0ba5f132ce89021cc1e4bcea4e642ffee6c /Makefile
downloadcst_136_assignment_eight-fa3595d69f817ad1a67b7189ed65dbde1ba9f77d.tar.xz
cst_136_assignment_eight-fa3595d69f817ad1a67b7189ed65dbde1ba9f77d.zip
feat: initial commit
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile35
1 files changed, 35 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..a962a6f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,35 @@
+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