diff --git a/sdk-c/README.md b/sdk-c/README.md index 331fce8b6..e2a70da38 100644 --- a/sdk-c/README.md +++ b/sdk-c/README.md @@ -5,7 +5,7 @@ to generate a header file during the build. To generate both: ```shell $ cd /sdk-c -$ cargo build +$ SOLANA_H_OUT_DIR="$(pwd)/include" cargo build ``` This will generate the static library in `/target/deps` and the header file in diff --git a/sdk-c/build.rs b/sdk-c/build.rs index c262c210b..8376982d1 100644 --- a/sdk-c/build.rs +++ b/sdk-c/build.rs @@ -1,12 +1,17 @@ use std::env; use std::fs; -use std::path::Path; +use std::path::{Path, PathBuf}; fn main() { let crate_dir = env::var("CARGO_MANIFEST_DIR").unwrap(); - let out_path = Path::new(&crate_dir); - let out_path = out_path.join(Path::new("include")); + let out_path = if let Ok(path) = env::var("SOLANA_H_OUT_DIR") { + PathBuf::from(path) + } else { + let out_dir = env::var("OUT_DIR").unwrap(); + let out_dir = Path::new(&out_dir); + out_dir.join(Path::new("include")) + }; // Ensure `out_path` exists fs::create_dir_all(&out_path).unwrap_or_else(|err| {