]> git.lizzy.rs Git - rust.git/blob - mk/host.mk
auto merge of #10165 : dcrewi/rust/missing-doc-on-private-trait, r=cmr
[rust.git] / mk / host.mk
1 # Copyright 2012 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
11 # CP_HOST_STAGE_N template: arg 1 is the N we're promoting *from*, arg
12 # 2 is N+1. Must be invoked to promote target artifacts to host
13 # artifacts for stage 1-3 (stage0 host artifacts come from the
14 # snapshot).  Arg 3 is the triple we're copying FROM and arg 4 is the
15 # triple we're copying TO.
16 #
17 # The easiest way to read this template is to assume we're promoting
18 # stage1 to stage2 and mentally gloss $(1) as 1, $(2) as 2.
19
20 define CP_HOST_STAGE_N
21
22 # Host libraries and executables (stage$(2)/bin/rustc and its runtime needs)
23
24 # Note: $(3) and $(4) are both the same!
25
26 $$(HBIN$(2)_H_$(4))/rustc$$(X_$(4)): \
27         $$(TBIN$(1)_T_$(4)_H_$(3))/rustc$$(X_$(4)) \
28         $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
29         $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)) \
30         $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)) \
31         $$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
32         $$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \
33         $$(HLIBRUSTUV_DEFAULT$(2)_H_$(4)) \
34         | $$(HBIN$(2)_H_$(4))/
35
36         @$$(call E, cp: $$@)
37         $$(Q)cp $$< $$@
38
39 $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)): \
40         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
41         $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)) \
42         $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
43         $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)) \
44         $$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
45         $$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \
46         $$(HLIBRUSTUV_DEFAULT$(2)_H_$(4)) \
47         | $$(HLIB$(2)_H_$(4))/
48
49         @$$(call E, cp: $$@)
50         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_GLOB_$(4)),$$(notdir $$@))
51         $$(Q)cp $$< $$@
52         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_GLOB_$(4)) \
53                 $(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_DSYM_GLOB_$(4))) \
54                 $$(HLIB$(2)_H_$(4))
55         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_GLOB_$(4)),$$(notdir $$@))
56
57 $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)): \
58         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBSYNTAX_$(4)) \
59         $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
60         $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)) \
61         $$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
62         $$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \
63         $$(HLIBRUSTUV_DEFAULT$(2)_H_$(4)) \
64         | $$(HLIB$(2)_H_$(4))/
65         @$$(call E, cp: $$@)
66         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBSYNTAX_GLOB_$(4)),$$(notdir $$@))
67         $$(Q)cp $$< $$@
68         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_GLOB_$(4)) \
69                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB_$(4))) \
70                 $$(HLIB$(2)_H_$(4))
71         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBSYNTAX_GLOB_$(4)),$$(notdir $$@))
72
73 $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)): \
74         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUNTIME_$(4)) \
75         | $$(HLIB$(2)_H_$(4))/
76         @$$(call E, cp: $$@)
77         $$(Q)cp $$< $$@
78
79 $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)): \
80         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \
81         $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
82         | $$(HLIB$(2)_H_$(4))/
83         @$$(call E, cp: $$@)
84         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_GLOB_$(4)),$$(notdir $$@))
85         $$(Q)cp $$< $$@
86 # Subtle: We do not let the shell expand $$(STDLIB_DSYM_GLOB) directly rather
87 # we use Make's $$(wildcard) facility. The reason is that, on mac, when using
88 # USE_SNAPSHOT_STDLIB, we copy the std.dylib file out of the snapshot.
89 # In that case, there is no .dSYM file.  Annoyingly, bash then refuses to expand
90 # glob, and cp reports an error because libstd-*.dylib.dsym does not exist.
91 # Make instead expands the glob to nothing, which gives us the correct behavior.
92 # (Copy .dsym file if it exists, but do nothing otherwise)
93         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_GLOB_$(4)) \
94                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_DSYM_GLOB_$(4))) \
95                 $$(HLIB$(2)_H_$(4))
96         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_GLOB_$(4)),$$(notdir $$@))
97
98 $$(HLIB$(2)_H_$(4))/$(CFG_EXTRALIB_$(4)): \
99         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \
100         $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
101         $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
102         | $$(HLIB$(2)_H_$(4))/
103         @$$(call E, cp: $$@)
104         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_GLOB_$(4)),$$(notdir $$@))
105         $$(Q)cp $$< $$@
106         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(EXTRALIB_GLOB_$(4)) \
107                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(EXTRALIB_DSYM_GLOB_$(4))) \
108                 $$(HLIB$(2)_H_$(4))
109         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_GLOB_$(4)),$$(notdir $$@))
110
111 $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTUV_$(4)): \
112         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTUV_$(4)) \
113         $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
114         $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)) \
115         | $$(HLIB$(2)_H_$(4))/
116         @$$(call E, cp: $$@)
117         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
118         $$(Q)cp $$< $$@
119         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTUV_GLOB_$(4)) \
120                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTUV_DSYM_GLOB_$(4))) \
121                 $$(HLIB$(2)_H_$(4))
122         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
123
124 $$(HLIB$(2)_H_$(4))/libstd.rlib: \
125         $$(TLIB$(1)_T_$(4)_H_$(3))/libstd.rlib \
126         $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME_$(4)) \
127         | $$(HLIB$(2)_H_$(4))/
128         @$$(call E, cp: $$@)
129         $$(Q)cp $$< $$@
130
131 $$(HLIB$(2)_H_$(4))/libextra.rlib: \
132         $$(TLIB$(1)_T_$(4)_H_$(3))/libextra.rlib \
133         $$(HLIB$(2)_H_$(4))/libstd.rlib \
134         $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME_$(4)) \
135         | $$(HLIB$(2)_H_$(4))/
136         @$$(call E, cp: $$@)
137         $$(Q)cp $$< $$@
138
139 $$(HLIB$(2)_H_$(4))/librustc.rlib: \
140         $$(TLIB$(1)_T_$(4)_H_$(3))/librustc.rlib \
141         $$(HLIB$(2)_H_$(4))/libstd.rlib \
142         $$(HLIB$(2)_H_$(4))/libextra.rlib \
143         $$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME_$(4)) \
144         | $$(HLIB$(2)_H_$(4))/
145         @$$(call E, cp: $$@)
146         $$(Q)cp $$< $$@
147
148 $$(HLIB$(2)_H_$(4))/$(CFG_RUSTLLVM_$(4)): \
149         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUSTLLVM_$(4)) \
150         | $$(HLIB$(2)_H_$(4))/
151         @$$(call E, cp: $$@)
152         $$(Q)cp $$< $$@
153
154 $$(HBIN$(2)_H_$(4))/:
155         mkdir -p $$@
156
157 ifneq ($(CFG_LIBDIR),bin)
158 $$(HLIB$(2)_H_$(4))/:
159         mkdir -p $$@
160 endif
161
162 endef
163
164 $(foreach t,$(CFG_HOST),                                        \
165         $(eval $(call CP_HOST_STAGE_N,0,1,$(t),$(t)))   \
166         $(eval $(call CP_HOST_STAGE_N,1,2,$(t),$(t)))   \
167         $(eval $(call CP_HOST_STAGE_N,2,3,$(t),$(t))))