Skip to content

Commit 095e673

Browse files
QuietMisdreavusjyn514
authored andcommitted
Add extra-targets to package metadata
1 parent be4a0c1 commit 095e673

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/docbuilder/metadata.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ use failure::err_msg;
2020
/// all-features = true
2121
/// no-default-features = true
2222
/// default-target = "x86_64-unknown-linux-gnu"
23+
/// extra-targets = [ "x86_64-apple-darwin", "x86_64-pc-windows-msvc" ]
2324
/// rustc-args = [ "--example-rustc-arg" ]
2425
/// rustdoc-args = [ "--example-rustdoc-arg" ]
2526
/// ```
@@ -43,6 +44,11 @@ pub struct Metadata {
4344
/// is always built on this target. You can change default target by setting this.
4445
pub default_target: Option<String>,
4546

47+
/// Docs.rs doesn't automatically build extra targets for crates. If you want a crate to build
48+
/// for multiple targets, set `extra-targets` to the list of targets to build, in addition to
49+
/// `default-target`.
50+
pub extra_targets: Vec<String>,
51+
4652
/// List of command line arguments for `rustc`.
4753
pub rustc_args: Option<Vec<String>>,
4854

@@ -87,6 +93,7 @@ impl Metadata {
8793
default_target: None,
8894
rustc_args: None,
8995
rustdoc_args: None,
96+
extra_targets: Vec::new(),
9097
}
9198
}
9299

@@ -111,6 +118,9 @@ impl Metadata {
111118
.and_then(|v| v.as_bool()).unwrap_or(metadata.all_features);
112119
metadata.default_target = table.get("default-target")
113120
.and_then(|v| v.as_str()).map(|v| v.to_owned());
121+
metadata.extra_targets = table.get("extra-targets").and_then(|f| f.as_array())
122+
.and_then(|f| f.iter().map(|v| v.as_str().map(|v| v.to_owned())).collect())
123+
.unwrap_or_default();
114124
metadata.rustc_args = table.get("rustc-args").and_then(|f| f.as_array())
115125
.and_then(|f| f.iter().map(|v| v.as_str().map(|v| v.to_owned())).collect());
116126
metadata.rustdoc_args = table.get("rustdoc-args").and_then(|f| f.as_array())
@@ -140,6 +150,7 @@ mod test {
140150
all-features = true
141151
no-default-features = true
142152
default-target = "x86_64-unknown-linux-gnu"
153+
extra-targets = [ "x86_64-apple-darwin", "x86_64-pc-windows-msvc" ]
143154
rustc-args = [ "--example-rustc-arg" ]
144155
rustdoc-args = [ "--example-rustdoc-arg" ]
145156
"#;
@@ -159,6 +170,11 @@ mod test {
159170

160171
assert_eq!(metadata.default_target.unwrap(), "x86_64-unknown-linux-gnu".to_owned());
161172

173+
let extra_targets = metadata.extra_targets;
174+
assert_eq!(extra_targets.len(), 2);
175+
assert_eq!(extra_targets[0], "x86_64-apple-darwin");
176+
assert_eq!(extra_targets[1], "x86_64-pc-windows-msvc");
177+
162178
let rustc_args = metadata.rustc_args.unwrap();
163179
assert_eq!(rustc_args.len(), 1);
164180
assert_eq!(rustc_args[0], "--example-rustc-arg".to_owned());

templates/about.hbs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,9 @@ no-default-features = true
162162
# - i686-pc-windows-msvc
163163
default-target = "x86_64-unknown-linux-gnu"
164164

165+
# Extra targets to build, same available targets as `default-target` (default: none)
166+
extra-targets = [ "x86_64-apple-darwin", "x86_64-pc-windows-msvc" ]
167+
165168
# Additional `RUSTFLAGS` to set (default: none)
166169
rustc-args = [ "--example-rustc-arg" ]
167170

0 commit comments

Comments
 (0)