Skip to content

Commit ed35ada

Browse files
committed
---
yaml --- r: 6488 b: refs/heads/master c: 9c12c7c h: refs/heads/master v: v3
1 parent f86f211 commit ed35ada

File tree

15 files changed

+373
-325
lines changed

15 files changed

+373
-325
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 579399f92f991bb9cb9f9af55bfca523d66dec4f
2+
refs/heads/master: 9c12c7c7f5462b56bad567112f8680dc81f9d68d

trunk/Makefile.in

Lines changed: 51 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
#
4343
# Admittedly this is a little convoluted.
4444

45+
STAGES = 0 1 2 3
46+
4547
######################################################################
4648
# Residual auto-configuration
4749
######################################################################
@@ -243,51 +245,52 @@ export CFG_PREFIX
243245
######################################################################
244246

245247
define SREQ
248+
# $(1) is the stage number
249+
# $(2) is the target triple
250+
# $(3) is the build triple
246251

247252
# Destinations of artifacts for the host compiler
248-
HOST_ROOT$(1) = stage$(1)
249-
HOST_BIN$(1) = $$(HOST_ROOT$(1))/bin
250-
HOST_LIB$(1) = $$(HOST_ROOT$(1))/lib
253+
HROOT$(1)_H_$(3) = $(3)/stage$(1)
254+
HBIN$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/bin
255+
HLIB$(1)_H_$(3) = $$(HROOT$(1)_H_$(3))/lib
251256

252257
# Destinations of artifacts for target architectures
253-
TARGET_ROOT$(1)$(2) = $$(HOST_LIB$(1))/rustc/$(2)
254-
TARGET_BIN$(1)$(2) = $$(TARGET_ROOT$(1)$(2))/bin
255-
TARGET_LIB$(1)$(2) = $$(TARGET_ROOT$(1)$(2))/lib
256-
257-
# The target locations of artifacts for the host architecture (used for
258-
# promoting target binaries to host binaries)
259-
TARGET_HOST_ROOT$(1) = $$(TARGET_ROOT$(1)$$(CFG_HOST_TRIPLE))
260-
TARGET_HOST_BIN$(1) = $$(TARGET_BIN$(1)$$(CFG_HOST_TRIPLE))
261-
TARGET_HOST_LIB$(1) = $$(TARGET_LIB$(1)$$(CFG_HOST_TRIPLE))
258+
TROOT$(1)_T_$(2)_H_$(3) = $$(HLIB$(1)_H_$(3))/rustc/$(2)
259+
TBIN$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/bin
260+
TLIB$(1)_T_$(2)_H_$(3) = $$(TROOT$(1)_T_$(2)_H_$(3))/lib
262261

263262
# The name of the standard library used by rustc
264263
ifdef CFG_DISABLE_SHAREDSTD
265-
HOST_STDLIB_DEFAULT$(1) = $$(HOST_LIB$(1))/libstd.rlib
266-
TARGET_STDLIB_DEFAULT$(1)$(2) = $$(TARGET_LIB$(1)$(2))/libstd.rlib
264+
HSTDLIB_DEFAULT$(1)_H_$(3) = \
265+
$$(HLIB$(1)_H_$(3))/libstd.rlib
266+
TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3) = \
267+
$$(TLIB$(1)_T_$(2)_H_$(3))/libstd.rlib
267268
else
268-
HOST_STDLIB_DEFAULT$(1) = $$(HOST_LIB$(1))/$(CFG_STDLIB)
269-
TARGET_STDLIB_DEFAULT$(1)$(2) = $$(TARGET_LIB$(1)$(2))/$(CFG_STDLIB)
269+
HSTDLIB_DEFAULT$(1)_H_$(3) = \
270+
$$(HLIB$(1)_H_$(3))/$(CFG_STDLIB)
271+
TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3) = \
272+
$$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB)
270273
endif
271274

