about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2013-12-22 22:36:30 -0800
committerbors <bors@rust-lang.org>2013-12-22 22:36:30 -0800
commitf71c0dc2cd876f50252cdb907a6f05493c56d3cc (patch)
treee80ffaaad880f4478c3c485a0f7357b588c4f0d5
parent57724012ff4bc48e362102b30113359c2f45c28d (diff)
parent9d59e358d976965e81ac82819f4593870e090881 (diff)
downloadrust-f71c0dc2cd876f50252cdb907a6f05493c56d3cc.tar.gz
rust-f71c0dc2cd876f50252cdb907a6f05493c56d3cc.zip
auto merge of #11069 : alexcrichton/rust/issue-11067, r=brson
Turns out libuv's build system doesn't like us telling them that the build
directory is a relative location, as it always spits out a warning about a
circular dependency being dropped. By using an absolute path, turns out the
warnings isn't spit out, who knew?

Closes #11067
-rw-r--r--mk/rt.mk23
-rw-r--r--src/rt/libuv-auto-clean-trigger2
2 files changed, 19 insertions, 6 deletions
diff --git a/mk/rt.mk b/mk/rt.mk
index f27ed8714f4..7c33759ed81 100644
--- a/mk/rt.mk
+++ b/mk/rt.mk
@@ -186,25 +186,34 @@ else
 endif
 
 LIBUV_NAME_$(1) := $$(call CFG_STATIC_LIB_NAME_$(1),uv)
-LIBUV_LIB_$(1) := $$(RT_OUTPUT_DIR_$(1))/libuv/$$(LIBUV_NAME_$(1))
+LIBUV_DIR_$(1) := $$(RT_OUTPUT_DIR_$(1))/libuv
+LIBUV_LIB_$(1) := $$(LIBUV_DIR_$(1))/$$(LIBUV_NAME_$(1))
 
 LIBUV_MAKEFILE_$(1) := $$(CFG_BUILD_DIR)$$(RT_OUTPUT_DIR_$(1))/libuv/Makefile
 
+LIBUV_STAMP_$(1) = $$(LIBUV_DIR_$(1))/libuv-auto-clean-stamp
+
+$$(LIBUV_STAMP_$(1)): $(S)src/rt/libuv-auto-clean-trigger
+	$$(Q)rm -rf $$(LIBUV_DIR_$(1))
+	$$(Q)mkdir -p $$(@D)
+	touch $$@
+
 # libuv triggers a few warnings on some platforms
 LIBUV_CFLAGS_$(1) := $(subst -Werror,,$(CFG_GCCISH_CFLAGS_$(1)))
 
-$$(LIBUV_MAKEFILE_$(1)): $$(LIBUV_DEPS)
+$$(LIBUV_MAKEFILE_$(1)): $$(LIBUV_DEPS) $$(MKFILE_DEPS) $$(LIBUV_STAMP_$(1))
 	(cd $(S)src/libuv/ && \
 	 $$(CFG_PYTHON) ./gyp_uv.py -f make -Dtarget_arch=$$(LIBUV_ARCH_$(1)) \
 	   -D ninja \
 	   -DOS=$$(LIBUV_OSTYPE_$(1)) \
 	   -Goutput_dir=$$(@D) --generator-output $$(@D))
+	touch $$@
 
 # Windows has a completely different build system for libuv because of mingw. In
 # theory when we support msvc then we should be using gyp's msvc output instead
 # of mingw's makefile for windows
 ifdef CFG_WINDOWSY_$(1)
-$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
+$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(MKFILE_DEPS)
 	$$(Q)$$(MAKE) -C $$(S)src/libuv -f Makefile.mingw \
 		LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS_$(1))" \
 		CC="$$(CC_$(1)) $$(LIBUV_CFLAGS_$(1)) $$(SNAP_DEFINES)" \
@@ -213,15 +222,17 @@ $$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS)
 		V=$$(VERBOSE)
 	$$(Q)cp $$(S)src/libuv/libuv.a $$@
 else
-$$(LIBUV_LIB_$(1)): $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1))
-	$$(Q)$$(MAKE) -C $$(@D) \
+$$(LIBUV_LIB_$(1)): $$(LIBUV_DIR_$(1))/Release/libuv.a $$(MKFILE_DEPS)
+	$$(Q)ln -f $$< $$@
+$$(LIBUV_DIR_$(1))/Release/libuv.a: $$(LIBUV_DEPS) $$(LIBUV_MAKEFILE_$(1)) \
+				    $$(MKFILE_DEPS)
+	$$(Q)$$(MAKE) -C $$(LIBUV_DIR_$(1)) \
 		CFLAGS="$$(LIBUV_CFLAGS_$(1)) $$(SNAP_DEFINES)" \
 		LDFLAGS="$$(CFG_GCCISH_LINK_FLAGS_$(1))" \
 		CC="$$(CC_$(1))" \
 		CXX="$$(CXX_$(1))" \
 		AR="$$(AR_$(1))" \
 		$$(LIBUV_ARGS_$(1)) \
-		builddir="." \
 		BUILDTYPE=Release \
 		NO_LOAD="$$(LIBUV_NO_LOAD)" \
 		V=$$(VERBOSE)
diff --git a/src/rt/libuv-auto-clean-trigger b/src/rt/libuv-auto-clean-trigger
new file mode 100644
index 00000000000..ca0809cb090
--- /dev/null
+++ b/src/rt/libuv-auto-clean-trigger
@@ -0,0 +1,2 @@
+# Change the contents of this file to force a full rebuild of libuv
+2013-12-23