feat(loader): respect NM env var

This commit is contained in:
ObserverOfTime 2025-09-20 17:42:09 +03:00 committed by Amaan Qureshi
parent 79ef484392
commit 6dfa79013f
2 changed files with 12 additions and 5 deletions

View file

@ -946,6 +946,11 @@ impl Loader {
} else {
""
};
let section = if cfg!(all(target_arch = "powerpc64", target_os = "linux")) {
" D "
} else {
" T "
};
let mut must_have = vec![
format!("{prefix}tree_sitter_{name}_external_scanner_create"),
format!("{prefix}tree_sitter_{name}_external_scanner_destroy"),
@ -954,16 +959,16 @@ impl Loader {
format!("{prefix}tree_sitter_{name}_external_scanner_scan"),
];
let command = Command::new("nm")
.arg("-W")
.arg("-U")
let nm_cmd = env::var("NM").unwrap_or_else(|_| "nm".to_owned());
let command = Command::new(nm_cmd)
.arg("--defined-only")
.arg(library_path)
.output();
if let Ok(output) = command {
if output.status.success() {
let mut found_non_static = false;
for line in String::from_utf8_lossy(&output.stdout).lines() {
if line.contains(" T ") {
if line.contains(section) {
if let Some(function_name) =
line.split_whitespace().collect::<Vec<_>>().get(2)
{

View file

@ -1,5 +1,6 @@
use std::{
collections::HashSet,
env,
io::BufRead,
path::PathBuf,
process::{Command, Stdio},
@ -94,7 +95,8 @@ fn check_wasm_exports() -> Result<()> {
}),
);
let nm_child = Command::new("nm")
let nm_cmd = env::var("NM").unwrap_or_else(|_| "nm".to_owned());
let nm_child = Command::new(nm_cmd)
.arg("-W")
.arg("-U")
.arg("libtree-sitter.so")