Add support for cross compilation for wasm/wasi
When using rust after this commit
1a491e2304
the target family for wasm targets is now set to "wasm". Also fix the
assumption that OsStrExt lives inside std::os::unix for all non-windows
targets.
This commit is contained in:
parent
1ae3d87973
commit
b0f7145f9c
2
build.rs
2
build.rs
|
@ -536,6 +536,8 @@ fn load_cross_compile_info(cross_compile_config: CrossCompileConfig) -> Result<I
|
|||
Some(os) if os == "unix" => load_cross_compile_from_sysconfigdata(cross_compile_config),
|
||||
// Use hardcoded interpreter config when targeting Windows
|
||||
Some(os) if os == "windows" => windows_hardcoded_cross_compile(cross_compile_config),
|
||||
// sysconfigdata works fine on wasm/wasi
|
||||
Some(os) if os == "wasm" => load_cross_compile_from_sysconfigdata(cross_compile_config),
|
||||
// Waiting for users to tell us what they expect on their target platform
|
||||
Some(os) => bail!(
|
||||
"Unsupported target OS family for cross-compilation: {:?}",
|
||||
|
|
|
@ -22,6 +22,9 @@ impl ToPyObject for OsStr {
|
|||
// https://doc.rust-lang.org/src/std/sys_common/mod.rs.html#59
|
||||
#[cfg(not(windows))]
|
||||
{
|
||||
#[cfg(target_os = "wasi")]
|
||||
let bytes = std::os::wasi::ffi::OsStrExt::as_bytes(self);
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
let bytes = std::os::unix::ffi::OsStrExt::as_bytes(self);
|
||||
|
||||
let ptr = bytes.as_ptr() as *const c_char;
|
||||
|
@ -68,6 +71,11 @@ impl FromPyObject<'_> for OsString {
|
|||
};
|
||||
|
||||
// Create an OsStr view into the raw bytes from Python
|
||||
#[cfg(target_os = "wasi")]
|
||||
let os_str: &OsStr = std::os::wasi::ffi::OsStrExt::from_bytes(
|
||||
fs_encoded_bytes.as_ref(ob.py()).as_bytes(),
|
||||
);
|
||||
#[cfg(not(target_os = "wasi"))]
|
||||
let os_str: &OsStr = std::os::unix::ffi::OsStrExt::from_bytes(
|
||||
fs_encoded_bytes.as_ref(ob.py()).as_bytes(),
|
||||
);
|
||||
|
|
Loading…
Reference in a new issue