]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
1 | # Copyright 2014 The Rust Project Developers. See the COPYRIGHT |
2 | # file at the top-level directory of this distribution and at | |
3 | # http://rust-lang.org/COPYRIGHT. | |
4 | # | |
5 | # Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | |
6 | # http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | |
7 | # <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | |
8 | # option. This file may not be copied, modified, or distributed | |
9 | # except according to those terms. | |
10 | ||
11 | ################################################################################ | |
12 | # Rust's standard distribution of crates and tools | |
13 | # | |
14 | # The crates outlined below are the standard distribution of libraries provided | |
15 | # in a rust installation. These rules are meant to abstract over the | |
16 | # dependencies (both native and rust) of crates and basically generate all the | |
17 | # necessary makefile rules necessary to build everything. | |
18 | # | |
19 | # Here's an explanation of the variables below | |
20 | # | |
21 | # TARGET_CRATES | |
22 | # This list of crates will be built for all targets, including | |
23 | # cross-compiled targets | |
24 | # | |
25 | # HOST_CRATES | |
26 | # This list of crates will be compiled for only host targets. Note that | |
27 | # this set is explicitly *not* a subset of TARGET_CRATES, but rather it is | |
28 | # a disjoint set. Nothing in the TARGET_CRATES set can depend on crates in | |
29 | # the HOST_CRATES set, but the HOST_CRATES set can depend on target | |
30 | # crates. | |
31 | # | |
32 | # TOOLS | |
33 | # A list of all tools which will be built as part of the compilation | |
34 | # process. It is currently assumed that most tools are built through | |
35 | # src/driver/driver.rs with a particular configuration (there's a | |
36 | # corresponding library providing the implementation) | |
37 | # | |
38 | # DEPS_<crate> | |
39 | # These lists are the dependencies of the <crate> that is to be built. | |
40 | # Rust dependencies are listed bare (i.e. std) and native | |
41 | # dependencies have a "native:" prefix (i.e. native:hoedown). All deps | |
42 | # will be built before the crate itself is built. | |
43 | # | |
44 | # TOOL_DEPS_<tool>/TOOL_SOURCE_<tool> | |
45 | # Similar to the DEPS variable, this is the library crate dependencies | |
46 | # list for tool as well as the source file for the specified tool | |
47 | # | |
48 | # You shouldn't need to modify much other than these variables. Crates are | |
49 | # automatically generated for all stage/host/target combinations. | |
50 | ################################################################################ | |
51 | ||
54a0048b SL |
52 | TARGET_CRATES := libc std term \ |
53 | getopts collections test rand \ | |
54 | core alloc \ | |
e9174d1e | 55 | rustc_unicode rustc_bitflags \ |
7453a54e | 56 | alloc_system alloc_jemalloc |
e9174d1e | 57 | RUSTC_CRATES := rustc rustc_typeck rustc_mir rustc_borrowck rustc_resolve rustc_driver \ |
d9579d0f | 58 | rustc_trans rustc_back rustc_llvm rustc_privacy rustc_lint \ |
54a0048b SL |
59 | rustc_data_structures rustc_platform_intrinsics \ |
60 | rustc_plugin rustc_metadata rustc_passes rustc_save_analysis \ | |
61 | rustc_const_eval rustc_const_math rustc_incremental | |
62 | HOST_CRATES := syntax syntax_ext $(RUSTC_CRATES) rustdoc fmt_macros \ | |
63 | flate arena graphviz rbml log serialize | |
7453a54e | 64 | TOOLS := compiletest rustdoc rustc rustbook error_index_generator |
1a4d82fc JJ |
65 | |
66 | DEPS_core := | |
b039eaaf SL |
67 | DEPS_alloc := core libc alloc_system |
68 | DEPS_alloc_system := core libc | |
7453a54e | 69 | DEPS_alloc_jemalloc := core libc native:jemalloc |
b039eaaf | 70 | DEPS_collections := core alloc rustc_unicode |
1a4d82fc | 71 | DEPS_libc := core |
b039eaaf SL |
72 | DEPS_rand := core |
73 | DEPS_rustc_bitflags := core | |
d9579d0f | 74 | DEPS_rustc_unicode := core |
b039eaaf | 75 | |
d9579d0f | 76 | DEPS_std := core libc rand alloc collections rustc_unicode \ |
9cc50fc6 | 77 | native:backtrace \ |
e9174d1e | 78 | alloc_system |
b039eaaf SL |
79 | DEPS_arena := std |
80 | DEPS_glob := std | |
81 | DEPS_flate := std native:miniz | |
82 | DEPS_fmt_macros = std | |
83 | DEPS_getopts := std | |
1a4d82fc | 84 | DEPS_graphviz := std |
b039eaaf SL |
85 | DEPS_log := std |
86 | DEPS_num := std | |
87 | DEPS_rbml := std log serialize | |
88 | DEPS_serialize := std log | |
54a0048b SL |
89 | DEPS_term := std |
90 | DEPS_test := std getopts term native:rust_test_helpers | |
b039eaaf | 91 | |
54a0048b | 92 | DEPS_syntax := std term serialize log arena libc rustc_bitflags rustc_unicode |
9cc50fc6 | 93 | DEPS_syntax_ext := syntax fmt_macros |
b039eaaf | 94 | |
54a0048b SL |
95 | DEPS_rustc_const_math := std syntax log serialize |
96 | DEPS_rustc_const_eval := rustc_const_math rustc syntax log serialize \ | |
97 | rustc_back graphviz | |
98 | ||
99 | DEPS_rustc := syntax fmt_macros flate arena serialize getopts rbml \ | |
100 | log graphviz rustc_back rustc_data_structures\ | |
101 | rustc_const_math | |
102 | DEPS_rustc_back := std syntax flate log libc | |
103 | DEPS_rustc_borrowck := rustc rustc_mir log graphviz syntax | |
b039eaaf | 104 | DEPS_rustc_data_structures := std log serialize |
1a4d82fc | 105 | DEPS_rustc_driver := arena flate getopts graphviz libc rustc rustc_back rustc_borrowck \ |
e9174d1e | 106 | rustc_typeck rustc_mir rustc_resolve log syntax serialize rustc_llvm \ |
54a0048b SL |
107 | rustc_trans rustc_privacy rustc_lint rustc_plugin \ |
108 | rustc_metadata syntax_ext rustc_passes rustc_save_analysis rustc_const_eval \ | |
109 | rustc_incremental | |
110 | DEPS_rustc_lint := rustc log syntax rustc_const_eval | |
e9174d1e | 111 | DEPS_rustc_llvm := native:rustllvm libc std rustc_bitflags |
54a0048b SL |
112 | DEPS_rustc_metadata := rustc syntax rbml rustc_const_math |
113 | DEPS_rustc_passes := syntax rustc core rustc_const_eval | |
114 | DEPS_rustc_mir := rustc syntax rustc_const_math rustc_const_eval | |
115 | DEPS_rustc_resolve := arena rustc log syntax | |
116 | DEPS_rustc_platform_intrinsics := std | |
7453a54e | 117 | DEPS_rustc_plugin := rustc rustc_metadata syntax rustc_mir |
54a0048b | 118 | DEPS_rustc_privacy := rustc log syntax |
92a42be0 | 119 | DEPS_rustc_trans := arena flate getopts graphviz libc rustc rustc_back rustc_mir \ |
54a0048b SL |
120 | log syntax serialize rustc_llvm rustc_platform_intrinsics \ |
121 | rustc_const_math rustc_const_eval rustc_incremental | |
122 | DEPS_rustc_incremental := rbml rustc serialize rustc_data_structures | |
123 | DEPS_rustc_save_analysis := rustc log syntax | |
124 | DEPS_rustc_typeck := rustc syntax rustc_platform_intrinsics rustc_const_math \ | |
125 | rustc_const_eval | |
b039eaaf | 126 | |
1a4d82fc | 127 | DEPS_rustdoc := rustc rustc_driver native:hoedown serialize getopts \ |
54a0048b | 128 | test rustc_lint rustc_const_eval |
b039eaaf | 129 | |
1a4d82fc | 130 | |
54a0048b | 131 | TOOL_DEPS_compiletest := test getopts log |
1a4d82fc JJ |
132 | TOOL_DEPS_rustdoc := rustdoc |
133 | TOOL_DEPS_rustc := rustc_driver | |
85aaf69f | 134 | TOOL_DEPS_rustbook := std rustdoc |
7453a54e | 135 | TOOL_DEPS_error_index_generator := rustdoc syntax serialize |
1a4d82fc JJ |
136 | TOOL_SOURCE_compiletest := $(S)src/compiletest/compiletest.rs |
137 | TOOL_SOURCE_rustdoc := $(S)src/driver/driver.rs | |
138 | TOOL_SOURCE_rustc := $(S)src/driver/driver.rs | |
54a0048b SL |
139 | TOOL_SOURCE_rustbook := $(S)src/tools/rustbook/main.rs |
140 | TOOL_SOURCE_error_index_generator := $(S)src/tools/error_index_generator/main.rs | |
1a4d82fc JJ |
141 | |
142 | ONLY_RLIB_core := 1 | |
143 | ONLY_RLIB_libc := 1 | |
144 | ONLY_RLIB_alloc := 1 | |
145 | ONLY_RLIB_rand := 1 | |
146 | ONLY_RLIB_collections := 1 | |
d9579d0f | 147 | ONLY_RLIB_rustc_unicode := 1 |
85aaf69f | 148 | ONLY_RLIB_rustc_bitflags := 1 |
e9174d1e | 149 | ONLY_RLIB_alloc_system := 1 |
7453a54e SL |
150 | ONLY_RLIB_alloc_jemalloc := 1 |
151 | ||
152 | TARGET_SPECIFIC_alloc_jemalloc := 1 | |
1a4d82fc | 153 | |
9346a6ac | 154 | # Documented-by-default crates |
d9579d0f AL |
155 | DOC_CRATES := std alloc collections core libc rustc_unicode |
156 | ||
e9174d1e | 157 | ifeq ($(CFG_DISABLE_JEMALLOC),) |
7453a54e | 158 | RUSTFLAGS_rustc_back := --cfg 'feature="jemalloc"' |
e9174d1e SL |
159 | endif |
160 | ||
1a4d82fc JJ |
161 | ################################################################################ |
162 | # You should not need to edit below this line | |
163 | ################################################################################ | |
164 | ||
e9174d1e SL |
165 | CRATES := $(TARGET_CRATES) $(HOST_CRATES) |
166 | ||
1a4d82fc JJ |
167 | # This macro creates some simple definitions for each crate being built, just |
168 | # some munging of all of the parameters above. | |
169 | # | |
170 | # $(1) is the crate to generate variables for | |
171 | define RUST_CRATE | |
62682a34 | 172 | CRATEFILE_$(1) := $$(SREL)src/lib$(1)/lib.rs |
1a4d82fc | 173 | RSINPUTS_$(1) := $$(call rwildcard,$(S)src/lib$(1)/,*.rs) |
1a4d82fc JJ |
174 | NATIVE_DEPS_$(1) := $$(patsubst native:%,%,$$(filter native:%,$$(DEPS_$(1)))) |
175 | endef | |
176 | ||
177 | $(foreach crate,$(CRATES),$(eval $(call RUST_CRATE,$(crate)))) | |
178 | ||
7453a54e SL |
179 | # $(1) - crate |
180 | # $(2) - target | |
181 | define RUST_CRATE_DEPS | |
182 | RUST_DEPS_$(1)_T_$(2) := $$(filter-out native:%,$$(DEPS_$(1))) | |
183 | endef | |
184 | ||
185 | $(foreach target,$(CFG_TARGET),\ | |
186 | $(foreach crate,$(CRATES),$(eval $(call RUST_CRATE_DEPS,$(crate),$(target))))) | |
187 | ||
188 | # $(1) - target | |
189 | # $(2) - crate | |
190 | define DEFINE_TARGET_CRATES | |
191 | ifndef TARGET_SPECIFIC_$(2) | |
192 | TARGET_CRATES_$(1) += $(2) | |
193 | endif | |
194 | endef | |
195 | ||
196 | $(foreach target,$(CFG_TARGET),\ | |
197 | $(foreach crate,$(TARGET_CRATES),\ | |
198 | $(eval $(call DEFINE_TARGET_CRATES,$(target),$(crate))))) | |
199 | ||
1a4d82fc JJ |
200 | # Similar to the macro above for crates, this macro is for tools |
201 | # | |
202 | # $(1) is the crate to generate variables for | |
203 | define RUST_TOOL | |
204 | TOOL_INPUTS_$(1) := $$(call rwildcard,$$(dir $$(TOOL_SOURCE_$(1))),*.rs) | |
205 | endef | |
206 | ||
207 | $(foreach crate,$(TOOLS),$(eval $(call RUST_TOOL,$(crate)))) | |
d9579d0f | 208 | |
92a42be0 SL |
209 | CRATEFILE_libc := $(SREL)src/liblibc/src/lib.rs |
210 | RUSTFLAGS_libc := --cfg stdbuild |