@@ -70,16 +70,22 @@ include config.mk
7070ALL_OBJ_FILES :=
7171
7272MKFILE_DEPS := config.stamp $(call rwildcard,$(CFG_SRC_DIR ) mk/,* )
73- NON_HOST_TRIPLES = $(filter-out $(CFG_HOST_TRIPLE ) ,$(CFG_TARGET_TRIPLES ) )
73+ NON_BUILD_HOST_TRIPLES = $(filter-out $(CFG_BUILD_TRIPLE ) ,$(CFG_HOST_TRIPLES ) )
74+ NON_BUILD_TARGET_TRIPLES = $(filter-out $(CFG_BUILD_TRIPLE ) ,$(CFG_TARGET_TRIPLES ) )
7475
7576ifneq ($(MAKE_RESTARTS ) ,)
7677CFG_INFO := $(info cfg: make restarts: $(MAKE_RESTARTS ) )
7778endif
7879
79- CFG_INFO := $(info cfg: shell host triple $(CFG_HOST_TRIPLE ) )
80+ CFG_INFO := $(info cfg: build triple $(CFG_BUILD_TRIPLE ) )
81+ CFG_INFO := $(info cfg: host triples $(CFG_HOST_TRIPLES ) )
82+ CFG_INFO := $(info cfg: target triples $(CFG_TARGET_TRIPLES ) )
8083
81- ifneq ($(wildcard $(NON_HOST_TRIPLES ) ) ,)
82- CFG_INFO := $(info cfg: non host triples $(NON_HOST_TRIPLES ) )
84+ ifneq ($(wildcard $(NON_BUILD_HOST_TRIPLES ) ) ,)
85+ CFG_INFO := $(info cfg: non-build host triples $(NON_BUILD_HOST_TRIPLES ) )
86+ endif
87+ ifneq ($(wildcard $(NON_BUILD_TARGET_TRIPLES ) ) ,)
88+ CFG_INFO := $(info cfg: non-build target triples $(NON_BUILD_TARGET_TRIPLES ) )
8389endif
8490
8591CFG_RUSTC_FLAGS := $(RUSTFLAGS )
@@ -124,37 +130,6 @@ else
124130 CFG_VALGRIND_COMPILE :=
125131endif
126132
127- CFG_RUNTIME :=$(call CFG_LIB_NAME,rustrt)
128- CFG_RUSTLLVM :=$(call CFG_LIB_NAME,rustllvm)
129- CFG_CORELIB :=$(call CFG_LIB_NAME,core)
130- CFG_STDLIB :=$(call CFG_LIB_NAME,std)
131- CFG_LIBRUSTC :=$(call CFG_LIB_NAME,rustc)
132- CFG_LIBSYNTAX :=$(call CFG_LIB_NAME,syntax)
133- CFG_LIBFUZZER :=$(call CFG_LIB_NAME,fuzzer)
134- CFG_LIBRUSTPKG :=$(call CFG_LIB_NAME,rustpkg)
135- CFG_LIBRUSTDOC :=$(call CFG_LIB_NAME,rustdoc)
136- CFG_LIBRUSTI :=$(call CFG_LIB_NAME,rusti)
137- CFG_LIBRUST :=$(call CFG_LIB_NAME,rust)
138-
139- STDLIB_GLOB :=$(call CFG_LIB_GLOB,std)
140- CORELIB_GLOB :=$(call CFG_LIB_GLOB,core)
141- LIBRUSTC_GLOB :=$(call CFG_LIB_GLOB,rustc)
142- LIBSYNTAX_GLOB :=$(call CFG_LIB_GLOB,syntax)
143- LIBFUZZER_GLOB :=$(call CFG_LIB_GLOB,fuzzer)
144- LIBRUSTPKG_GLOB :=$(call CFG_LIB_GLOB,rustpkg)
145- LIBRUSTDOC_GLOB :=$(call CFG_LIB_GLOB,rustdoc)
146- LIBRUSTI_GLOB :=$(call CFG_LIB_GLOB,rusti)
147- LIBRUST_GLOB :=$(call CFG_LIB_GLOB,rust)
148- STDLIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,std)
149- CORELIB_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,core)
150- LIBRUSTC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustc)
151- LIBSYNTAX_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,syntax)
152- LIBFUZZER_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,fuzzer)
153- LIBRUSTPKG_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustpkg)
154- LIBRUSTDOC_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rustdoc)
155- LIBRUSTI_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rusti)
156- LIBRUST_DSYM_GLOB :=$(call CFG_LIB_DSYM_GLOB,rust)
157-
158133# version-string calculation
159134CFG_GIT_DIR := $(CFG_SRC_DIR ) .git
160135CFG_RELEASE = 0.6
@@ -193,7 +168,12 @@ else
193168endif
194169
195170S := $(CFG_SRC_DIR )
196- X := $(CFG_EXE_SUFFIX )
171+
172+ define DEF_X
173+ X_$(1 ) := $(CFG_EXE_SUFFIX_$(1 ) )
174+ endef
175+ $(foreach target,$(CFG_TARGET_TRIPLES),\
176+ $(eval $(call DEF_X,$(target))))
197177
198178# Look in doc and src dirs.
199179VPATH := $(S ) doc $(S ) src
@@ -209,6 +189,49 @@ GENERATED :=
209189% :: s.%
210190% :: SCCS/s.%
211191
192+
193+ # #####################################################################
194+ # Crates
195+ # #####################################################################
196+
197+ define DEF_LIBS
198+
199+ CFG_RUNTIME_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,rustrt)
200+ CFG_RUSTLLVM_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,rustllvm)
201+ CFG_CORELIB_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,core)
202+ CFG_STDLIB_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,std)
203+ CFG_LIBRUSTC_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,rustc)
204+ CFG_LIBSYNTAX_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,syntax)
205+ CFG_LIBFUZZER_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,fuzzer)
206+ CFG_LIBRUSTPKG_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,rustpkg)
207+ CFG_LIBRUSTDOC_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,rustdoc)
208+ CFG_LIBRUSTI_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,rusti)
209+ CFG_LIBRUST_$(1 ) :=$(call CFG_LIB_NAME_$(1 ) ,rust)
210+
211+ STDLIB_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,std)
212+ CORELIB_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,core)
213+ LIBRUSTC_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,rustc)
214+ LIBSYNTAX_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,syntax)
215+ LIBFUZZER_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,fuzzer)
216+ LIBRUSTPKG_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,rustpkg)
217+ LIBRUSTDOC_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,rustdoc)
218+ LIBRUSTI_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,rusti)
219+ LIBRUST_GLOB_$(1 ) :=$(call CFG_LIB_GLOB_$(1 ) ,rust)
220+ STDLIB_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,std)
221+ CORELIB_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,core)
222+ LIBRUSTC_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,rustc)
223+ LIBSYNTAX_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,syntax)
224+ LIBFUZZER_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,fuzzer)
225+ LIBRUSTPKG_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,rustpkg)
226+ LIBRUSTDOC_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,rustdoc)
227+ LIBRUSTI_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,rusti)
228+ LIBRUST_DSYM_GLOB_$(1 ) :=$(call CFG_LIB_DSYM_GLOB_$(1 ) ,rust)
229+
230+ endef
231+
232+ $(foreach target,$(CFG_TARGET_TRIPLES),\
233+ $(eval $(call DEF_LIBS,$(target))))
234+
212235# #####################################################################
213236# Core library variables
214237# #####################################################################
@@ -254,8 +277,8 @@ CFG_LLVM_BUILD_DIR_$(1):=$$(CFG_LLVM_BUILD_DIR_$(subst -,_,$(1)))
254277CFG_LLVM_INST_DIR_$(1 ) :=$$(CFG_LLVM_INST_DIR_$(subst -,_,$(1 ) ) )
255278
256279# Any rules that depend on LLVM should depend on LLVM_CONFIG
257- LLVM_CONFIG_$(1 ) :=$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llvm-config$$(X )
258- LLVM_MC_$(1 ) :=$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llvm-mc$$(X )
280+ LLVM_CONFIG_$(1 ) :=$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llvm-config$$(X_ $( 1 ) )
281+ LLVM_MC_$(1 ) :=$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llvm-mc$$(X_ $( 1 ) )
259282LLVM_VERSION_$(1 ) =$$(shell "$$(LLVM_CONFIG_$(1 ) ) " --version)
260283LLVM_BINDIR_$(1 ) =$$(shell "$$(LLVM_CONFIG_$(1 ) ) " --bindir)
261284LLVM_INCDIR_$(1 ) =$$(shell "$$(LLVM_CONFIG_$(1 ) ) " --includedir)
@@ -267,13 +290,13 @@ LLVM_LDFLAGS_$(1)=$$(shell "$$(LLVM_CONFIG_$(1))" --ldflags)
267290LLVM_CXXFLAGS_$(1 ) =$$(subst -I, -iquote , $$(shell "$$(LLVM_CONFIG_$(1 ) ) " --cxxflags) )
268291LLVM_HOST_TRIPLE_$(1 ) =$$(shell "$$(LLVM_CONFIG_$(1 ) ) " --host-target)
269292
270- LLVM_AS_$(1 ) =$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llvm-as$$(X )
271- LLC_$(1 ) =$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llc$$(X )
293+ LLVM_AS_$(1 ) =$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llvm-as$$(X_ $( 1 ) )
294+ LLC_$(1 ) =$$(CFG_LLVM_INST_DIR_$(1 ) ) /bin/llc$$(X_ $( 1 ) )
272295
273296endef
274297
275- $(foreach target ,$(CFG_TARGET_TRIPLES ), \
276- $(eval $(call DEF_LLVM_VARS,$(target ))))
298+ $(foreach host ,$(CFG_HOST_TRIPLES ), \
299+ $(eval $(call DEF_LLVM_VARS,$(host ))))
277300
278301# #####################################################################
279302# Exports for sub-utilities
@@ -285,7 +308,7 @@ $(foreach target,$(CFG_TARGET_TRIPLES), \
285308export CFG_SRC_DIR
286309export CFG_BUILD_DIR
287310export CFG_VERSION
288- export CFG_HOST_TRIPLE
311+ export CFG_BUILD_TRIPLE
289312export CFG_LLVM_ROOT
290313export CFG_ENABLE_MINGW_CROSS
291314export CFG_PREFIX
@@ -332,26 +355,26 @@ ifdef CFG_DISABLE_SHAREDSTD
332355 $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /librustc.rlib
333356else
334357 HCORELIB_DEFAULT$(1)_H_$(3) = \
335- $$(HLIB$(1 ) _H_$(3 ) ) /$(CFG_CORELIB )
358+ $$(HLIB$(1 ) _H_$(3 ) ) /$(CFG_CORELIB_ $( 3 ) )
336359 TCORELIB_DEFAULT$(1)_T_$(2)_H_$(3) = \
337- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$(CFG_CORELIB )
360+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$(CFG_CORELIB_ $( 2 ) )
338361
339362 HSTDLIB_DEFAULT$(1)_H_$(3) = \
340- $$(HLIB$(1 ) _H_$(3 ) ) /$(CFG_STDLIB )
363+ $$(HLIB$(1 ) _H_$(3 ) ) /$(CFG_STDLIB_ $( 3 ) )
341364 TSTDLIB_DEFAULT$(1)_T_$(2)_H_$(3) = \
342- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$(CFG_STDLIB )
365+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$(CFG_STDLIB_ $( 2 ) )
343366
344367 HLIBRUSTC_DEFAULT$(1)_H_$(3) = \
345- $$(HLIB$(1 ) _H_$(3 ) ) /$(CFG_LIBRUSTC )
368+ $$(HLIB$(1 ) _H_$(3 ) ) /$(CFG_LIBRUSTC_ $( 3 ) )
346369 TLIBRUSTC_DEFAULT$(1)_T_$(2)_H_$(3) = \
347- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$(CFG_LIBRUSTC )
370+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$(CFG_LIBRUSTC_ $( 2 ) )
348371endif
349372
350373# Preqrequisites for using the stageN compiler
351374HSREQ$(1 ) _H_$(3 ) = \
352- $$(HBIN$(1 ) _H_$(3 ) ) /rustc$$(X ) \
353- $$(HLIB$(1 ) _H_$(3 ) ) /$$( CFG_RUNTIME ) \
354- $$(HLIB$(1 ) _H_$(3 ) ) /$$( CFG_RUSTLLVM ) \
375+ $$(HBIN$(1 ) _H_$(3 ) ) /rustc$$(X_ $( 3 ) ) \
376+ $$(HLIB$(1 ) _H_$(3 ) ) /$( CFG_RUNTIME_ $( 3 ) ) \
377+ $$(HLIB$(1 ) _H_$(3 ) ) /$( CFG_RUSTLLVM_ $( 3 ) ) \
355378 $$(HCORELIB_DEFAULT$(1 ) _H_$(3 ) ) \
356379 $$(HSTDLIB_DEFAULT$(1 ) _H_$(3 ) ) \
357380 $$(HLIBSYNTAX_DEFAULT$(1 ) _H_$(3 ) ) \
@@ -361,37 +384,37 @@ HSREQ$(1)_H_$(3) = \
361384# Prerequisites for using the stageN compiler to build target artifacts
362385TSREQ$(1 ) _T_$(2 ) _H_$(3 ) = \
363386 $$(HSREQ$(1 ) _H_$(3 ) ) \
364- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_RUNTIME ) \
387+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_RUNTIME_ $( 2 ) ) \
365388 $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /libmorestack.a
366389
367390# Prerequisites for a working stageN compiler and libraries, for a specific target
368391SREQ$(1 ) _T_$(2 ) _H_$(3 ) = \
369392 $$(TSREQ$(1 ) _T_$(2 ) _H_$(3 ) ) \
370- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_CORELIB ) \
371- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_STDLIB )
393+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_CORELIB_ $( 2 ) ) \
394+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_STDLIB_ $( 2 ) )
372395
373396# Prerequisites for a working stageN compiler and libraries, for a specific target
374397CSREQ$(1 ) _T_$(2 ) _H_$(3 ) = \
375398 $$(TSREQ$(1 ) _T_$(2 ) _H_$(3 ) ) \
376- $$(HBIN$(1 ) _H_$(3 ) ) /fuzzer$$(X ) \
377- $$(HBIN$(1 ) _H_$(3 ) ) /rustpkg$$(X ) \
378- $$(HBIN$(1 ) _H_$(3 ) ) /rustdoc$$(X ) \
379- $$(HBIN$(1 ) _H_$(3 ) ) /rusti$$(X ) \
380- $$(HBIN$(1 ) _H_$(3 ) ) /rust$$(X ) \
381- $$(HLIB$(1 ) _H_$(3 ) ) /$$( CFG_LIBFUZZER ) \
382- $$(HLIB$(1 ) _H_$(3 ) ) /$$( CFG_LIBRUSTPKG ) \
383- $$(HLIB$(1 ) _H_$(3 ) ) /$$( CFG_LIBRUSTDOC ) \
384- $$(HLIB$(1 ) _H_$(3 ) ) /$$( CFG_LIBRUSTI ) \
385- $$(HLIB$(1 ) _H_$(3 ) ) /$$( CFG_LIBRUST ) \
386- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_CORELIB ) \
387- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_STDLIB ) \
388- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_LIBSYNTAX ) \
389- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_LIBRUSTC ) \
390- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_LIBFUZZER ) \
391- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_LIBRUSTPKG ) \
392- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_LIBRUSTDOC ) \
393- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_LIBRUSTI ) \
394- $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$$( CFG_LIBRUST )
399+ $$(HBIN$(1 ) _H_$(3 ) ) /fuzzer$$(X_ $( 3 ) ) \
400+ $$(HBIN$(1 ) _H_$(3 ) ) /rustpkg$$(X_ $( 3 ) ) \
401+ $$(HBIN$(1 ) _H_$(3 ) ) /rustdoc$$(X_ $( 3 ) ) \
402+ $$(HBIN$(1 ) _H_$(3 ) ) /rusti$$(X_ $( 3 ) ) \
403+ $$(HBIN$(1 ) _H_$(3 ) ) /rust$$(X_ $( 3 ) ) \
404+ $$(HLIB$(1 ) _H_$(3 ) ) /$( CFG_LIBFUZZER_ $( 3 ) ) \
405+ $$(HLIB$(1 ) _H_$(3 ) ) /$( CFG_LIBRUSTPKG_ $( 3 ) ) \
406+ $$(HLIB$(1 ) _H_$(3 ) ) /$( CFG_LIBRUSTDOC_ $( 3 ) ) \
407+ $$(HLIB$(1 ) _H_$(3 ) ) /$( CFG_LIBRUSTI_ $( 3 ) ) \
408+ $$(HLIB$(1 ) _H_$(3 ) ) /$( CFG_LIBRUST_ $( 3 ) ) \
409+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_CORELIB_ $( 2 ) ) \
410+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_STDLIB_ $( 2 ) ) \
411+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_LIBSYNTAX_ $( 2 ) ) \
412+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_LIBRUSTC_ $( 2 ) ) \
413+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_LIBFUZZER_ $( 2 ) ) \
414+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_LIBRUSTPKG_ $( 2 ) ) \
415+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_LIBRUSTDOC_ $( 2 ) ) \
416+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_LIBRUSTI_ $( 2 ) ) \
417+ $$(TLIB$(1 ) _T_$(2 ) _H_$(3 ) ) /$( CFG_LIBRUST_ $( 2 ) )
395418
396419ifeq ($(1 ) ,0)
397420# Don't run the the stage0 compiler under valgrind - that ship has sailed
@@ -409,28 +432,30 @@ CFGFLAG$(1)_T_$(2)_H_$(3) = stage$(1)
409432# if you're building a cross config, the host->* parts are
410433# effectively stage1, since it uses the just-built stage0.
411434ifeq ($(1 ) ,0)
412- ifneq ($(strip $(CFG_HOST_TRIPLE ) ) ,$(strip $(3 ) ) )
435+ ifneq ($(strip $(CFG_BUILD_TRIPLE ) ) ,$(strip $(3 ) ) )
413436CFGFLAG$(1)_T_$(2)_H_$(3) = stage1
414437endif
415438endif
416439
417440STAGE$(1 ) _T_$(2 ) _H_$(3 ) := \
418- $$(Q )$$(call CFG_RUN_TARG ,$(1 ) , \
441+ $$(Q )$$(call CFG_RUN_TARG_ $( 3 ) ,$(1 ) , \
419442 $$(CFG_VALGRIND_COMPILE$(1 ) ) \
420- $$(HBIN$(1 ) _H_$(3 ) ) /rustc$$(X ) \
443+ $$(HBIN$(1 ) _H_$(3 ) ) /rustc$$(X_ $( 3 ) ) \
421444 --cfg $$(CFGFLAG$(1 ) _T_$(2 ) _H_$(3 ) ) \
422- $$(CFG_RUSTC_FLAGS ) $$(EXTRAFLAGS_STAGE$(1 ) ) --target=$(2 ) )
445+ $$(CFG_RUSTC_FLAGS ) $$(EXTRAFLAGS_STAGE$(1 ) ) --target=$(2 ) ) \
446+ $$(RUSTC_FLAGS_$(2 ) )
423447
424448PERF_STAGE$(1 ) _T_$(2 ) _H_$(3 ) := \
425- $$(Q )$$(call CFG_RUN_TARG ,$(1 ) , \
449+ $$(Q )$$(call CFG_RUN_TARG_ $( 3 ) ,$(1 ) , \
426450 $$(CFG_PERF_TOOL ) \
427- $$(HBIN$(1 ) _H_$(3 ) ) /rustc$$(X ) \
451+ $$(HBIN$(1 ) _H_$(3 ) ) /rustc$$(X_ $( 3 ) ) \
428452 --cfg $$(CFGFLAG$(1 ) _T_$(2 ) _H_$(3 ) ) \
429- $$(CFG_RUSTC_FLAGS ) $$(EXTRAFLAGS_STAGE$(1 ) ) --target=$(2 ) )
453+ $$(CFG_RUSTC_FLAGS ) $$(EXTRAFLAGS_STAGE$(1 ) ) --target=$(2 ) ) \
454+ $$(RUSTC_FLAGS_$(2 ) )
430455
431456endef
432457
433- $(foreach build,$(CFG_TARGET_TRIPLES ), \
458+ $(foreach build,$(CFG_HOST_TRIPLES ), \
434459 $(eval $(foreach target,$(CFG_TARGET_TRIPLES), \
435460 $(eval $(foreach stage,$(STAGES), \
436461 $(eval $(call SREQ,$(stage),$(target),$(build))))))))
@@ -451,13 +476,13 @@ rustc-stage$(2)-H-$(1): \
451476
452477endef
453478
454- $(foreach host,$(CFG_TARGET_TRIPLES ), \
479+ $(foreach host,$(CFG_HOST_TRIPLES ), \
455480 $(eval $(foreach stage,1 2 3, \
456481 $(eval $(call DEF_RUSTC_STAGE_TARGET,$(host),$(stage))))))
457482
458- rustc-stage1 : rustc-stage1-H-$(CFG_HOST_TRIPLE )
459- rustc-stage2 : rustc-stage2-H-$(CFG_HOST_TRIPLE )
460- rustc-stage3 : rustc-stage3-H-$(CFG_HOST_TRIPLE )
483+ rustc-stage1 : rustc-stage1-H-$(CFG_BUILD_TRIPLE )
484+ rustc-stage2 : rustc-stage2-H-$(CFG_BUILD_TRIPLE )
485+ rustc-stage3 : rustc-stage3-H-$(CFG_BUILD_TRIPLE )
461486
462487define DEF_RUSTC_TARGET
463488# $(1) == architecture
@@ -468,12 +493,12 @@ endef
468493$(foreach host,$(CFG_TARGET_TRIPLES), \
469494 $(eval $(call DEF_RUSTC_TARGET,$(host))))
470495
471- rustc-stage1 : rustc-stage1-H-$(CFG_HOST_TRIPLE )
472- rustc-stage2 : rustc-stage2-H-$(CFG_HOST_TRIPLE )
473- rustc-stage3 : rustc-stage3-H-$(CFG_HOST_TRIPLE )
474- rustc : rustc-H-$(CFG_HOST_TRIPLE )
496+ rustc-stage1 : rustc-stage1-H-$(CFG_BUILD_TRIPLE )
497+ rustc-stage2 : rustc-stage2-H-$(CFG_BUILD_TRIPLE )
498+ rustc-stage3 : rustc-stage3-H-$(CFG_BUILD_TRIPLE )
499+ rustc : rustc-H-$(CFG_BUILD_TRIPLE )
475500
476- rustc-H-all : $(foreach host,$(CFG_TARGET_TRIPLES ) ,rustc-H-$(host ) )
501+ rustc-H-all : $(foreach host,$(CFG_HOST_TRIPLES ) ,rustc-H-$(host ) )
477502
478503# #####################################################################
479504# Entrypoint rule
@@ -489,19 +514,27 @@ CFG_INFO := $(info cfg: *** stage2 and later will not be built ***)
489514CFG_INFO := $(info cfg:)
490515
491516# XXX This is surely busted
492- all : $(SREQ1$(CFG_HOST_TRIPLE ) ) $(GENERATED ) docs
517+ all : $(SREQ1$(CFG_BUILD_TRIPLE ) ) $(GENERATED ) docs
493518
494519else
495520
496521define ALL_TARGET_N
522+ ifneq ($$(findstring $(1 ) ,$$(CFG_HOST_TRIPLES ) ) ,)
523+ # This is a host
497524all-target-$(1 ) -host-$(2 ) : $$(CSREQ2_T_$(1 ) _H_$(2 ) )
525+ else
526+ # This is a target only
527+ all-target-$(1 ) -host-$(2 ) : $$(SREQ2_T_$(1 ) _H_$(2 ) )
528+ endif
498529endef
499530
500531$(foreach target,$(CFG_TARGET_TRIPLES), \
501- $(eval $(call ALL_TARGET_N,$(target),$(CFG_HOST_TRIPLE))))
532+ $(foreach host,$(CFG_HOST_TRIPLES), \
533+ $(eval $(call ALL_TARGET_N,$(target),$(host)))))
502534
503535ALL_TARGET_RULES = $(foreach target,$(CFG_TARGET_TRIPLES ) , \
504- all-target-$(target ) -host-$(CFG_HOST_TRIPLE ) )
536+ $(foreach host,$(CFG_HOST_TRIPLES ) , \
537+ all-target-$(target ) -host-$(host ) ) )
505538
506539all : $(ALL_TARGET_RULES ) $(GENERATED ) docs
507540
0 commit comments