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.
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.
11 # Generic rule for copying any target crate to a host crate. This rule will also
12 # promote any dependent rust crates up to their host locations as well
14 # $(1) - the stage to copy from
15 # $(2) - the stage to copy to
16 # $(3) - the host triple
17 # $(4) - the target triple (same as $(3))
18 # $(5) - the name of the crate being processed
19 define CP_HOST_STAGE_N_CRATE
21 ifeq ($$(ONLY_RLIB_$(5)),)
22 $$(HLIB$(2)_H_$(4))/stamp.$(5): \
23 $$(TLIB$(1)_T_$(3)_H_$(4))/stamp.$(5) \
24 $$(RUST_DEPS_$(5):%=$$(HLIB$(2)_H_$(4))/stamp.%) \
25 | $$(HLIB$(2)_H_$(4))/
26 @$$(call E, cp: $$(@D)/lib$(5))
27 $$(call REMOVE_ALL_OLD_GLOB_MATCHES,\
28 $$(dir $$@)$$(call CFG_LIB_GLOB_$(3),$(5)))
30 $$(Q)cp -R $$(TLIB$(1)_T_$(3)_H_$(4))/$$(call CFG_LIB_GLOB_$(3),$(5)) \
32 $$(call LIST_ALL_OLD_GLOB_MATCHES,\
33 $$(dir $$@)$$(call CFG_LIB_GLOB_$(3),$(5)))
35 $$(HLIB$(2)_H_$(4))/stamp.$(5):
41 # Same as the above macro, but for tools instead of crates
42 define CP_HOST_STAGE_N_TOOL
44 $$(HBIN$(2)_H_$(4))/$(5)$$(X_$(3)): \
45 $$(TBIN$(1)_T_$(3)_H_$(4))/$(5)$$(X_$(3)) \
46 $$(TOOL_DEPS_$(5):%=$$(HLIB$(2)_H_$(4))/stamp.%) \
47 | $$(HBIN$(2)_H_$(4))/
54 # Miscellaneous rules for just making a few directories.
56 # $(1) - the stage to copy from
57 # $(2) - the stage to copy to
58 # $(3) - the target triple
59 # $(4) - the host triple (same as $(3))
60 define CP_HOST_STAGE_N
62 ifneq ($(CFG_LIBDIR_RELATIVE),bin)
69 $(foreach t,$(CFG_HOST), \
70 $(eval $(call CP_HOST_STAGE_N,0,1,$(t),$(t))) \
71 $(eval $(call CP_HOST_STAGE_N,1,2,$(t),$(t))) \
72 $(eval $(call CP_HOST_STAGE_N,2,3,$(t),$(t))))
74 $(foreach crate,$(CRATES), \
75 $(foreach t,$(CFG_HOST), \
76 $(eval $(call CP_HOST_STAGE_N_CRATE,0,1,$(t),$(t),$(crate))) \
77 $(eval $(call CP_HOST_STAGE_N_CRATE,1,2,$(t),$(t),$(crate))) \
78 $(eval $(call CP_HOST_STAGE_N_CRATE,2,3,$(t),$(t),$(crate)))))
80 $(foreach tool,$(TOOLS), \
81 $(foreach t,$(CFG_HOST), \
82 $(eval $(call CP_HOST_STAGE_N_TOOL,0,1,$(t),$(t),$(tool))) \
83 $(eval $(call CP_HOST_STAGE_N_TOOL,1,2,$(t),$(t),$(tool))) \
84 $(eval $(call CP_HOST_STAGE_N_TOOL,2,3,$(t),$(t),$(tool)))))