Skip to content

Commit 3668580

Browse files
committed
Add support for xtensa-esp32 target
1 parent 256ec4d commit 3668580

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/lib.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,46 @@ impl Build {
154154
// Defined in Lua >= 5.3
155155
config.define("LUA_USE_WINDOWS", None);
156156
}
157+
_ if target.contains("xtensa-esp32") => {
158+
config
159+
.define("LUA_32BITS", None) // Use 32-bit integers and size_t
160+
.define("LUA_C89_NUMBERS", None) // Use C89 for better compatibility
161+
.flag("-fexceptions")
162+
.flag("-Os") // Optimize for size
163+
.flag("-mlongcalls") // Use long calls to avoid call8 range issues
164+
.flag("-ffunction-sections") // Place each function in its own section
165+
.flag("-fdata-sections"); // Place each data item in its own section
166+
let new_dir = out_dir.join("esp_source");
167+
if new_dir.exists() {
168+
fs::remove_dir_all(&new_dir)
169+
.context(|| format!("Cannot remove '{}'", new_dir.display()))?;
170+
}
171+
fs::create_dir_all(&new_dir)
172+
.context(|| format!("Cannot create '{}'", new_dir.display()))?;
173+
for file in fs::read_dir(manifest_dir.join(version.source_dir())).context(|| {
174+
format!(
175+
"Cannot read '{}'",
176+
manifest_dir.join(version.source_dir()).display()
177+
)
178+
})? {
179+
let file = file?;
180+
let src_file = manifest_dir
181+
.join(version.source_dir())
182+
.join(file.file_name());
183+
let dst_file = new_dir.join(file.file_name());
184+
let content = fs::read(&src_file)
185+
.context(|| format!("Cannot read '{}'", src_file.display()))?
186+
// jumps
187+
.iter()
188+
.map(|&b| b as char)
189+
.collect::<String>()
190+
.replace("_setjmp", "setjmp")
191+
.replace("_longjmp", "longjmp");
192+
fs::write(&dst_file, content)
193+
.context(|| format!("Cannot write to '{}'", dst_file.display()))?;
194+
}
195+
source_dir = new_dir
196+
}
157197
_ if target.ends_with("emscripten") => {
158198
config
159199
.define("LUA_USE_POSIX", None)

0 commit comments

Comments
 (0)