2828PREPARE_STAGE =2
2929endif
3030
31- prepare : PREPARE_DIR_CMD=$(DEFAULT_PREPARE_DIR_CMD )
32- prepare : PREPARE_BIN_CMD=$(DEFAULT_PREPARE_BIN_CMD )
33- prepare : PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD )
34- prepare : PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD )
35- prepare : prepare-base
36-
37- prepare-base : PREPARE_SOURCE_DIR=$(PREPARE_HOST ) /stage$(PREPARE_STAGE )
38- prepare-base : PREPARE_SOURCE_BIN_DIR=$(PREPARE_SOURCE_DIR ) /bin
39- prepare-base : PREPARE_SOURCE_LIB_DIR=$(PREPARE_SOURCE_DIR ) /$(CFG_LIBDIR_RELATIVE )
40- prepare-base : PREPARE_SOURCE_MAN_DIR=$(S ) /man
41- prepare-base : PREPARE_DEST_BIN_DIR=$(PREPARE_DEST_DIR ) /bin
42- prepare-base : PREPARE_DEST_LIB_DIR=$(PREPARE_DEST_DIR ) /$(CFG_LIBDIR_RELATIVE )
43- prepare-base : PREPARE_DEST_MAN_DIR=$(PREPARE_DEST_DIR ) /share/man/man1
44- prepare-base : prepare-host prepare-targets
45-
46- prepare-everything : prepare-host prepare-targets
47-
4831DEFAULT_PREPARE_DIR_CMD = umask 022 && mkdir -p
4932DEFAULT_PREPARE_BIN_CMD = install -m755
5033DEFAULT_PREPARE_LIB_CMD = install -m644
@@ -93,29 +76,17 @@ define PREPARE_MAN
9376 $(Q )$(PREPARE_MAN_CMD ) $(PREPARE_SOURCE_MAN_DIR ) /$(1 ) $(PREPARE_DEST_MAN_DIR ) /$(1 )
9477endef
9578
96-
9779PREPARE_TOOLS = $(filter-out compiletest, $(TOOLS ) )
9880
99- prepare-host : prepare-host-tools
100-
101- prepare-host-tools : \
102- $(foreach tool, $(PREPARE_TOOLS),\
103- $(foreach host,$(CFG_HOST),\
104- prepare-host-tool-$(tool)-$(PREPARE_STAGE)-$(host)))
105-
106- prepare-host-dirs : prepare-maybe-clean
107- $(call PREPARE_DIR,$(PREPARE_DEST_BIN_DIR ) )
108- $(call PREPARE_DIR,$(PREPARE_DEST_LIB_DIR ) )
109- $(call PREPARE_DIR,$(PREPARE_DEST_MAN_DIR ) )
11081
11182# $(1) is tool
11283# $(2) is stage
11384# $(3) is host
85+ # $(4) tag
11486define DEF_PREPARE_HOST_TOOL
115- prepare-host-tool-$(1 ) -$(2 ) -$(3 ) : prepare-maybe-clean \
116- $$(foreach dep,$$(TOOL_DEPS_$(1 ) ) ,prepare-host-lib-$$(dep ) -$(2 ) -$(3 ) ) \
117- $$(HBIN$(2 ) _H_$(3 ) ) /$(1 )$$(X_$(3 ) ) \
118- prepare-host-dirs
87+ prepare-host-tool-$(1 ) -$(2 ) -$(3 ) -$(4 ) : prepare-maybe-clean-$(4 ) \
88+ $$(foreach dep,$$(TOOL_DEPS_$(1 ) ) ,prepare-host-lib-$$(dep ) -$(2 ) -$(3 ) -$(4 ) ) \
89+ prepare-host-dirs-$(4 )
11990 $$(if $$(findstring $(2 ) , $$(PREPARE_STAGE ) ) ,\
12091 $$(if $$(findstring $(3 ) , $$(PREPARE_HOST ) ) ,\
12192 $$(call PREPARE_BIN,$(1 )$$(X_$$(PREPARE_HOST ) ) ) ,) ,)
@@ -124,45 +95,35 @@ prepare-host-tool-$(1)-$(2)-$(3): prepare-maybe-clean \
12495 $$(call PREPARE_MAN,$(1 ) .1) ,) ,)
12596endef
12697
127- $(foreach tool,$(PREPARE_TOOLS),\
128- $(foreach host,$(CFG_HOST),\
129- $(eval $(call DEF_PREPARE_HOST_TOOL,$(tool),$(PREPARE_STAGE),$(host)))))
130-
13198# For host libraries only install dylibs, not rlibs since the host libs are only
13299# used to support rustc and rustc uses dynamic linking
133100#
134101# $(1) is tool
135102# $(2) is stage
136103# $(3) is host
104+ # $(4) tag
137105define DEF_PREPARE_HOST_LIB
138- prepare-host-lib-$(1 ) -$(2 ) -$(3 ) : PREPARE_WORKING_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_LIB_DIR )
139- prepare-host-lib-$(1 ) -$(2 ) -$(3 ) : PREPARE_WORKING_DEST_LIB_DIR=$$(PREPARE_DEST_LIB_DIR )
140- prepare-host-lib-$(1 ) -$(2 ) -$(3 ) : prepare-maybe-clean \
141- $$(foreach dep,$$(RUST_DEPS_$(1 ) ) ,prepare-host-lib-$$(dep ) -$(2 ) -$(3 ) ) \
106+ prepare-host-lib-$(1 ) -$(2 ) -$(3 ) - $( 4 ) : PREPARE_WORKING_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_LIB_DIR )
107+ prepare-host-lib-$(1 ) -$(2 ) -$(3 ) - $( 4 ) : PREPARE_WORKING_DEST_LIB_DIR=$$(PREPARE_DEST_LIB_DIR )
108+ prepare-host-lib-$(1 ) -$(2 ) -$(3 ) - $( 4 ) : prepare-maybe-clean- $( 4 ) \
109+ $$(foreach dep,$$(RUST_DEPS_$(1 ) ) ,prepare-host-lib-$$(dep ) -$(2 ) -$(3 ) - $( 4 ) ) \
142110 $$(HLIB$(2 ) _H_$(3 ) ) /stamp.$(1 ) \
143- prepare-host-dirs
111+ prepare-host-dirs- $( 4 )
144112 $$(if $$(findstring $(2 ) , $$(PREPARE_STAGE ) ) ,\
145113 $$(if $$(findstring $(3 ) , $$(PREPARE_HOST ) ) ,\
146114 $$(call PREPARE_LIB,$$(call CFG_LIB_GLOB_$$(PREPARE_HOST ) ,$(1 ) ) ) ,) ,)
147115endef
148116
149- $(foreach lib,$(CRATES),\
150- $(foreach host,$(CFG_HOST),\
151- $(eval $(call DEF_PREPARE_HOST_LIB,$(lib),$(PREPARE_STAGE),$(host)))))
152-
153- prepare-targets :\
154- $(foreach host,$(CFG_HOST),\
155- $(foreach target,$(CFG_TARGET),\
156- prepare-target-$(target)-host-$(host)-$(PREPARE_STAGE)))
157117
158118# $(1) is stage
159119# $(2) is target
160120# $(3) is host
121+ # $(4) tag
161122define DEF_PREPARE_TARGET_N
162123# Rebind PREPARE_*_LIB_DIR to point to rustlib, then install the libs for the targets
163- prepare-target-$(2 ) -host-$(3 ) -$(1 ) : PREPARE_WORKING_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_LIB_DIR ) /$$(CFG_RUSTLIBDIR ) /$(2 ) /lib
164- prepare-target-$(2 ) -host-$(3 ) -$(1 ) : PREPARE_WORKING_DEST_LIB_DIR=$$(PREPARE_DEST_LIB_DIR ) /$$(CFG_RUSTLIBDIR ) /$(2 ) /lib
165- prepare-target-$(2 ) -host-$(3 ) -$(1 ) : prepare-maybe-clean \
124+ prepare-target-$(2 ) -host-$(3 ) -$(1 ) - $( 4 ) : PREPARE_WORKING_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_LIB_DIR ) /$$(CFG_RUSTLIBDIR ) /$(2 ) /lib
125+ prepare-target-$(2 ) -host-$(3 ) -$(1 ) - $( 4 ) : PREPARE_WORKING_DEST_LIB_DIR=$$(PREPARE_DEST_LIB_DIR ) /$$(CFG_RUSTLIBDIR ) /$(2 ) /lib
126+ prepare-target-$(2 ) -host-$(3 ) -$(1 ) - $( 4 ) : prepare-maybe-clean- $( 4 ) \
166127 $$(foreach crate,$$(TARGET_CRATES ) , \
167128 $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /stamp.$$(crate ) ) \
168129 $$(if $$(findstring $(2 ) ,$$(CFG_HOST ) ) , \
@@ -186,12 +147,53 @@ prepare-target-$(2)-host-$(3)-$(1): prepare-maybe-clean \
186147 $$(call PREPARE_LIB,libcompiler-rt.a) ,) ,) ,)
187148endef
188149
189- $(foreach host,$(CFG_HOST),\
190- $(foreach target,$(CFG_TARGET), \
191- $(eval $(call DEF_PREPARE_TARGET_N,$(PREPARE_STAGE),$(target),$(host)))))
150+ define DEF_PREPARE
151+
152+ prepare-base-$(1 ) : PREPARE_SOURCE_DIR=$$(PREPARE_HOST ) /stage$$(PREPARE_STAGE )
153+ prepare-base-$(1 ) : PREPARE_SOURCE_BIN_DIR=$$(PREPARE_SOURCE_DIR ) /bin
154+ prepare-base-$(1 ) : PREPARE_SOURCE_LIB_DIR=$$(PREPARE_SOURCE_DIR ) /$$(CFG_LIBDIR_RELATIVE )
155+ prepare-base-$(1 ) : PREPARE_SOURCE_MAN_DIR=$$(S ) /man
156+ prepare-base-$(1 ) : PREPARE_DEST_BIN_DIR=$$(PREPARE_DEST_DIR ) /bin
157+ prepare-base-$(1 ) : PREPARE_DEST_LIB_DIR=$$(PREPARE_DEST_DIR ) /$$(CFG_LIBDIR_RELATIVE )
158+ prepare-base-$(1 ) : PREPARE_DEST_MAN_DIR=$$(PREPARE_DEST_DIR ) /share/man/man1
159+ prepare-base-$(1 ) : prepare-host-$(1 ) prepare-targets-$(1 )
160+
161+ prepare-host-$(1 ) : prepare-host-tools-$(1 )
162+
163+ prepare-host-tools-$(1 ) : \
164+ $$(foreach tool, $$(PREPARE_TOOLS ) ,\
165+ $$(foreach host,$$(CFG_HOST ) ,\
166+ prepare-host-tool-$$(tool ) -$$(PREPARE_STAGE ) -$$(host ) -$(1 ) ) )
167+
168+ prepare-host-dirs-$(1 ) : prepare-maybe-clean-$(1 )
169+ $$(call PREPARE_DIR,$$(PREPARE_DEST_BIN_DIR ) )
170+ $$(call PREPARE_DIR,$$(PREPARE_DEST_LIB_DIR ) )
171+ $$(call PREPARE_DIR,$$(PREPARE_DEST_MAN_DIR ) )
172+
173+ $$(foreach tool,$$(PREPARE_TOOLS ) ,\
174+ $$(foreach host,$$(CFG_HOST ) ,\
175+ $$(eval $$(call DEF_PREPARE_HOST_TOOL,$$(tool ) ,$$(PREPARE_STAGE ) ,$$(host ) ,$(1 ) ) ) ) )
176+
177+ $$(foreach lib,$$(CRATES ) ,\
178+ $$(foreach host,$$(CFG_HOST ) ,\
179+ $$(eval $$(call DEF_PREPARE_HOST_LIB,$$(lib ) ,$$(PREPARE_STAGE ) ,$$(host ) ,$(1 ) ) ) ) )
180+
181+ prepare-targets-$(1 ) :\
182+ $$(foreach host,$$(CFG_HOST ) ,\
183+ $$(foreach target,$$(CFG_TARGET ) ,\
184+ prepare-target-$$(target ) -host-$$(host ) -$$(PREPARE_STAGE ) -$(1 ) ) )
185+
186+ $$(foreach host,$$(CFG_HOST ) ,\
187+ $$(foreach target,$$(CFG_TARGET ) , \
188+ $$(eval $$(call DEF_PREPARE_TARGET_N,$$(PREPARE_STAGE ) ,$$(target ) ,$$(host ) ,$(1 ) ) ) ) )
189+
190+ prepare-maybe-clean-$(1 ) :
191+ $$(if $$(findstring true,$$(PREPARE_CLEAN ) ) ,\
192+ @$$(call E, cleaning destination $$(PREPARE_DEST_DIR ) ) ,)
193+ $$(if $$(findstring true,$$(PREPARE_CLEAN ) ) ,\
194+ $$(Q ) rm -rf $$(PREPARE_DEST_DIR ) ,)
195+
196+
197+ endef
198+
192199
193- prepare-maybe-clean :
194- $(if $(findstring true,$(PREPARE_CLEAN ) ) ,\
195- @$(call E, cleaning destination $(PREPARE_DEST_DIR)),)
196- $(if $(findstring true,$(PREPARE_CLEAN)),\
197- $(Q)rm -rf $(PREPARE_DEST_DIR),)
0 commit comments