]> git.lizzy.rs Git - rust.git/blob - mk/stage0.mk
auto merge of #10164 : brson/rust/configure, r=brson
[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)
19 else
20         $(Q)$(CFG_PYTHON) $(S)src/etc/get-snapshot.py $(CFG_BUILD) $(SNAPSHOT_FILE)
21 ifdef CFG_ENABLE_PAX_FLAGS
22         @$(call E, apply PaX flags: $@)
23         @"$(CFG_PAXCTL)" -cm "$@"
24 endif
25 endif
26         $(Q)touch $@
27
28 # Host libs will be extracted by the above rule
29
30 $(HLIB0_H_$(CFG_BUILD))/$(CFG_RUNTIME_$(CFG_BUILD)): \
31                 $(HBIN0_H_$(CFG_BUILD))/rustc$(X_$(CFG_BUILD)) \
32                 | $(HLIB0_H_$(CFG_BUILD))/
33         $(Q)touch $@
34
35 $(HLIB0_H_$(CFG_BUILD))/$(CFG_STDLIB_$(CFG_BUILD)): \
36                 $(HBIN0_H_$(CFG_BUILD))/rustc$(X_$(CFG_BUILD)) \
37                 | $(HLIB0_H_$(CFG_BUILD))/
38         $(Q)touch $@
39
40 $(HLIB0_H_$(CFG_BUILD))/$(CFG_EXTRALIB_$(CFG_BUILD)): \
41                 $(HBIN0_H_$(CFG_BUILD))/rustc$(X_$(CFG_BUILD)) \
42                 | $(HLIB0_H_$(CFG_BUILD))/
43         $(Q)touch $@
44
45 $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_LIBRUSTUV_$(CFG_BUILD)): \
46                 $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD)) \
47                 | $(HLIB0_H_$(CFG_BUILD_TRIPLE))/
48         $(Q)touch $@
49
50 $(HLIB0_H_$(CFG_BUILD_TRIPLE))/$(CFG_LIBRUSTC_$(CFG_BUILD)): \
51                 $(HBIN0_H_$(CFG_BUILD_TRIPLE))/rustc$(X_$(CFG_BUILD)) \
52                 | $(HLIB0_H_$(CFG_BUILD_TRIPLE))/
53         $(Q)touch $@
54
55 $(HLIB0_H_$(CFG_BUILD))/$(CFG_RUSTLLVM_$(CFG_BUILD)): \
56                 $(HBIN0_H_$(CFG_BUILD))/rustc$(X_$(CFG_BUILD)) \
57                 | $(HLIB0_H_$(CFG_BUILD))/
58         $(Q)touch $@
59
60 # For other targets, let the host build the target:
61
62 define BOOTSTRAP_STAGE0
63   # $(1) target to bootstrap
64   # $(2) stage to bootstrap from
65   # $(3) target to bootstrap from
66
67 $(HBIN0_H_$(1))/:
68         mkdir -p $@
69
70 $(HLIB0_H_$(1))/:
71         mkdir -p $@
72
73 $$(HBIN0_H_$(1))/rustc$$(X_$(1)): \
74                 $$(TBIN$(2)_T_$(1)_H_$(3))/rustc$$(X_$(1)) \
75                 | $(HBIN0_H_$(1))/
76         @$$(call E, cp: $$@)
77         $$(Q)cp $$< $$@
78
79 $$(HLIB0_H_$(1))/$(CFG_RUNTIME_$(1)): \
80                 $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUNTIME_$(1)) \
81                 | $(HLIB0_H_$(1))/
82         @$$(call E, cp: $$@)
83         $$(Q)cp $$< $$@
84
85 $$(HLIB0_H_$(1))/$(CFG_STDLIB_$(1)): \
86                 $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_STDLIB_$(1)) \
87                 | $(HLIB0_H_$(1))/
88         @$$(call E, cp: $$@)
89         $$(call CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_GLOB_$(4)),$$(notdir $$@))
90         $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(STDLIB_GLOB_$(1)) $$@
91         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(STDLIB_GLOB_$(4)),$$(notdir $$@))
92
93 $$(HLIB0_H_$(1))/$(CFG_EXTRALIB_$(1)): \
94                 $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_EXTRALIB_$(1)) \
95                 | $(HLIB0_H_$(1))/
96         @$$(call E, cp: $$@)
97         $$(call CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_GLOB_$(4)),$$(notdir $$@))
98         $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(EXTRALIB_GLOB_$(1)) $$@
99         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(EXTRALIB_GLOB_$(4)),$$(notdir $$@))
100
101 $$(HLIB0_H_$(1))/$(CFG_LIBRUSTUV_$(1)): \
102                 $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_LIBRUSTUV_$(1)) \
103                 | $(HLIB0_H_$(1))/
104         @$$(call E, cp: $$@)
105         $$(call CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
106         $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(LIBRUSTUV_GLOB_$(1)) $$@
107         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTUV_GLOB_$(4)),$$(notdir $$@))
108
109 $$(HLIB0_H_$(1))/$(CFG_LIBRUSTC_$(1)): \
110                 $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_LIBRUSTC_$(1)) \
111                 | $(HLIB0_H_$(1))/
112         @$$(call E, cp: $$@)
113         $$(call CHECK_FOR_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_GLOB_$(4)),$$(notdir $$@))
114         $$(Q)cp $$(TLIB$(2)_T_$(1)_H_$(3))/$(LIBRUSTC_GLOB_$(1)) $$@
115         $$(call LIST_ALL_OLD_GLOB_MATCHES_EXCEPT,$$(dir $$@),$(LIBRUSTC_GLOB_$(4)),$$(notdir $$@))
116
117 $$(HLIB0_H_$(1))/$(CFG_RUSTLLVM_$(1)): \
118                 $$(TLIB$(2)_T_$(1)_H_$(3))/$(CFG_RUSTLLVM_$(1)) \
119                 | $(HLIB0_H_$(1))/
120         @$$(call E, cp: $$@)
121         $$(Q)cp $$< $$@
122
123 endef
124
125 # Use stage1 to build other architectures: then you don't have to wait
126 # for stage2, but you get the latest updates to the compiler source.
127 $(foreach t,$(NON_BUILD_HOSTS),                                                         \
128  $(eval $(call BOOTSTRAP_STAGE0,$(t),1,$(CFG_BUILD))))