272275
# Preqrequisites for using the stageN compiler
273-
HOST_SREQ$(1) = \
274-
$$(HOST_BIN$(1))/rustc$$(X) \
275-
$$(HOST_LIB$(1))/$$(CFG_RUNTIME) \
276-
$$(HOST_LIB$(1))/$$(CFG_RUSTLLVM) \
277-
$$(HOST_STDLIB_DEFAULT$(1)) \
276+
HSREQ$(1)_H_$(3) = \
277+
$$(HBIN$(1)_H_$(3))/rustc$$(X) \
278+
$$(HLIB$(1)_H_$(3))/$$(CFG_RUNTIME) \
279+
$$(HLIB$(1)_H_$(3))/$$(CFG_RUSTLLVM) \
280+
$$(HSTDLIB_DEFAULT$(1)_H_$(3)) \
278281
$$(MKFILES)
279282

280283
# Prerequisites for using the stageN compiler to build target artifacts
281-
TARGET_SREQ$(1)$(2) = \
282-
$$(HOST_SREQ$(1)) \
283-
$$(TARGET_LIB$(1)$(2))/$$(CFG_RUNTIME) \
284-
$$(TARGET_LIB$(1)$(2))/intrinsics.bc \
285-
$$(TARGET_LIB$(1)$(2))/libmorestack.a
284+
TSREQ$(1)_T_$(2)_H_$(3) = \
285+
$$(HSREQ$(1)_H_$(3)) \
286+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_RUNTIME) \
287+
$$(TLIB$(1)_T_$(2)_H_$(3))/intrinsics.bc \
288+
$$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a
286289

287290
# Prerequisites for complete stageN targets
288-
SREQ$(1)$(2) = \
289-
$$(TARGET_SREQ$(1)$(2)) \
290-
$$(TARGET_LIB$(1)$(2))/$$(CFG_STDLIB)
291+
SREQ$(1)_T_$(2)_H_$(3) = \
292+
$$(TSREQ$(1)_T_$(2)_H_$(3)) \
293+
$$(TLIB$(1)_T_$(2)_H_$(3))/$$(CFG_STDLIB)
291294

292295
ifeq ($(1),0)
293296
# Don't run the the stage0 compiler under valgrind - that ship has sailed
@@ -296,21 +299,24 @@ else
296299
CFG_VALGRIND_COMPILE$(1) = $$(CFG_VALGRIND_COMPILE)
297300
endif
298301

299-
STAGE$(1)_$(2) := $$(Q)$$(call CFG_RUN_TARG,$(1), \
300-
$$(CFG_VALGRIND_COMPILE$(1)) $$(HOST_BIN$(1))/rustc$$(X) \
301-
$$(CFG_RUSTC_FLAGS) --target=$(2))
302+
STAGE$(1)_T_$(2)_H_$(3) := \
303+
$$(Q)$$(call CFG_RUN_TARG,$(1), \
304+
$$(CFG_VALGRIND_COMPILE$(1)) \
305+
$$(HBIN$(1)_H_$(3))/rustc$$(X) \
306+
$$(CFG_RUSTC_FLAGS) --target=$(2))
302307

303-
PERF_STAGE$(1)_$(2) := $$(Q)$$(call CFG_RUN_TARG,$(1), \
304-
$$(CFG_PERF_TOOL) $$(HOST_BIN$(1))/rustc$$(X) \
305-
$$(CFG_RUSTC_FLAGS) --target=$(2))
308+
PERF_STAGE$(1)_T_$(2)_H_$(3) := \
309+
$$(Q)$$(call CFG_RUN_TARG,$(1), \
310+
$$(CFG_PERF_TOOL) \
311+
$$(HBIN$(1)_H_$(3))/rustc$$(X) \
312+
$$(CFG_RUSTC_FLAGS) --target=$(2))
306313

307314
endef
308315

309-
$(foreach target,$(CFG_TARGET_TRIPLES), \
310-
$(eval $(call SREQ,0,$(target))) \
311-
$(eval $(call SREQ,1,$(target))) \
312-
$(eval $(call SREQ,2,$(target))) \
313-
$(eval $(call SREQ,3,$(target))))
316+
$(foreach build,$(CFG_TARGET_TRIPLES), \
317+
$(eval $(foreach target,$(CFG_TARGET_TRIPLES), \
318+
$(eval $(foreach stage,$(STAGES), \
319+
$(eval $(call SREQ,$(stage),$(target),$(build))))))))
314320

