From b9a35902a20f264aa0b516f7f3a4ff2490a3cf06 Mon Sep 17 00:00:00 2001
From: Ben Boeckel <mathstuf@gmail.com>
Date: Fri, 1 Jul 2016 20:19:23 -0400
Subject: [PATCH] llvm: allow cleaning LLVM's Visual Studio builds

The Visual Studio generators create a `clean` target that we can use.
---
 mk/llvm.mk | 4 ++++
 mk/rt.mk   | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git a/mk/llvm.mk b/mk/llvm.mk
index 602c2043029..d6f812049e0 100644
--- a/mk/llvm.mk
+++ b/mk/llvm.mk
@@ -59,6 +59,10 @@ clean-llvm$(1):
 	$$(Q)$$(CFG_NINJA) -C $$(CFG_LLVM_BUILD_DIR_$(1)) -t clean
 else ifeq ($$(findstring msvc,$(1)),msvc)
 clean-llvm$(1):
+	@$$(call E, clean: llvm)
+	$$(Q)$$(CFG_CMAKE) --build $$(CFG_LLVM_BUILD_DIR_$(1)) \
+		--config $$(LLVM_BUILD_CONFIG_MODE) \
+		--target clean
 else
 clean-llvm$(1):
 	@$$(call E, clean: llvm)
diff --git a/mk/rt.mk b/mk/rt.mk
index d0ab3102d7d..8113b683807 100644
--- a/mk/rt.mk
+++ b/mk/rt.mk
@@ -350,10 +350,17 @@ $$(COMPRT_LIB_$(1)): $$(COMPRT_DEPS) $$(MKFILE_DEPS) $$(LLVM_CONFIG_$$(CFG_BUILD
 		$$(COMPRT_DEFINES_$(1)) \
 		$$(COMPRT_BUILD_CC_$(1)) \
 		-G"$$(CFG_CMAKE_GENERATOR)"
+ifneq ($$(CFG_NINJA),)
+	$$(CFG_CMAKE) --build "$$(COMPRT_BUILD_DIR_$(1))" \
+		--target $$(COMPRT_BUILD_TARGET_$(1)) \
+		--config $$(LLVM_BUILD_CONFIG_MODE) \
+		-- $$(COMPRT_BUILD_ARGS_$(1))
+else
 	$$(Q)$$(CFG_CMAKE) --build "$$(COMPRT_BUILD_DIR_$(1))" \
 		--target $$(COMPRT_BUILD_TARGET_$(1)) \
 		--config $$(LLVM_BUILD_CONFIG_MODE) \
 		-- $$(COMPRT_BUILD_ARGS_$(1)) $$(MFLAGS)
+endif
 	$$(Q)cp "$$(COMPRT_OUTPUT_$(1))" $$@
 
 endif