]> git.lizzy.rs Git - rust.git/blob - mk/stage0.mk
librustc: Don't try to perform the magical
[rust.git] / mk / stage0.mk
1 # Extract the snapshot host compiler
2
3 $(HBIN0_H_$(CFG_BUILD))/:
4         mkdir -p $@
5
6 $(HLIB0_H_$(CFG_BUILD))/:
7         mkdir -p $@
8
9 $(SNAPSHOT_RUSTC_POST_CLEANUP):                                         \
10                 $(S)src/snapshots.txt                                   \
11                 $(S)src/etc/get-snapshot.py $(MKFILE_DEPS)              \
12                 | $(HBIN0_H_$(CFG_BUILD))/
13
14         @$(call E, fetch: $@)
15 #   Note: the variable "SNAPSHOT_FILE" is generally not set, and so
16 #   we generally only pass one argument to this script.
17 ifdef CFG_ENABLE_LOCAL_RUST
18         $(Q)$(S)src/etc/local_stage0.sh $(CFG_BUILD) $(CFG_LOCAL_RUST_ROOT) rustlib
19 else
20         $(Q)$(CFG_PYTHON) $(S)src/etc/get-snapshot.py $(CFG_BUILD) $(SNAPSHOT_FILE)
21 endif
22         $(Q)touch $@
23
24 # For other targets, let the host build the target:
25
26 define BOOTSTRAP_STAGE0
27   # $(1) target to bootstrap
28   # $(2) stage to bootstrap from
29   # $(3) target to bootstrap from
30
31 $(HBIN0_H_$(1))/:
32         mkdir -p $@
33
34 $(HLIB0_H_$(1))/:
35         mkdir -p $@
36
37 $$(HBIN0_H_$(1))/rustc$$(X_$(1)): \
38                 $$(TBIN$(2)_T_$(1)_H_$(3))/rustc$$(X_$(1)) \
39                 | $(HBIN0_H_$(1))/
40         @$$(call E, cp: $$@)
41         $$(Q)cp $$< $$@
42
43 endef
44
45 # Use stage1 to build other architectures: then you don't have to wait
46 # for stage2, but you get the latest updates to the compiler source.
47 $(foreach t,$(NON_BUILD_HOST),                                                          \
48  $(eval $(call BOOTSTRAP_STAGE0,$(t),1,$(CFG_BUILD))))