1use std::env;
2use std::path::PathBuf;
3
4pub fn setup_gnu() {
5 let libnode_path: Option = search_libnode_path();
6 if let Some(libnode_dir: PathBuf) = libnode_path {
7 let node_lib_path: PathBuf = libnode_dir.join(path:"libnode.dll");
8 if node_lib_path.exists() {
9 println!("cargo:rustc-link-search=native={}", libnode_dir.display());
10 println!("cargo:rustc-link-lib=node");
11 } else {
12 panic!("libnode.dll not found in {}", libnode_dir.display());
13 }
14 } else {
15 panic!("libnode.dll not found in any search path");
16 }
17}
18
19fn search_libnode_path() -> Option<PathBuf> {
20 if let Ok(path) = env::var("LIBNODE_PATH") {
21 let libnode_dir = PathBuf::from(path);
22 if libnode_dir.exists() {
23 return Some(libnode_dir);
24 }
25 }
26
27 if let Ok(paths) = env::var("LIBPATH") {
28 for path in env::split_paths(&paths) {
29 if path.join("libnode.dll").exists() {
30 return Some(path);
31 }
32 }
33 }
34
35 if let Ok(paths) = env::var("PATH") {
36 for path in env::split_paths(&paths) {
37 if path.join("libnode.dll").exists() {
38 return Some(path);
39 }
40 }
41 }
42
43 None
44}
45