summaryrefslogtreecommitdiff
path: root/config.mk
blob: 56378792f44d9763c6aeb2904b5cbec9ddbfa54c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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