315321
######################################################################
316322
# Entrypoint rule
@@ -327,11 +333,13 @@ all: $(SREQ1$(CFG_HOST_TRIPLE)) $(GENERATED) $(DOCS)
327333

328334
else
329335

330-
TARGET_SREQS := $(foreach target,$(CFG_TARGET_TRIPLES),$(SREQ3$(target)))
331-
FUZZ := $(HOST_BIN3)/fuzzer$(X)
336+
TSREQS := \
337+
$(foreach target,$(CFG_TARGET_TRIPLES), \
338+
$(SREQ3_T_$(target)_H_$(CFG_HOST_TRIPLE)))
339+
FUZZ := $(HBIN3_H_$(CFG_HOST_TRIPLE))/fuzzer$(X)
332340

333341
#all: $(SREQ3$(CFG_HOST_TRIPLE)) $(GENERATED) $(DOCS) $(FUZZ)
334-
all: $(TARGET_SREQS) $(GENERATED) $(DOCS) $(FUZZ)
342+
all: $(TSREQS) $(GENERATED) $(DOCS) $(FUZZ)
335343

336344
endif
337345

trunk/configure

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -380,25 +380,27 @@ do
380380
done
381381
done
382382

383-
for t in $CFG_TARGET_TRIPLES
383+
for h in $CFG_TARGET_TRIPLES
384384
do
385-
for i in 0 1 2 3
385+
for t in $CFG_TARGET_TRIPLES
386386
do
387-
# host bin dir
388-
make_dir stage$i/bin
387+
for i in 0 1 2 3
388+
do
389+
# host bin dir
390+
make_dir $h/stage$i/bin
389391

390-
# host lib dir
391-
make_dir stage$i/lib
392+
# host lib dir
393+
make_dir $h/stage$i/lib
392394

393-
# target bin dir
394-
make_dir stage$i/lib/rustc/$t/bin
395+
# target bin dir
396+
make_dir $h/stage$i/lib/rustc/$t/bin
395397

396-
# target lib dir
397-
make_dir stage$i/lib/rustc/$t/lib
398+
# target lib dir
399+
make_dir $h/stage$i/lib/rustc/$t/lib
400+
done
398401
done
399402
done
400403

401-
402404
# Configure submodules
403405
step_msg "configuring submodules"
404406

trunk/mk/clean.mk

Lines changed: 38 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,16 @@
22
# Cleanup
33
######################################################################
44

5-
CLEAN_STAGE_RULES = $(foreach target,$(CFG_TARGET_TRIPLES), \
6-
clean0$(target) clean1$(target) clean2$(target) clean3$(target)) \
7-
clean0 clean1 clean2 clean3
5+
CLEAN_STAGE_RULES = \
6+
$(foreach stage, $(STAGES), \
7+
$(foreach host, $(CFG_TARGET_TRIPLES), \
8+
clean$(stage)_H_$(host) \
9+
$(foreach target, $(CFG_TARGET_TRIPLES), \
10+
clean$(stage)_H_$(host)_T_$(target))))
811

9-
CLEAN_LLVM_RULES = $(foreach target,$(CFG_TARGET_TRIPLES), \
10-
clean-llvm$(target))
12+
CLEAN_LLVM_RULES = \
13+
$(foreach target, $(CFG_TARGET_TRIPLES), \
14+
clean-llvm$(target))
1115

1216
.PHONY: clean clean-all clean-misc
1317

@@ -45,41 +49,45 @@ clean-misc:
4549
$(Q)rm -Rf doc/version.texi
4650
$(Q)rm -rf libuv
4751

