Skip to content

Commit b316693

Browse files
committed
updates HEAP_SIZE to be configurable for embedded alloc
1 parent c50113d commit b316693

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

ledger_secure_sdk_sys/build.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
extern crate cc;
22
use glob::glob;
3+
use std::fs;
34
use std::path::{Path, PathBuf};
45
use std::process::Command;
56
use std::{env, fs::File, io::BufRead, io::BufReader, io::Read};
@@ -575,6 +576,17 @@ impl SDKBuilder {
575576
.write_to_file(out_path.join("bindings.rs"))
576577
.expect("Couldn't write bindings");
577578
}
579+
580+
fn generate_heap_size(&self) {
581+
// Read the HEAP_SIZE environment variable, default to 8192 if not set
582+
let heap_size = env::var("HEAP_SIZE").unwrap_or_else(|_| "8192".to_string());
583+
584+
// Generate the heap_size.rs file with the HEAP_SIZE value
585+
let out_dir = env::var("OUT_DIR").unwrap();
586+
let dest_path = Path::new(&out_dir).join("heap_size.rs");
587+
fs::write(&dest_path, format!("pub const HEAP_SIZE: usize = {};", heap_size))
588+
.expect("Unable to write file");
589+
}
578590
}
579591

580592
fn main() {
@@ -585,6 +597,7 @@ fn main() {
585597
sdk_builder.cxdefines();
586598
sdk_builder.build_c_sdk();
587599
sdk_builder.generate_bindings();
600+
sdk_builder.generate_heap_size();
588601
}
589602

590603
fn finalize_nanos_configuration(command: &mut cc::Build, bolos_sdk: &Path) {

ledger_secure_sdk_sys/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ unsafe impl critical_section::Impl for CriticalSection {
6363
#[no_mangle]
6464
#[cfg(feature = "heap")]
6565
extern "C" fn heap_init() {
66-
const HEAP_SIZE: usize = 8192;
66+
// HEAP_SIZE comes from heap_size.rs, which is defined via env var and build.rs
6767
static mut HEAP_MEM: [MaybeUninit<u8>; HEAP_SIZE] = [MaybeUninit::uninit(); HEAP_SIZE];
6868
unsafe { HEAP.init(HEAP_MEM.as_ptr() as usize, HEAP_SIZE) }
6969
}
@@ -73,3 +73,4 @@ extern "C" fn heap_init() {
7373
extern "C" fn heap_init() {}
7474

7575
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
76+
include!(concat!(env!("OUT_DIR"), "/heap_size.rs"));

0 commit comments

Comments
 (0)