summaryrefslogtreecommitdiffstats
path: root/vendor/backtrace/build.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:02:58 +0000
commit698f8c2f01ea549d77d7dc3338a12e04c11057b9 (patch)
tree173a775858bd501c378080a10dca74132f05bc50 /vendor/backtrace/build.rs
parentInitial commit. (diff)
downloadrustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.tar.xz
rustc-698f8c2f01ea549d77d7dc3338a12e04c11057b9.zip
Adding upstream version 1.64.0+dfsg1.upstream/1.64.0+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/backtrace/build.rs')
-rw-r--r--vendor/backtrace/build.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/vendor/backtrace/build.rs b/vendor/backtrace/build.rs
new file mode 100644
index 000000000..812fbb1fe
--- /dev/null
+++ b/vendor/backtrace/build.rs
@@ -0,0 +1,41 @@
+extern crate cc;
+
+use std::env;
+
+fn main() {
+ match env::var("CARGO_CFG_TARGET_OS").unwrap_or_default().as_str() {
+ "android" => build_android(),
+ _ => {}
+ }
+}
+
+fn build_android() {
+ let expansion = match cc::Build::new().file("src/android-api.c").try_expand() {
+ Ok(result) => result,
+ Err(e) => {
+ println!("failed to run C compiler: {}", e);
+ return;
+ }
+ };
+ let expansion = match std::str::from_utf8(&expansion) {
+ Ok(s) => s,
+ Err(_) => return,
+ };
+ println!("expanded android version detection:\n{}", expansion);
+ let marker = "APIVERSION";
+ let i = match expansion.find(marker) {
+ Some(i) => i,
+ None => return,
+ };
+ let version = match expansion[i + marker.len() + 1..].split_whitespace().next() {
+ Some(s) => s,
+ None => return,
+ };
+ let version = match version.parse::<u32>() {
+ Ok(n) => n,
+ Err(_) => return,
+ };
+ if version >= 21 {
+ println!("cargo:rustc-cfg=feature=\"dl_iterate_phdr\"");
+ }
+}