48-
define CLEAN_STAGE_N
49-
50-
clean$(1):
51-
$(Q)rm -f $$(HOST_BIN$(1))/rustc$(X)
52-
$(Q)rm -f $$(HOST_BIN$(1))/fuzzer$(X)
53-
$(Q)rm -f $$(HOST_LIB$(1))/$(CFG_RUNTIME)
54-
$(Q)rm -f $$(HOST_LIB$(1))/$(CFG_STDLIB)
55-
$(Q)rm -f $$(HOST_LIB$(1))/$(CFG_RUSTLLVM)
56-
$(Q)rm -f $$(HOST_LIB$(1))/libstd.rlib
57-
58-
clean$(1)$(2):
59-
$(Q)rm -f $$(TARGET_BIN$(1)$(2))/rustc$(X)
60-
$(Q)rm -f $$(TARGET_BIN$(1)$(2))/fuzzer$(X)
61-
$(Q)rm -f $$(TARGET_LIB$(1)$(2))/$(CFG_RUNTIME)
62-
$(Q)rm -f $$(TARGET_LIB$(1)$(2))/$(CFG_STDLIB)
63-
$(Q)rm -f $$(TARGET_LIB$(1)$(2))/$(CFG_RUSTLLVM)
64-
$(Q)rm -f $$(TARGET_LIB$(1)$(2))/libstd.rlib
65-
$(Q)rm -f $$(TARGET_LIB$(1)$(2))/intrinsics.bc
52+
define CLEAN_HOST_STAGE_N
53+
54+
clean$(1)_H_$(2):
55+
$(Q)rm -f $$(HBIN$(1)_H_$(2))/rustc$(X)
56+
$(Q)rm -f $$(HBIN$(1)_H_$(2))/fuzzer$(X)
57+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUNTIME)
58+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_STDLIB)
59+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/$(CFG_RUSTLLVM)
60+
$(Q)rm -f $$(HLIB$(1)_H_$(2))/libstd.rlib
6661

6762
endef
6863

69-
$(foreach target, $(CFG_TARGET_TRIPLES), \
70-
$(eval $(call CLEAN_STAGE_N,0,$(target))) \
71-
$(eval $(call CLEAN_STAGE_N,1,$(target))) \
72-
$(eval $(call CLEAN_STAGE_N,2,$(target))) \
73-
$(eval $(call CLEAN_STAGE_N,3,$(target))))
64+
$(foreach host, $(CFG_TARGET_TRIPLES), \
65+
$(eval $(foreach stage, $(STAGES), \
66+
$(eval $(call CLEAN_HOST_STAGE_N,$(stage),$(host))))))
67+
68+
define CLEAN_TARGET_STAGE_N
69+
70+
clean$(1)_T_$(2)_H$(3):
71+
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/rustc$(X)
72+
$(Q)rm -f $$(TBIN$(1)_T_$(2)_H_$(3))/fuzzer$(X)
73+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUNTIME)
74+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_STDLIB)
75+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/$(CFG_RUSTLLVM)
76+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libstd.rlib
77+
$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/intrinsics.bc
7478

79+
endef
80+
81+
$(foreach host, $(CFG_TARGET_TRIPLES), \
82+
$(eval $(foreach target, $(CFG_TARGET_TRIPLES), \
83+
$(eval $(foreach stage, $(STAGES), \
84+
$(eval $(call CLEAN_TARGET_STAGE_N,$(stage),$(target),$(host))))))))
7585

7686
define DEF_CLEAN_LLVM_TARGET
7787
ifeq ($(CFG_LLVM_ROOT),)
78-
7988
clean-llvm$(1):
8089
$$(Q)$$(MAKE) -C $$(CFG_LLVM_BUILD_DIR_$(1)) clean
8190
else
82-
8391
clean-llvm$(1): ;
8492

8593
endif

trunk/mk/host.mk

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,59 @@
1-
# HOST_STAGE_N template: arg 1 is the N we're promoting *from*, arg 2
2-
# is N+1. Must be invoked to promote target artifacts to host artifacts
3-
# for stage 1-3 (stage0 host artifacts come from the snapshot).
1+
# CP_HOST_STAGE_N template: arg 1 is the N we're promoting *from*, arg
2+
# 2 is N+1. Must be invoked to promote target artifacts to host
3+
# artifacts for stage 1-3 (stage0 host artifacts come from the
4+
# snapshot). Arg 3 is the triple we're copying FROM and arg 4 is the
5+
# triple we're copying TO.
46
#
57
# The easiest way to read this template is to assume we're promoting
68
# stage1 to stage2 and mentally gloss $(1) as 1, $(2) as 2.
79

8-
define HOST_STAGE_N
10+
define CP_HOST_STAGE_N
911

1012
# Host libraries and executables (stage$(2)/bin/rustc and its runtime needs)
1113

