diff options
author | Justin Worthe <justin@worthe-it.co.za> | 2017-12-28 23:06:19 +0200 |
---|---|---|
committer | Justin Worthe <justin@worthe-it.co.za> | 2017-12-28 23:06:19 +0200 |
commit | 452366b0abbae346b2beec761c910b72f3dd2fd6 (patch) | |
tree | 32202dcb26f4c9a76e7c4df02122d8a018e0c70c /src | |
parent | da50c0294696c3a327db4b2a0a089d7977df488e (diff) |
Updated WASM build to use the new wasm32-unknown-unknown target
It's only in the nightly compiler at the moment.
Diffstat (limited to 'src')
-rw-r--r-- | src/emscripten_api.rs | 26 | ||||
-rw-r--r-- | src/lib.rs | 12 | ||||
-rw-r--r-- | src/main.rs | 6 |
3 files changed, 35 insertions, 9 deletions
diff --git a/src/emscripten_api.rs b/src/emscripten_api.rs index e296818..c7f980f 100644 --- a/src/emscripten_api.rs +++ b/src/emscripten_api.rs @@ -3,11 +3,37 @@ use signal::Signal; use pitch::Pitch; use std::os::raw::c_char; +use std::os::raw::c_void; +use std::mem; use std::ffi::CString; use std::slice; use std::f32; #[no_mangle] +pub extern "C" fn malloc(size: usize) -> *mut c_void { + let mut buf = Vec::with_capacity(size); + let ptr = buf.as_mut_ptr(); + mem::forget(buf); + return ptr as *mut c_void; +} + +#[no_mangle] +pub extern "C" fn free(ptr: *mut c_void, cap: usize) { + unsafe { + // after it's in scope, it can go out of scope in the normal + // RAII cleanup. + let _buf = Vec::from_raw_parts(ptr, 0, cap); + } +} + +#[no_mangle] +pub extern "C" fn free_str(ptr: *mut c_char) { + unsafe { + let _ = CString::from_raw(ptr); + } +} + +#[no_mangle] pub extern "C" fn find_fundamental_frequency(signal_ptr: *const f32, signal_length: isize, sample_rate: f32) -> f32 { let signal_slice = unsafe { &slice::from_raw_parts(signal_ptr, signal_length as usize) @@ -3,18 +3,18 @@ pub mod signal; pub mod correlation; pub mod pitch; -#[cfg(not(target_os = "emscripten"))] +#[cfg(not(target_arch = "wasm32"))] extern crate gtk; -#[cfg(not(target_os = "emscripten"))] +#[cfg(not(target_arch = "wasm32"))] extern crate cairo; -#[cfg(not(target_os = "emscripten"))] +#[cfg(not(target_arch = "wasm32"))] pub mod gui; -#[cfg(not(target_os = "emscripten"))] +#[cfg(not(target_arch = "wasm32"))] extern crate portaudio; -#[cfg(not(target_os = "emscripten"))] +#[cfg(not(target_arch = "wasm32"))] pub mod audio; -#[cfg(target_os = "emscripten")] +#[cfg(target_arch = "wasm32")] pub mod emscripten_api; diff --git a/src/main.rs b/src/main.rs index cfc5629..a05c2f7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,6 @@ extern crate rusty_microphone; -#[cfg(not(target_os = "emscripten"))] +#[cfg(not(target_arch = "wasm32"))] fn main() { use rusty_microphone::*; @@ -11,7 +11,7 @@ fn main() { } } -#[cfg(target_os = "emscripten")] +#[cfg(target_arch = "wasm32")] fn main() { - println!("Hello Emscripten"); + println!("Hello Wasm"); } |