cppch = cppcheck cppch_args = --language=c++ --std=c++20 --enable=all --verbose ./*.{cpp,h} cpp_flags = c = cmake c_args = -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE= n = ninja n_args = -C d_folder = cmake-build-debug r_folder = cmake-build-release t = clang-tidy t_args = --config="" --format-style=google --checks="clang-diagnostic-*,clang-analyzer-*,google-*" --use-color=true -p $(d_folder) ./*.{cpp,h} v = valgrind v_env = VALGRIND= v_db = $(d_folder)_valgr v_rl = $(r_folder)_valgr .PHONY: check tidy build debug release valgrind test clean debug: if [ ! -d "$(d_folder)" ]; then mkdir -pv $(d_folder); fi $(v_env)false $(c) $(c_args)Debug -B $(d_folder) $(cpp_flags) && \ $(n) $(n_args) $(d_folder) release: if [ ! -d "$(r_folder)" ]; then mkdir -pv $(r_folder); fi $(v_env)false $(c) $(c_args)Release -B $(r_folder) $(cpp_flags) && \ $(n) $(n_args) $(r_folder) check: $(cppch) $(cppch_args) make tidy tidy: $(t) $(t_args) valgrind: valgrind-debug valgrind-debug: if [ ! -d "$(v_db)" ]; then mkdir -pv "$(v_db)"; fi $(v_env)true $(c) $(c_args)Debug -B "$(v_db)" $(cpp_flags) && \ $(n) $(n_args) "$(v_db)" $(v) ./$(v_db)/fortuna valgrind-release: if [ ! -d "$(v_rl)" ]; then mkdir -pv "$(v_rl)"; fi $(v_env)true $(c) $(c_args)Release -B "$(v_rl)" $(cpp_flags) && \ $(n) $(n_args) "$(v_rl)" $(v) ./$(v_rl)/fortuna build: debug test: check build clean: find . -iwholename '*cmake*' -not -name CMakeLists.txt -delete