12-
$$(HOST_BIN$(2))/rustc$$(X): \
13-
$$(TARGET_HOST_BIN$(1))/rustc$$(X) \
14-
$$(HOST_LIB$(2))/$$(CFG_RUNTIME) \
15-
$$(HOST_LIB$(2))/$$(CFG_RUSTLLVM) \
16-
$$(HOST_STDLIB_DEFAULT$(2))
14+
$$(HBIN$(2)_H_$(4))/rustc$$(X): \
15+
$$(TBIN$(1)_T_$(4)_H_$(3))/rustc$$(X) \
16+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) \
17+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM) \
18+
$$(HSTDLIB_DEFAULT$(2)_H_$(4))
1719
@$$(call E, cp: $$@)
1820
$$(Q)cp $$< $$@
1921

2022
# FIXME: The fuzzer depends on this. Remove once it's rpathed to correctly
2123
# find it in the appropriate target directory
22-
$$(HOST_LIB$(2))/$$(CFG_LIBRUSTC): \
23-
$$(TARGET_HOST_LIB$(1))/$$(CFG_LIBRUSTC) \
24-
$$(HOST_LIB$(2))/$$(CFG_RUNTIME) \
25-
$$(HOST_LIB$(2))/$$(CFG_RUSTLLVM) \
26-
$$(HOST_STDLIB_DEFAULT$(2))
24+
$$(HLIB$(2)_H_$(4))/$$(CFG_LIBRUSTC): \
25+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_LIBRUSTC) \
26+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME) \
27+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM) \
28+
$$(HSTDLIB_DEFAULT$(2)_H_$(3))
2729
@$$(call E, cp: $$@)
2830
$$(Q)cp $$< $$@
2931

30-
$$(HOST_LIB$(2))/$$(CFG_RUNTIME): \
31-
$$(TARGET_HOST_LIB$(1))/$$(CFG_RUNTIME)
32+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME): \
33+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_RUNTIME)
3234
@$$(call E, cp: $$@)
3335
$$(Q)cp $$< $$@
3436

35-
$$(HOST_LIB$(2))/$$(CFG_STDLIB): \
36-
$$(TARGET_HOST_LIB$(1))/$$(CFG_STDLIB) \
37-
$$(HOST_LIB$(2))/$$(CFG_RUNTIME)
37+
$$(HLIB$(2)_H_$(4))/$$(CFG_STDLIB): \
38+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_STDLIB) \
39+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME)
3840
@$$(call E, cp: $$@)
3941
$$(Q)cp $$< $$@
4042

41-
$$(HOST_LIB$(2))/libstd.rlib: \
42-
$$(TARGET_HOST_LIB$(1))/libstd.rlib \
43-
$$(HOST_LIB$(2))/$$(CFG_RUNTIME)
43+
$$(HLIB$(2)_H_$(4))/libstd.rlib: \
44+
$$(TLIB$(1)_T_$(4)_H_$(3))/libstd.rlib \
45+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUNTIME)
4446
@$$(call E, cp: $$@)
4547
$$(Q)cp $$< $$@
4648

47-
$$(HOST_LIB$(2))/$$(CFG_RUSTLLVM): \
48-
$$(TARGET_HOST_LIB$(1))/$$(CFG_RUSTLLVM)
49+
$$(HLIB$(2)_H_$(4))/$$(CFG_RUSTLLVM): \
50+
$$(TLIB$(1)_T_$(4)_H_$(3))/$$(CFG_RUSTLLVM)
4951
@$$(call E, cp: $$@)
5052
$$(Q)cp $$< $$@
5153

5254
endef
5355

54-
$(eval $(call HOST_STAGE_N,0,1))
55-
$(eval $(call HOST_STAGE_N,1,2))
56-
$(eval $(call HOST_STAGE_N,2,3))
56+
$(foreach t,$(CFG_TARGET_TRIPLES), \
57+
$(eval $(call CP_HOST_STAGE_N,0,1,$(t),$(t))) \
58+
$(eval $(call CP_HOST_STAGE_N,1,2,$(t),$(t))) \
59+
$(eval $(call CP_HOST_STAGE_N,2,3,$(t),$(t))))

0 commit comments

Comments
 (0)