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.
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.
11 ################################################################################
12 # Rust's standard distribution of crates and tools
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.
19 # Here's an explanation of the variables below
22 # This list of crates will be built for all targets, including
23 # cross-compiled targets
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
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)
39 # These lists are the dependencies of the <crate> that is to be built.
40 # Rust dependencies are listed bare (i.e. std, green) and native
41 # dependencies have a "native:" prefix (i.e. native:hoedown). All deps
42 # will be built before the crate itself is built.
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
48 # You shouldn't need to modify much other than these variables. Crates are
49 # automatically generated for all stage/host/target combinations.
50 ################################################################################
52 TARGET_CRATES := libc std green native flate arena glob term semver \
53 uuid serialize sync getopts collections num test time rand \
54 url log regex graphviz core rbml rlibc alloc debug rustrt \
56 HOST_CRATES := syntax rustc rustdoc fourcc hexfloat regex_macros fmt_macros \
58 CRATES := $(TARGET_CRATES) $(HOST_CRATES)
59 TOOLS := compiletest rustdoc rustc
65 DEPS_alloc := core libc native:jemalloc
67 DEPS_rustrt := alloc core libc collections native:rustrt_native
68 DEPS_std := core libc rand alloc collections rustrt sync unicode \
69 native:rust_builtin native:backtrace
71 DEPS_green := std native:context_switch
73 DEPS_syntax := std term serialize log fmt_macros debug arena libc
74 DEPS_rustc := syntax flate arena serialize getopts rbml \
75 time log graphviz debug rustc_llvm rustc_back
76 DEPS_rustc_llvm := native:rustllvm libc std
77 DEPS_rustc_back := std syntax rustc_llvm flate log libc
78 DEPS_rustdoc := rustc native:hoedown serialize getopts \
80 DEPS_flate := std native:miniz
84 DEPS_serialize := std log
85 DEPS_rbml := std log serialize
88 DEPS_uuid := std serialize
89 DEPS_sync := core alloc rustrt collections
91 DEPS_collections := core alloc unicode
92 DEPS_fourcc := rustc syntax std
93 DEPS_hexfloat := rustc syntax std
95 DEPS_test := std getopts serialize rbml term time regex native:rust_test_helpers
96 DEPS_time := std serialize
101 DEPS_regex_macros = rustc syntax std regex
102 DEPS_fmt_macros = std
104 TOOL_DEPS_compiletest := test getopts native
105 TOOL_DEPS_rustdoc := rustdoc native
106 TOOL_DEPS_rustc := rustc native
107 TOOL_SOURCE_compiletest := $(S)src/compiletest/compiletest.rs
108 TOOL_SOURCE_rustdoc := $(S)src/driver/driver.rs
109 TOOL_SOURCE_rustc := $(S)src/driver/driver.rs
116 ONLY_RLIB_collections := 1
117 ONLY_RLIB_unicode := 1
119 ################################################################################
120 # You should not need to edit below this line
121 ################################################################################
123 DOC_CRATES := $(filter-out rustc, $(filter-out syntax, $(CRATES)))
124 COMPILER_DOC_CRATES := rustc syntax
126 # This macro creates some simple definitions for each crate being built, just
127 # some munging of all of the parameters above.
129 # $(1) is the crate to generate variables for
131 CRATEFILE_$(1) := $$(S)src/lib$(1)/lib.rs
132 RSINPUTS_$(1) := $$(call rwildcard,$(S)src/lib$(1)/,*.rs)
133 RUST_DEPS_$(1) := $$(filter-out native:%,$$(DEPS_$(1)))
134 NATIVE_DEPS_$(1) := $$(patsubst native:%,%,$$(filter native:%,$$(DEPS_$(1))))
137 $(foreach crate,$(CRATES),$(eval $(call RUST_CRATE,$(crate))))
139 # Similar to the macro above for crates, this macro is for tools
141 # $(1) is the crate to generate variables for
143 TOOL_INPUTS_$(1) := $$(call rwildcard,$$(dir $$(TOOL_SOURCE_$(1))),*.rs)
146 $(foreach crate,$(TOOLS),$(eval $(call RUST_TOOL,$(crate))))