EXE=hello_w all: $(EXE) $(EXE)_asan $(EXE)_msan $(EXE)_tsan $(EXE)_ubsan $(EXE): hello_w.c cc -g -Wall -Wextra hello_w.c -o $(EXE) -pthread $(EXE)_asan: hello_w.c clang -g -Wall -Wextra -fsanitize=address hello_w.c -o $(EXE)_asan -pthread $(EXE)_msan: hello_w.c clang -g -Wall -Wextra -fsanitize=memory hello_w.c -o $(EXE)_msan -pthread $(EXE)_tsan: hello_w.c clang -g -Wall -Wextra -fsanitize=thread hello_w.c -o $(EXE)_tsan -pthread $(EXE)_ubsan: hello_w.c clang -g -Wall -Wextra -fsanitize=undefined hello_w.c -o $(EXE)_ubsan -pthread .PHONY: memcheck memcheck: valgrind ./$(EXE) .PHONY: helgrind helgrind: valgrind --tool=helgrind --quiet ./$(EXE) .PHONY: rebuild rebuild: clean $(EXE) .PHONY: lint lint: cpplint --filter=-readability/casting hello_w.c .PHONY: gitignore gitignore: echo $(EXE) $(EXE)_asan $(EXE)_msan $(EXE)_tsan $(EXE)_ubsan | tr " " "\n" > .gitignore .PHONY: clean clean: rm -rf $(EXE) $(EXE)_asan $(EXE)_msan $(EXE)_tsan $(EXE)_ubsan