TEST += bitfield TEST += option TEST += timer TEST += log TEST += owning_mutex # -- INTERNALS ----------------------------------------------------------------- BINS = $(TEST:%=build/%) DEPS = $(TEST:%=build/%.d) # -- FLAGS --------------------------------------------------------------------- DEPS_GEN = -MMD SANITIZER = -fsanitize=address -fsanitize=undefined -fsanitize=leak -fno-omit-frame-pointer CXXFLAGS = -Og -g -Wall -Wextra -Werror -I. -std=c++14 $(DEPS_GEN) $(SANITIZER) LDFLAGS = $(SANITIZER) # -- RULES --------------------------------------------------------------------- all: lint build $(BINS) bear: bear intercept -- $(MAKE) all bear citnames run: all @for BIN in $(BINS); do \ echo "==> run $$BIN"; \ $$BIN; \ done lint: clang-format --dry-run -Werror $(shell find -name '*.cc' -o -name '*.h') clang-tidy test/*.cc -- $(CXXFLAGS) build/%: build/%.o $(CXX) -o $@ $< $(LDFLAGS) build/%.o: test/%.cc $(CXX) -c -o $@ $< $(CXXFLAGS) build: mkdir -p build clean: $(RM) -r build $(RM) compile_commands.json events.json # Since DEPS files contain rules, include at the end. -include $(DEPS)