]> git.lizzy.rs Git - rust.git/blob - mk/host.mk
auto merge of #11599 : sanxiyn/rust/accurate-span-3, r=luqmana
[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_LIBRUSTC_$(4)) \
29         | $$(HBIN$(2)_H_$(4))/
30         @$$(call E, cp: $$@)
31         $$(Q)cp $$< $$@
32
33 $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTC_$(4)): \
34         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTC_$(4)) \
35         $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)) \
36         | $$(HLIB$(2)_H_$(4))/
37
38         @$$(call E, cp: $$@)
39         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_GLOB_$(4)),$$(notdir $$@))
40         $$(Q)cp $$< $$@
41         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_GLOB_$(4)) \
42                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTC_DSYM_GLOB_$(4))) \
43                 $$(HLIB$(2)_H_$(4))
44         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_GLOB_$(4)),$$(notdir $$@))
45
46 $$(HLIB$(2)_H_$(4))/$(CFG_LIBSYNTAX_$(4)): \
47         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBSYNTAX_$(4)) \
48         $$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
49         $$(HEXTRALIB_DEFAULT$(2)_H_$(4)) \
50         $$(HLIBRUSTUV_DEFAULT$(2)_H_$(4)) \
51         $$(HLIBGREEN_DEFAULT$(2)_H_$(4)) \
52         $$(HLIBNATIVE_DEFAULT$(2)_H_$(4)) \
53         | $$(HLIB$(2)_H_$(4))/
54         @$$(call E, cp: $$@)
55         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBSYNTAX_GLOB_$(4)),$$(notdir $$@))
56         $$(Q)cp $$< $$@
57         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_GLOB_$(4)) \
58                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBSYNTAX_DSYM_GLOB_$(4))) \
59                 $$(HLIB$(2)_H_$(4))
60         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBSYNTAX_GLOB_$(4)),$$(notdir $$@))
61
62 $$(HLIB$(2)_H_$(4))/$(CFG_RUNTIME_$(4)): \
63         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_RUNTIME_$(4)) \
64         | $$(HLIB$(2)_H_$(4))/
65         @$$(call E, cp: $$@)
66         $$(Q)cp $$< $$@
67
68 $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)): \
69         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_STDLIB_$(4)) \
70         | $$(HLIB$(2)_H_$(4))/
71         @$$(call E, cp: $$@)
72         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_GLOB_$(4)),$$(notdir $$@))
73         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_RGLOB_$(4)),$$(notdir $$@))
74         $$(Q)cp $$< $$@
75 # Subtle: We do not let the shell expand $$(STDLIB_DSYM_GLOB) directly rather
76 # we use Make's $$(wildcard) facility. The reason is that, on mac, when using
77 # USE_SNAPSHOT_STDLIB, we copy the std.dylib file out of the snapshot.
78 # In that case, there is no .dSYM file.  Annoyingly, bash then refuses to expand
79 # glob, and cp reports an error because libstd-*.dylib.dsym does not exist.
80 # Make instead expands the glob to nothing, which gives us the correct behavior.
81 # (Copy .dsym file if it exists, but do nothing otherwise)
82         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_GLOB_$(4)) \
83                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_RGLOB_$(4))) \
84                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(STDLIB_DSYM_GLOB_$(4))) \
85                 $$(HLIB$(2)_H_$(4))
86         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_GLOB_$(4)),$$(notdir $$@))
87         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_RGLOB_$(4)),$$(notdir $$@))
88
89 $$(HLIB$(2)_H_$(4))/$(CFG_EXTRALIB_$(4)): \
90         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_EXTRALIB_$(4)) \
91         $$(HSTDLIB_DEFAULT$(2)_H_$(4)) \
92         | $$(HLIB$(2)_H_$(4))/
93         @$$(call E, cp: $$@)
94         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_GLOB_$(4)),$$(notdir $$@))
95         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_RGLOB_$(4)),$$(notdir $$@))
96         $$(Q)cp $$< $$@
97         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(EXTRALIB_GLOB_$(4)) \
98                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(EXTRALIB_RGLOB_$(4))) \
99                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(EXTRALIB_DSYM_GLOB_$(4))) \
100                 $$(HLIB$(2)_H_$(4))
101         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_GLOB_$(4)),$$(notdir $$@))
102         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_RGLOB_$(4)),$$(notdir $$@))
103
104 $$(HLIB$(2)_H_$(4))/$(CFG_LIBRUSTUV_$(4)): \
105         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBRUSTUV_$(4)) \
106         $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
107         | $$(HLIB$(2)_H_$(4))/
108         @$$(call E, cp: $$@)
109         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
110         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_RGLOB_$(4)),$$(notdir $$@))
111         $$(Q)cp $$< $$@
112         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTUV_GLOB_$(4)) \
113                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTUV_RGLOB_$(4))) \
114                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBRUSTUV_DSYM_GLOB_$(4))) \
115                 $$(HLIB$(2)_H_$(4))
116         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
117         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_RGLOB_$(4)),$$(notdir $$@))
118
119 $$(HLIB$(2)_H_$(4))/$(CFG_LIBGREEN_$(4)): \
120         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBGREEN_$(4)) \
121         $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
122         | $$(HLIB$(2)_H_$(4))/
123         @$$(call E, cp: $$@)
124         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_GLOB_$(4)),$$(notdir $$@))
125         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_RGLOB_$(4)),$$(notdir $$@))
126         $$(Q)cp $$< $$@
127         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBGREEN_GLOB_$(4)) \
128                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBGREEN_RGLOB_$(4))) \
129                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBGREEN_DSYM_GLOB_$(4))) \
130                 $$(HLIB$(2)_H_$(4))
131         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_GLOB_$(4)),$$(notdir $$@))
132         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBGREEN_RGLOB_$(4)),$$(notdir $$@))
133
134 $$(HLIB$(2)_H_$(4))/$(CFG_LIBNATIVE_$(4)): \
135         $$(TLIB$(1)_T_$(4)_H_$(3))/$(CFG_LIBNATIVE_$(4)) \
136         $$(HLIB$(2)_H_$(4))/$(CFG_STDLIB_$(4)) \
137         | $$(HLIB$(2)_H_$(4))/
138         @$$(call E, cp: $$@)
139         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_GLOB_$(4)),$$(notdir $$@))
140         $$(call REMOVE_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_RGLOB_$(4)),$$(notdir $$@))
141         $$(Q)cp $$< $$@
142         $$(Q)cp -R $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBNATIVE_GLOB_$(4)) \
143                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBNATIVE_RGLOB_$(4))) \
144                 $$(wildcard $$(TLIB$(1)_T_$(4)_H_$(3))/$(LIBNATIVE_DSYM_GLOB_$(4))) \
145                 $$(HLIB$(2)_H_$(4))
146         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_GLOB_$(4)),$$(notdir $$@))
147         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBNATIVE_RGLOB_$(4)),$$(notdir $$@))
148
149 $$(HBIN$(2)_H_$(4))/:
150         mkdir -p $$@
151
152 ifneq ($(CFG_LIBDIR_RELATIVE),bin)
153 $$(HLIB$(2)_H_$(4))/:
154         mkdir -p $$@
155 endif
156
157 endef
158
159 $(foreach t,$(CFG_HOST),                                        \
160         $(eval $(call CP_HOST_STAGE_N,0,1,$(t),$(t)))   \
161         $(eval $(call CP_HOST_STAGE_N,1,2,$(t),$(t)))   \
162         $(eval $(call CP_HOST_STAGE_N,2,3,$(t),$(t))))