about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2016-06-27 18:59:55 -0700
committerAlex Crichton <alex@alexcrichton.com>2016-06-27 18:59:55 -0700
commit3fd411e017ca78eb814272a3b3a71c8b755c4550 (patch)
tree8917d3f553e2480661ebf443e4d4341b54a83768
parentea1818f1ca644154100a735a41e19df3eefa7e09 (diff)
downloadrust-3fd411e017ca78eb814272a3b3a71c8b755c4550.tar.gz
rust-3fd411e017ca78eb814272a3b3a71c8b755c4550.zip
mk: Make some LLVM building support more robust
* Implement the clean-llvm target for those cases where makefiles are being used
* Have all cross-compiled LLVMs depend on the **host** LLVM as they'll require
  the llvm-tablegen executable from there
-rw-r--r--mk/llvm.mk14
1 files changed, 13 insertions, 1 deletions
diff --git a/mk/llvm.mk b/mk/llvm.mk
index cc868a49e4b..6d8601f3dad 100644
--- a/mk/llvm.mk
+++ b/mk/llvm.mk
@@ -27,12 +27,18 @@ endif
 
 define DEF_LLVM_RULES
 
+ifeq ($(1),$$(CFG_BUILD))
+LLVM_DEPS_TARGET_$(1) := $$(LLVM_DEPS)
+else
+LLVM_DEPS_TARGET_$(1) := $$(LLVM_DEPS) $$(LLVM_CONFIG_$$(CFG_BUILD))
+endif
+
 # If CFG_LLVM_ROOT is defined then we don't build LLVM ourselves
 ifeq ($(CFG_LLVM_ROOT),)
 
 LLVM_STAMP_$(1) = $$(CFG_LLVM_BUILD_DIR_$(1))/llvm-auto-clean-stamp
 
-$$(LLVM_CONFIG_$(1)): $$(LLVM_DEPS) $$(LLVM_STAMP_$(1))
+$$(LLVM_CONFIG_$(1)): $$(LLVM_DEPS_TARGET_$(1)) $$(LLVM_STAMP_$(1))
 	@$$(call E, cmake: llvm)
 ifeq ($$(findstring msvc,$(1)),msvc)
 	$$(Q)$$(CFG_CMAKE) --build $$(CFG_LLVM_BUILD_DIR_$(1)) \
@@ -42,7 +48,13 @@ else
 endif
 	$$(Q)touch $$(LLVM_CONFIG_$(1))
 
+ifeq ($$(findstring msvc,$(1)),msvc)
 clean-llvm$(1):
+else
+clean-llvm$(1):
+	@$$(call E, clean: llvm)
+	$$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) clean
+endif
 
 else
 clean-llvm$(1):