]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | # Copyright 2014 The Rust Project Developers. See the COPYRIGHT |
2 | # file at the top-level directory of this distribution and at | |
3 | # http://rust-lang.org/COPYRIGHT. | |
4 | # | |
5 | # Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
6 | # http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
7 | # <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
8 | # option. This file may not be copied, modified, or distributed | |
9 | # except according to those terms. | |
10 | ||
223e47cc LB |
11 | ###################################################################### |
12 | # Distribution | |
13 | ###################################################################### | |
14 | ||
1a4d82fc JJ |
15 | # Primary targets: |
16 | # | |
17 | # * dist - make all distribution artifacts | |
18 | # * distcheck - sanity check dist artifacts | |
19 | # * dist-tar-src - source tarballs | |
20 | # * dist-tar-bins - Ad-hoc Unix binary installers | |
21 | # * dist-docs - Stage docs for upload | |
223e47cc | 22 | |
1a4d82fc JJ |
23 | PKG_NAME := $(CFG_PACKAGE_NAME) |
24 | DOC_PKG_NAME := rust-docs-$(CFG_PACKAGE_VERS) | |
25 | MINGW_PKG_NAME := rust-mingw-$(CFG_PACKAGE_VERS) | |
26 | ||
27 | # License suitable for displaying in a popup | |
28 | LICENSE.txt: $(S)COPYRIGHT $(S)LICENSE-APACHE $(S)LICENSE-MIT | |
29 | cat $^ > $@ | |
30 | ||
31 | ||
32 | ###################################################################### | |
33 | # Source tarball | |
34 | ###################################################################### | |
223e47cc | 35 | |
1a4d82fc | 36 | PKG_TAR = dist/$(PKG_NAME)-src.tar.gz |
223e47cc | 37 | |
1a4d82fc JJ |
38 | PKG_GITMODULES := $(S)src/llvm $(S)src/compiler-rt \ |
39 | $(S)src/rt/hoedown $(S)src/jemalloc | |
223e47cc LB |
40 | PKG_FILES := \ |
41 | $(S)COPYRIGHT \ | |
42 | $(S)LICENSE-APACHE \ | |
43 | $(S)LICENSE-MIT \ | |
970d7e83 | 44 | $(S)AUTHORS.txt \ |
1a4d82fc | 45 | $(S)CONTRIBUTING.md \ |
223e47cc | 46 | $(S)README.md \ |
1a4d82fc | 47 | $(S)RELEASES.md \ |
223e47cc LB |
48 | $(S)configure $(S)Makefile.in \ |
49 | $(S)man \ | |
223e47cc | 50 | $(addprefix $(S)src/, \ |
223e47cc | 51 | compiletest \ |
1a4d82fc JJ |
52 | doc \ |
53 | driver \ | |
223e47cc | 54 | etc \ |
d9579d0f | 55 | error-index-generator \ |
1a4d82fc | 56 | $(foreach crate,$(CRATES),lib$(crate)) \ |
c34b1796 | 57 | libcollectionstest \ |
1a4d82fc JJ |
58 | libcoretest \ |
59 | libbacktrace \ | |
223e47cc | 60 | rt \ |
223e47cc LB |
61 | rustllvm \ |
62 | snapshots.txt \ | |
1a4d82fc JJ |
63 | rust-installer \ |
64 | rustbook \ | |
223e47cc LB |
65 | test) \ |
66 | $(PKG_GITMODULES) \ | |
1a4d82fc JJ |
67 | $(filter-out config.stamp, \ |
68 | $(MKFILES_FOR_TARBALL)) | |
223e47cc LB |
69 | |
70 | UNROOTED_PKG_FILES := $(patsubst $(S)%,./%,$(PKG_FILES)) | |
71 | ||
223e47cc LB |
72 | $(PKG_TAR): $(PKG_FILES) |
73 | @$(call E, making dist dir) | |
1a4d82fc JJ |
74 | $(Q)rm -Rf tmp/dist/$(PKG_NAME) |
75 | $(Q)mkdir -p tmp/dist/$(PKG_NAME) | |
223e47cc LB |
76 | $(Q)tar \ |
77 | -C $(S) \ | |
78 | --exclude-vcs \ | |
79 | --exclude=*~ \ | |
80 | --exclude=*/llvm/test/*/*.ll \ | |
81 | --exclude=*/llvm/test/*/*.td \ | |
82 | --exclude=*/llvm/test/*/*.s \ | |
83 | --exclude=*/llvm/test/*/*/*.ll \ | |
84 | --exclude=*/llvm/test/*/*/*.td \ | |
85 | --exclude=*/llvm/test/*/*/*.s \ | |
1a4d82fc JJ |
86 | -c $(UNROOTED_PKG_FILES) | tar -x -C tmp/dist/$(PKG_NAME) |
87 | @$(call E, making $@) | |
88 | $(Q)tar -czf $(PKG_TAR) -C tmp/dist $(PKG_NAME) | |
89 | $(Q)rm -Rf tmp/dist/$(PKG_NAME) | |
223e47cc | 90 | |
1a4d82fc | 91 | dist-tar-src: $(PKG_TAR) |
223e47cc | 92 | |
1a4d82fc JJ |
93 | distcheck-tar-src: dist-tar-src |
94 | $(Q)rm -Rf tmp/distcheck/$(PKG_NAME) | |
95 | $(Q)rm -Rf tmp/distcheck/srccheck | |
96 | $(Q)mkdir -p tmp/distcheck | |
97 | @$(call E, unpacking $(PKG_TAR) in tmp/distcheck/$(PKG_NAME)) | |
98 | $(Q)cd tmp/distcheck && tar -xzf ../../$(PKG_TAR) | |
99 | @$(call E, configuring in tmp/distcheck/srccheck) | |
100 | $(Q)mkdir -p tmp/distcheck/srccheck | |
101 | $(Q)cd tmp/distcheck/srccheck && ../$(PKG_NAME)/configure | |
102 | @$(call E, making 'check' in tmp/distcheck/srccheck) | |
103 | $(Q)+make -C tmp/distcheck/srccheck check | |
104 | @$(call E, making 'clean' in tmp/distcheck/srccheck) | |
105 | $(Q)+make -C tmp/distcheck/srccheck clean | |
106 | $(Q)rm -Rf tmp/distcheck/$(PKG_NAME) | |
107 | $(Q)rm -Rf tmp/distcheck/srccheck | |
223e47cc | 108 | |
223e47cc | 109 | |
1a4d82fc JJ |
110 | ###################################################################### |
111 | # Unix binary installer tarballs | |
112 | ###################################################################### | |
113 | ||
1a4d82fc JJ |
114 | define DEF_INSTALLER |
115 | ||
116 | $$(eval $$(call DEF_PREPARE,dir-$(1))) | |
117 | ||
118 | dist-install-dir-$(1): PREPARE_HOST=$(1) | |
119 | dist-install-dir-$(1): PREPARE_TARGETS=$(2) | |
120 | dist-install-dir-$(1): PREPARE_DEST_DIR=tmp/dist/$$(PKG_NAME)-$(1)-image | |
121 | dist-install-dir-$(1): PREPARE_DIR_CMD=$(DEFAULT_PREPARE_DIR_CMD) | |
122 | dist-install-dir-$(1): PREPARE_BIN_CMD=$(DEFAULT_PREPARE_BIN_CMD) | |
123 | dist-install-dir-$(1): PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD) | |
124 | dist-install-dir-$(1): PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD) | |
125 | dist-install-dir-$(1): PREPARE_CLEAN=true | |
126 | dist-install-dir-$(1): prepare-base-dir-$(1) docs compiler-docs | |
1a4d82fc JJ |
127 | $$(Q)mkdir -p $$(PREPARE_DEST_DIR)/share/doc/rust |
128 | $$(Q)$$(PREPARE_MAN_CMD) $$(S)COPYRIGHT $$(PREPARE_DEST_DIR)/share/doc/rust | |
129 | $$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-APACHE $$(PREPARE_DEST_DIR)/share/doc/rust | |
130 | $$(Q)$$(PREPARE_MAN_CMD) $$(S)LICENSE-MIT $$(PREPARE_DEST_DIR)/share/doc/rust | |
131 | $$(Q)$$(PREPARE_MAN_CMD) $$(S)README.md $$(PREPARE_DEST_DIR)/share/doc/rust | |
85aaf69f SL |
132 | |
133 | prepare-overlay-$(1): | |
134 | $$(Q)rm -Rf tmp/dist/$$(PKG_NAME)-$(1)-overlay | |
135 | $$(Q)mkdir -p tmp/dist/$$(PKG_NAME)-$(1)-overlay | |
136 | $$(Q)cp $$(S)COPYRIGHT tmp/dist/$$(PKG_NAME)-$(1)-overlay/ | |
137 | $$(Q)cp $$(S)LICENSE-APACHE tmp/dist/$$(PKG_NAME)-$(1)-overlay/ | |
138 | $$(Q)cp $$(S)LICENSE-MIT tmp/dist/$$(PKG_NAME)-$(1)-overlay/ | |
139 | $$(Q)cp $$(S)README.md tmp/dist/$$(PKG_NAME)-$(1)-overlay/ | |
1a4d82fc | 140 | # This tiny morsel of metadata is used by rust-packaging |
85aaf69f | 141 | $$(Q)echo "$(CFG_VERSION)" > tmp/dist/$$(PKG_NAME)-$(1)-overlay/version |
1a4d82fc | 142 | |
85aaf69f | 143 | dist/$$(PKG_NAME)-$(1).tar.gz: dist-install-dir-$(1) prepare-overlay-$(1) |
1a4d82fc JJ |
144 | @$(call E, build: $$@) |
145 | # Copy essential gcc components into installer | |
146 | ifdef CFG_WINDOWSY_$(1) | |
147 | $$(Q)rm -Rf tmp/dist/win-rust-gcc-$(1) | |
148 | $$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py tmp/dist/$$(PKG_NAME)-$(1)-image tmp/dist/win-rust-gcc-$(1) $(1) | |
149 | $$(Q)cp -r $$(S)src/etc/third-party tmp/dist/$$(PKG_NAME)-$(1)-image/share/doc/ | |
150 | endif | |
151 | $$(Q)$$(S)src/rust-installer/gen-installer.sh \ | |
152 | --product-name=Rust \ | |
1a4d82fc JJ |
153 | --rel-manifest-dir=rustlib \ |
154 | --success-message=Rust-is-ready-to-roll. \ | |
155 | --image-dir=tmp/dist/$$(PKG_NAME)-$(1)-image \ | |
156 | --work-dir=tmp/dist \ | |
157 | --output-dir=dist \ | |
85aaf69f | 158 | --non-installed-overlay=tmp/dist/$$(PKG_NAME)-$(1)-overlay \ |
1a4d82fc JJ |
159 | --package-name=$$(PKG_NAME)-$(1) \ |
160 | --component-name=rustc \ | |
161 | --legacy-manifest-dirs=rustlib,cargo | |
162 | $$(Q)rm -R tmp/dist/$$(PKG_NAME)-$(1)-image | |
163 | ||
164 | dist-doc-install-dir-$(1): docs compiler-docs | |
165 | $$(Q)mkdir -p tmp/dist/$$(DOC_PKG_NAME)-$(1)-image/share/doc/rust | |
166 | $$(Q)cp -r doc tmp/dist/$$(DOC_PKG_NAME)-$(1)-image/share/doc/rust/html | |
223e47cc | 167 | |
1a4d82fc JJ |
168 | dist/$$(DOC_PKG_NAME)-$(1).tar.gz: dist-doc-install-dir-$(1) |
169 | @$(call E, build: $$@) | |
170 | $$(Q)$$(S)src/rust-installer/gen-installer.sh \ | |
171 | --product-name=Rust-Documentation \ | |
172 | --rel-manifest-dir=rustlib \ | |
173 | --success-message=Rust-documentation-is-installed. \ | |
174 | --image-dir=tmp/dist/$$(DOC_PKG_NAME)-$(1)-image \ | |
175 | --work-dir=tmp/dist \ | |
176 | --output-dir=dist \ | |
177 | --package-name=$$(DOC_PKG_NAME)-$(1) \ | |
178 | --component-name=rust-docs \ | |
179 | --legacy-manifest-dirs=rustlib,cargo \ | |
180 | --bulk-dirs=share/doc/rust/html | |
181 | $$(Q)rm -R tmp/dist/$$(DOC_PKG_NAME)-$(1)-image | |
182 | ||
183 | dist-mingw-install-dir-$(1): | |
184 | $$(Q)mkdir -p tmp/dist/rust-mingw-tmp-$(1)-image | |
185 | $$(Q)rm -Rf tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image | |
186 | $$(Q)$$(CFG_PYTHON) $$(S)src/etc/make-win-dist.py \ | |
187 | tmp/dist/rust-mingw-tmp-$(1)-image tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image $(1) | |
188 | ||
189 | dist/$$(MINGW_PKG_NAME)-$(1).tar.gz: dist-mingw-install-dir-$(1) | |
190 | @$(call E, build: $$@) | |
191 | $$(Q)$$(S)src/rust-installer/gen-installer.sh \ | |
192 | --product-name=Rust-MinGW \ | |
193 | --rel-manifest-dir=rustlib \ | |
194 | --success-message=Rust-MinGW-is-installed. \ | |
195 | --image-dir=tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image \ | |
196 | --work-dir=tmp/dist \ | |
197 | --output-dir=dist \ | |
198 | --package-name=$$(MINGW_PKG_NAME)-$(1) \ | |
199 | --component-name=rust-mingw \ | |
200 | --legacy-manifest-dirs=rustlib,cargo | |
201 | $$(Q)rm -R tmp/dist/$$(MINGW_PKG_NAME)-$(1)-image | |
202 | ||
203 | endef | |
204 | ||
205 | ifneq ($(CFG_ENABLE_DIST_HOST_ONLY),) | |
206 | $(foreach host,$(CFG_HOST),\ | |
207 | $(eval $(call DEF_INSTALLER,$(host),$(host)))) | |
223e47cc | 208 | else |
1a4d82fc JJ |
209 | $(foreach host,$(CFG_HOST),\ |
210 | $(eval $(call DEF_INSTALLER,$(host),$(CFG_TARGET)))) | |
211 | endif | |
212 | ||
213 | dist-install-dirs: $(foreach host,$(CFG_HOST),dist-install-dir-$(host)) | |
214 | ||
215 | ifdef CFG_WINDOWSY_$(CFG_BUILD) | |
216 | MAYBE_MINGW_TARBALLS=$(foreach host,$(CFG_HOST),dist/$(MINGW_PKG_NAME)-$(host).tar.gz) | |
217 | endif | |
218 | ||
219 | ifeq ($(CFG_DISABLE_DOCS),) | |
220 | MAYBE_DOC_TARBALLS=$(foreach host,$(CFG_HOST),dist/$(DOC_PKG_NAME)-$(host).tar.gz) | |
221 | endif | |
222 | ||
223 | dist-tar-bins: $(foreach host,$(CFG_HOST),dist/$(PKG_NAME)-$(host).tar.gz) \ | |
224 | $(MAYBE_DOC_TARBALLS) $(MAYBE_MINGW_TARBALLS) | |
225 | ||
226 | # Just try to run the compiler for the build host | |
227 | distcheck-tar-bins: dist-tar-bins | |
228 | @$(call E, checking binary tarball) | |
229 | $(Q)rm -Rf tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD) | |
230 | $(Q)rm -Rf tmp/distcheck/tarbininstall | |
231 | $(Q)mkdir -p tmp/distcheck | |
232 | $(Q)cd tmp/distcheck && tar -xzf ../../dist/$(PKG_NAME)-$(CFG_BUILD).tar.gz | |
233 | $(Q)mkdir -p tmp/distcheck/tarbininstall | |
234 | $(Q)sh tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix=tmp/distcheck/tarbininstall | |
235 | $(Q)sh tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD)/install.sh --prefix=tmp/distcheck/tarbininstall --uninstall | |
236 | $(Q)rm -Rf tmp/distcheck/$(PKG_NAME)-$(CFG_BUILD) | |
237 | $(Q)rm -Rf tmp/distcheck/tarbininstall | |
238 | ||
239 | ###################################################################### | |
240 | # Docs | |
241 | ###################################################################### | |
242 | ||
243 | # Just copy the docs to a folder under dist with the appropriate name | |
244 | # for uploading to S3 | |
245 | dist-docs: docs compiler-docs | |
246 | $(Q) rm -Rf dist/doc | |
247 | $(Q) mkdir -p dist/doc/ | |
248 | $(Q) cp -r doc dist/doc/$(CFG_PACKAGE_VERS) | |
223e47cc | 249 | |
1a4d82fc JJ |
250 | distcheck-docs: dist-docs |
251 | ||
252 | ###################################################################### | |
253 | # Primary targets (dist, distcheck) | |
254 | ###################################################################### | |
255 | ||
256 | MAYBE_DIST_TAR_SRC=dist-tar-src | |
257 | MAYBE_DISTCHECK_TAR_SRC=distcheck-tar-src | |
258 | ||
259 | # FIXME #13224: On OS X don't produce tarballs simply because --exclude-vcs don't work. | |
260 | # This is a huge hack because I just don't have time to figure out another solution. | |
261 | ifeq ($(CFG_OSTYPE), apple-darwin) | |
262 | MAYBE_DIST_TAR_SRC= | |
263 | MAYBE_DISTCHECK_TAR_SRC= | |
264 | endif | |
265 | ||
266 | # Don't bother with source tarballs on windows just because we historically haven't. | |
267 | ifeq ($(CFG_OSTYPE), pc-windows-gnu) | |
268 | MAYBE_DIST_TAR_SRC= | |
269 | MAYBE_DISTCHECK_TAR_SRC= | |
270 | endif | |
271 | ||
272 | ifneq ($(CFG_DISABLE_DOCS),) | |
273 | MAYBE_DIST_DOCS= | |
274 | MAYBE_DISTCHECK_DOCS= | |
275 | else | |
276 | MAYBE_DIST_DOCS=dist-docs | |
277 | MAYBE_DISTCHECK_DOCS=distcheck-docs | |
278 | endif | |
279 | ||
280 | dist: $(MAYBE_DIST_TAR_SRC) dist-tar-bins $(MAYBE_DIST_DOCS) | |
281 | ||
282 | distcheck: $(MAYBE_DISTCHECK_TAR_SRC) distcheck-tar-bins $(MAYBE_DISTCHECK_DOCS) | |
283 | $(Q)rm -Rf tmp/distcheck | |
223e47cc LB |
284 | @echo |
285 | @echo ----------------------------------------------- | |
1a4d82fc | 286 | @echo "Rust ready for distribution (see ./dist)" |
223e47cc LB |
287 | @echo ----------------------------------------------- |
288 | ||
1a4d82fc | 289 | .PHONY: dist distcheck |