Merge changes I9b557dff,I5ab5b0fd,I6702ff08 into main
* changes: Detect proc macros from metadata. Convert force-rlib. Sort features.
This commit is contained in:
@@ -326,6 +326,7 @@ impl Crate {
|
|||||||
}
|
}
|
||||||
out.cfgs.sort();
|
out.cfgs.sort();
|
||||||
out.cfgs.dedup();
|
out.cfgs.dedup();
|
||||||
|
out.features.sort();
|
||||||
|
|
||||||
if out.name.is_empty() {
|
if out.name.is_empty() {
|
||||||
bail!("missing --crate-name");
|
bail!("missing --crate-name");
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ fn parse_cargo_metadata(
|
|||||||
Some(Extern {
|
Some(Extern {
|
||||||
name: dependency_name.to_owned(),
|
name: dependency_name.to_owned(),
|
||||||
lib_name: dependency_name.to_owned(),
|
lib_name: dependency_name.to_owned(),
|
||||||
extern_type: ExternType::Rust,
|
extern_type: extern_type(&metadata.packages, &dependency.name),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
@@ -162,7 +162,7 @@ fn parse_cargo_metadata(
|
|||||||
Some(Extern {
|
Some(Extern {
|
||||||
name: dependency_name.to_owned(),
|
name: dependency_name.to_owned(),
|
||||||
lib_name: dependency_name.to_owned(),
|
lib_name: dependency_name.to_owned(),
|
||||||
extern_type: ExternType::Rust,
|
extern_type: extern_type(&metadata.packages, &dependency.name),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
@@ -188,6 +188,18 @@ fn parse_cargo_metadata(
|
|||||||
Ok(crates)
|
Ok(crates)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Checks whether the given package is a proc macro.
|
||||||
|
fn extern_type(packages: &[PackageMetadata], package_name: &str) -> ExternType {
|
||||||
|
let Some(package) = packages.iter().find(|package| package.name == package_name) else {
|
||||||
|
return ExternType::Rust;
|
||||||
|
};
|
||||||
|
if package.targets.iter().any(|target| target.kind.contains(&TargetKind::ProcMacro)) {
|
||||||
|
ExternType::ProcMacro
|
||||||
|
} else {
|
||||||
|
ExternType::Rust
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Given a package ID like
|
/// Given a package ID like
|
||||||
/// `"either 1.8.1 (path+file:///usr/local/google/home/qwandor/aosp/external/rust/crates/either)"`,
|
/// `"either 1.8.1 (path+file:///usr/local/google/home/qwandor/aosp/external/rust/crates/either)"`,
|
||||||
/// returns the path to the package, e.g.
|
/// returns the path to the package, e.g.
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ pub struct Config {
|
|||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
features: String,
|
features: String,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
|
force_rlib: bool,
|
||||||
|
#[serde(default)]
|
||||||
host_first_multilib: bool,
|
host_first_multilib: bool,
|
||||||
min_sdk_version: Option<String>,
|
min_sdk_version: Option<String>,
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
@@ -89,6 +91,7 @@ impl Config {
|
|||||||
.collect();
|
.collect();
|
||||||
let package_config = PackageConfig {
|
let package_config = PackageConfig {
|
||||||
device_supported: self.device,
|
device_supported: self.device,
|
||||||
|
force_rlib: self.force_rlib,
|
||||||
host_supported: !self.no_host,
|
host_supported: !self.no_host,
|
||||||
host_first_multilib: self.host_first_multilib,
|
host_first_multilib: self.host_first_multilib,
|
||||||
dep_blocklist,
|
dep_blocklist,
|
||||||
|
|||||||
Reference in New Issue
Block a user