Skip to content

Commit c796f89

Browse files
committed
mk: Fix prepare.mk
The way it was formulated you could only 'prepare' one directory per build.
1 parent 70a1075 commit c796f89

File tree

2 files changed

+74
-64
lines changed

2 files changed

+74
-64
lines changed

mk/dist.mk

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ $(PKG_EXE): rust.iss modpath.iss LICENSE.txt rust-logo.ico \
123123
@$(call E, ISCC: $@)
124124
$(Q)"$(CFG_ISCC)" $<
125125

126+
$(eval $(call DEF_PREPARE,win))
127+
126128
dist-prepare-win: PREPARE_HOST=$(CFG_BUILD)
127129
dist-prepare-win: PREPARE_TARGETS=$(CFG_BUILD)
128130
dist-prepare-win: PREPARE_DEST_DIR=tmp/dist/win
@@ -131,7 +133,7 @@ dist-prepare-win: PREPARE_BIN_CMD=$(DEFAULT_PREPARE_BIN_CMD)
131133
dist-prepare-win: PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD)
132134
dist-prepare-win: PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD)
133135
dist-prepare-win: PREPARE_CLEAN=true
134-
dist-prepare-win: prepare-base
136+
dist-prepare-win: prepare-base-win
135137

136138
endif
137139

@@ -146,14 +148,17 @@ distcheck-win: dist-win
146148
ifeq ($(CFG_OSTYPE), apple-darwin)
147149

148150
define DEF_OSX_PKG
151+
152+
$$(eval $$(call DEF_PREPARE,osx-$(1)))
153+
149154
dist-prepare-osx-$(1): PREPARE_HOST=$(1)
150155
dist-prepare-osx-$(1): PREPARE_TARGETS=$(1)
151156
dist-prepare-osx-$(1): PREPARE_DEST_DIR=tmp/dist/pkgroot-$(1)
152157
dist-prepare-osx-$(1): PREPARE_DIR_CMD=$(DEFAULT_PREPARE_DIR_CMD)
153158
dist-prepare-osx-$(1): PREPARE_BIN_CMD=$(DEFAULT_PREPARE_BIN_CMD)
154159
dist-prepare-osx-$(1): PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD)
155160
dist-prepare-osx-$(1): PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD)
156-
dist-prepare-osx-$(1): prepare-base
161+
dist-prepare-osx-$(1): prepare-base-osx-$(1)
157162

158163
dist/$(PKG_NAME)-$(1).pkg: $(S)src/etc/pkg/Distribution.xml LICENSE.txt dist-prepare-osx-$(1)
159164
@$$(call E, making OS X pkg)
@@ -182,6 +187,9 @@ distcheck-osx: dist-osx
182187
######################################################################
183188

184189
define DEF_INSTALLER
190+
191+
$$(eval $$(call DEF_PREPARE,dir-$(1)))
192+
185193
dist-install-dir-$(1): PREPARE_HOST=$(1)
186194
dist-install-dir-$(1): PREPARE_TARGETS=$(1)
187195
dist-install-dir-$(1): PREPARE_DEST_DIR=tmp/dist/$$(PKG_NAME)-$(1)
@@ -190,7 +198,7 @@ dist-install-dir-$(1): PREPARE_BIN_CMD=$(DEFAULT_PREPARE_BIN_CMD)
190198
dist-install-dir-$(1): PREPARE_LIB_CMD=$(DEFAULT_PREPARE_LIB_CMD)
191199
dist-install-dir-$(1): PREPARE_MAN_CMD=$(DEFAULT_PREPARE_MAN_CMD)
192200
dist-install-dir-$(1): PREPARE_CLEAN=true
193-
dist-install-dir-$(1): prepare-base
201+
dist-install-dir-$(1): prepare-base-dir-$(1)
194202
$$(Q)(cd $$(PREPARE_DEST_DIR)/ && find -type f) \
195203
> $$(PREPARE_DEST_DIR)/$$(CFG_LIBDIR_RELATIVE)/$$(CFG_RUSTLIBDIR)/manifest
196204
$$(Q)$$(PREPARE_MAN_CMD) $$(S)COPYRIGHT $$(PREPARE_DEST_DIR)

mk/prepare.mk

Lines changed: 63 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,6 @@ else
2828
PREPARE_STAGE=2
2929
endif
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-
4831
DEFAULT_PREPARE_DIR_CMD = umask 022 && mkdir -p
4932
DEFAULT_PREPARE_BIN_CMD = install -m755
5033
DEFAULT_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)
9477
endef
9578

96-
9779
PREPARE_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
11486
define 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),),)
12596
endef
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
137105
define 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))),),)
147115
endef
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
161122
define 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),),),)
187148
endef
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

Comments
 (0)