]> git.lizzy.rs Git - rust.git/blob - mk/dist.mk
make: Add all the make support for lib{native,green}
[rust.git] / mk / dist.mk
1 ######################################################################
2 # Distribution
3 ######################################################################
4
5 PKG_NAME := rust
6 PKG_DIR = $(PKG_NAME)-$(CFG_RELEASE)
7 PKG_TAR = $(PKG_DIR).tar.gz
8
9 ifdef CFG_ISCC
10 PKG_ISS = $(wildcard $(S)src/etc/pkg/*.iss)
11 PKG_ICO = $(S)src/etc/pkg/rust-logo.ico
12 PKG_EXE = $(PKG_DIR)-install.exe
13 endif
14
15 PKG_GITMODULES := $(S)src/libuv $(S)src/llvm $(S)src/gyp
16
17 PKG_FILES := \
18     $(S)COPYRIGHT                              \
19     $(S)LICENSE-APACHE                         \
20     $(S)LICENSE-MIT                            \
21     $(S)AUTHORS.txt                            \
22     $(S)CONTRIBUTING.md                        \
23     $(S)README.md                              \
24     $(S)RELEASES.txt                           \
25     $(S)configure $(S)Makefile.in              \
26     $(S)man                                    \
27     $(S)doc                                    \
28     $(addprefix $(S)src/,                      \
29       README.txt                               \
30       driver                                   \
31       librustpkg                               \
32       librustc                                 \
33       compiletest                              \
34       etc                                      \
35       libextra                                 \
36       libstd                                   \
37       libsyntax                                \
38       librustuv                                \
39       libgreen                                 \
40       libnative                                \
41       rt                                       \
42       librustdoc                               \
43       rustllvm                                 \
44       snapshots.txt                            \
45       test)                                    \
46     $(PKG_GITMODULES)                          \
47     $(filter-out Makefile config.stamp config.mk, \
48                  $(MKFILE_DEPS))
49
50 UNROOTED_PKG_FILES := $(patsubst $(S)%,./%,$(PKG_FILES))
51
52 ifdef CFG_ISCC
53 LICENSE.txt: $(S)COPYRIGHT $(S)LICENSE-APACHE $(S)LICENSE-MIT
54         cat $^ > $@
55
56 %.iss: $(S)src/etc/pkg/%.iss
57         cp $< $@
58
59 %.ico: $(S)src/etc/pkg/%.ico
60         cp $< $@
61
62 $(PKG_EXE): rust.iss modpath.iss LICENSE.txt rust-logo.ico \
63             $(PKG_FILES) $(CSREQ3_T_$(CFG_BUILD)_H_$(CFG_BUILD))
64         $(CFG_PYTHON) $(S)src/etc/copy-runtime-deps.py i686-pc-mingw32/stage3/bin
65         @$(call E, ISCC: $@)
66         $(Q)"$(CFG_ISCC)" $<
67 endif
68
69
70 $(PKG_TAR): $(PKG_FILES)
71         @$(call E, making dist dir)
72         $(Q)rm -Rf dist
73         $(Q)mkdir -p dist/$(PKG_DIR)
74         $(Q)tar \
75          -C $(S) \
76          --exclude-vcs \
77          --exclude=*~ \
78          --exclude=*/llvm/test/*/*.ll \
79          --exclude=*/llvm/test/*/*.td \
80          --exclude=*/llvm/test/*/*.s \
81          --exclude=*/llvm/test/*/*/*.ll \
82          --exclude=*/llvm/test/*/*/*.td \
83          --exclude=*/llvm/test/*/*/*.s \
84          -c $(UNROOTED_PKG_FILES) | tar -x -C dist/$(PKG_DIR)
85         $(Q)tar -czf $(PKG_TAR) -C dist $(PKG_DIR)
86         $(Q)rm -Rf dist
87
88 .PHONY: dist distcheck
89
90 ifdef CFG_WINDOWSY_$(CFG_BUILD)
91
92 dist: $(PKG_EXE)
93
94 distcheck: dist
95         @echo
96         @echo -----------------------------------------------
97         @echo $(PKG_EXE) ready for distribution
98         @echo -----------------------------------------------
99
100 else
101
102 dist: $(PKG_TAR)
103
104 distcheck: $(PKG_TAR)
105         $(Q)rm -Rf dist
106         $(Q)mkdir -p dist
107         @$(call E, unpacking $(PKG_TAR) in dist/$(PKG_DIR))
108         $(Q)cd dist && tar -xzf ../$(PKG_TAR)
109         @$(call E, configuring in dist/$(PKG_DIR)-build)
110         $(Q)mkdir -p dist/$(PKG_DIR)-build
111         $(Q)cd dist/$(PKG_DIR)-build && ../$(PKG_DIR)/configure
112         @$(call E, making 'check' in dist/$(PKG_DIR)-build)
113         $(Q)+make -C dist/$(PKG_DIR)-build check
114         @$(call E, making 'clean' in dist/$(PKG_DIR)-build)
115         $(Q)+make -C dist/$(PKG_DIR)-build clean
116         $(Q)rm -Rf dist
117         @echo
118         @echo -----------------------------------------------
119         @echo $(PKG_TAR) ready for distribution
120         @echo -----------------------------------------------
121
122 endif