about summary refs log tree commit diff
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2014-12-29 16:47:21 -0800
committerBrian Anderson <banderson@mozilla.com>2014-12-29 17:26:05 -0800
commit7628806997c4ace2dc334f4d88bfc0bf8adc583a (patch)
treeb562c892d09439b9e46d6493203d68bfb8bf48c6
parent022d48566be471cc0e29aa0b0c552b3684529866 (diff)
downloadrust-7628806997c4ace2dc334f4d88bfc0bf8adc583a.tar.gz
rust-7628806997c4ace2dc334f4d88bfc0bf8adc583a.zip
mk: Package mingw components in unix installer on windows
This puts stdc++ and the unwinding dll into the main package
and creates a separate rust-mingw package for everything else.
-rw-r--r--mk/dist.mk35
-rw-r--r--src/etc/make-win-dist.py6
2 files changed, 33 insertions, 8 deletions
diff --git a/mk/dist.mk b/mk/dist.mk
index 67015820133..1fa1a85e55b 100644
--- a/mk/dist.mk
+++ b/mk/dist.mk
@@ -24,6 +24,7 @@
 
 PKG_NAME := $(CFG_PACKAGE_NAME)
 DOC_PKG_NAME := rust-docs-$(CFG_PACKAGE_VERS)
+MINGW_PKG_NAME := rust-mingw-$(CFG_PACKAGE_VERS)
 
 # License suitable for displaying in a popup
 LICENSE.txt: $(S)COPYRIGHT $(S)LICENSE-APACHE $(S)LICENSE-MIT
@@ -238,6 +239,12 @@ dist-install-dir-$(1): prepare-base-dir-$(1) docs compiler-docs
 
 dist/$$(PKG_NAME)-$(1).tar.gz: dist-install-dir-$(1)
 	@$(call E, build: $$@)
+# Copy essential gcc components into installer
+ifdef CFG_WINDOWSY_$(1)
+	$$(Q)rm -Rf dist/win-rust-gcc-$(1)
+	$$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py tmp/dist/$$(PKG_NAME)-$(1)-image dist/win-rust-gcc-$(1) $(1)
+	$$(Q)cp -r $$(S)src/etc/third-party tmp/dist/$$(PKG_NAME)-$(1)-image/share/doc/
+endif
 	$$(Q)$$(S)src/rust-installer/gen-installer.sh \
 		--product-name=Rust \
 		--verify-bin=rustc \
@@ -271,6 +278,25 @@ dist/$$(DOC_PKG_NAME)-$(1).tar.gz: dist-doc-install-dir-$(1)
 		--bulk-dirs=share/doc/rust/html
 	$$(Q)rm -R tmp/dist/$$(DOC_PKG_NAME)-$(1)-image
 
+dist-mingw-install-dir-$(1):
+	$$(Q)mkdir -p tmp/dist/rust-mingw-tmp-$(1)-image
+	$$(Q)rm -Rf tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image
+	$$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py \
+		tmp/dist/rust-mingw-tmp-$(1)-image tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image $(1)
+
+dist/$$(MINGW_PKG_NAME)-$(1).tar.gz: dist-mingw-install-dir-$(1)
+	@$(call E, build: $$@)
+	$$(Q)$$(S)src/rust-installer/gen-installer.sh \
+		--product-name=Rust-MinGW \
+		--rel-manifest-dir=rustlib \
+		--success-message=Rust-MinGW-is-installed. \
+		--image-dir=tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image \
+		--work-dir=tmp/dist \
+		--output-dir=dist \
+		--package-name=$$(MINGW_PKG_NAME)-$(1) \
+		--component-name=rust-mingw \
+		--legacy-manifest-dirs=rustlib,cargo
+	$$(Q)rm -R tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image
 
 endef
 
@@ -284,11 +310,16 @@ endif
 
 dist-install-dirs: $(foreach host,$(CFG_HOST),dist-install-dir-$(host))
 
+ifdef CFG_WINDOWSY_$(CFG_BUILD)
+MAYBE_MINGW_TARBALLS=$(foreach host,$(CFG_HOST),dist/$(MINGW_PKG_NAME)-$(host).tar.gz)
+endif
+
 ifneq ($(CFG_DISABLE_DOCS),)
-dist-tar-bins: $(foreach host,$(CFG_HOST),dist/$(PKG_NAME)-$(host).tar.gz)
+dist-tar-bins: $(foreach host,$(CFG_HOST),dist/$(PKG_NAME)-$(host).tar.gz) $(MAYBE_MINGW_TARBALLS)
 else
 dist-tar-bins: $(foreach host,$(CFG_HOST),dist/$(PKG_NAME)-$(host).tar.gz) \
-               $(foreach host,$(CFG_HOST),dist/$(DOC_PKG_NAME)-$(host).tar.gz)
+               $(foreach host,$(CFG_HOST),dist/$(DOC_PKG_NAME)-$(host).tar.gz) \
+               $(MAYBE_MINGW_TARBALLS)
 endif
 
 # Just try to run the compiler for the build host
diff --git a/src/etc/make-win-dist.py b/src/etc/make-win-dist.py
index 95e647c91cf..ea2a98db2dc 100644
--- a/src/etc/make-win-dist.py
+++ b/src/etc/make-win-dist.py
@@ -114,11 +114,5 @@ def make_win_dist(rust_root, gcc_root, target_triple):
     for src in target_libs:
         shutil.copy(src, target_lib_dir)
 
-    # Copy license files
-    lic_dir = os.path.join(rust_root, "bin", "third-party")
-    if os.path.exists(lic_dir):
-        shutil.rmtree(lic_dir) # copytree() won't overwrite existing files
-    shutil.copytree(os.path.join(os.path.dirname(__file__), "third-party"), lic_dir)
-
 if __name__=="__main__":
     make_win_dist(sys.argv[1], sys.argv[2], sys.argv[3])