diff --git a/Makefile b/Makefile
index b63337ee4645200f47d4df52aa414e9d01e82083..07ee51e9b5f7834e6fef7ee15713a6307ee1e187 100644
--- a/Makefile
+++ b/Makefile
@@ -35,33 +35,20 @@ debug:
 	$(MAKE) build BUILDTYPE=$@
 
 define sanitizer
-.PHONY: sanitizer-$1
-sanitizer-$1: export CC = clang
-sanitizer-$1: export CXX = clang++
-sanitizer-$1:
-	rm -f build
-	$(MAKE) build BUILDTYPE=debug BUILDDIR=$@ \
-		EMPER_B_SANITIZE=$1 EMPER_B_LUNDEF=false
+rm -rf build
+$(MAKE) build \
+	BUILDDIR=build-$@ \
+	CC=clang CXX=clang++ \
+	EMPER_B_SANITIZE=$(subst sanitize-,,$@) EMPER_B_LUNDEF=false
 endef
 
-$(sanitizer) memory
-$(sanitizer) address
-
-.PHONY: debug-msan
-debug-msan: export CC = clang
-debug-msan: export CXX = clang++
-debug-msan:
-	rm -f build
-	$(MAKE) build BUILDTYPE=debug BUILDDIR=$@ \
-		EMPER_B_SANITIZE=memory EMPER_B_LUNDEF=false
+PHONY: sanitize-memory
+sanitize-memory:
+	$(sanitizer)
 
-.PHONY: debug-asan
-debug-asan: export CC = clang
-debug-asan: export CXX = clang++
-debug-asan:
-	rm -f build
-	$(MAKE) build BUILDTYPE=debug BUILDDIR=$@ \
-		EMPER_B_SANITIZE=address EMPER_B_LUNDEF=false
+PHONY: sanitize-address
+sanitize-address:
+	$(sanitizer)
 
 .PHONY: fast-static-analysis
 fast-static-analysis: all check-format check-license doc