42
42
#
43
43
# Admittedly this is a little convoluted.
44
44
45
+ STAGES = 0 1 2 3
46
+
45
47
# #####################################################################
46
48
# Residual auto-configuration
47
49
# #####################################################################
@@ -243,51 +245,52 @@ export CFG_PREFIX
243
245
# #####################################################################
244
246
245
247
define SREQ
248
+ # $(1) is the stage number
249
+ # $(2) is the target triple
250
+ # $(3) is the build triple
246
251
247
252
# 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
251
256
252
257
# 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
262
261
263
262
# The name of the standard library used by rustc
264
263
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
267
268
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 )
270
273
endif
271
274
272
275
# 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 ) ) \
278
281
$$(MKFILES )
279
282
280
283
# 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
286
289
287
290
# 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 )
291
294
292
295
ifeq ($(1 ) ,0)
293
296
# Don't run the the stage0 compiler under valgrind - that ship has sailed
@@ -296,21 +299,24 @@ else
296
299
CFG_VALGRIND_COMPILE$(1) = $$(CFG_VALGRIND_COMPILE )
297
300
endif
298
301
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 ) )
302
307
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 ) )
306
313
307
314
endef
308
315
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))))))))
314
320
315
321
# #####################################################################
316
322
# Entrypoint rule
@@ -327,11 +333,13 @@ all: $(SREQ1$(CFG_HOST_TRIPLE)) $(GENERATED) $(DOCS)
327
333
328
334
else
329
335
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 )
332
340
333
341
# all: $(SREQ3$(CFG_HOST_TRIPLE)) $(GENERATED) $(DOCS) $(FUZZ)
334
- all : $(TARGET_SREQS ) $(GENERATED ) $(DOCS ) $(FUZZ )
342
+ all : $(TSREQS ) $(GENERATED ) $(DOCS ) $(FUZZ )
335
343
336
344
endif
337
345
0 commit comments