Skip to content

Commit

Permalink
Merge pull request #248 from japaric/libm
Browse files Browse the repository at this point in the history
expose math symbols on wasm32-unknown-unknown
  • Loading branch information
alexcrichton authored Jul 18, 2018
2 parents 5d370bb + d73ccba commit b4a3645
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
[submodule "compiler-rt"]
path = compiler-rt
url = https://github.com/rust-lang/compiler-rt
[submodule "libm"]
path = libm
url = https://github.com/japaric/libm
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@ matrix:
- env: TARGET=thumbv7em-linux-eabi
- env: TARGET=thumbv7em-linux-eabihf
- env: TARGET=thumbv7m-linux-eabi
- env: TARGET=wasm32-unknown-unknown
install: rustup target add $TARGET
script: cargo build --target $TARGET
- env: TARGET=x86_64-apple-darwin
os: osx
- env: TARGET=x86_64-unknown-linux-gnu
Expand Down
1 change: 1 addition & 0 deletions libm
Submodule libm added at d65f60
3 changes: 3 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ pub mod int;
pub mod float;

pub mod mem;
// only for the wasm32-unknown-unknown target
#[cfg(all(target_arch = "wasm32", target_os = "unknown"))]
pub mod math;

#[cfg(target_arch = "arm")]
pub mod arm;
Expand Down
52 changes: 52 additions & 0 deletions src/math.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#[allow(dead_code)]
#[path = "../libm/src/math/mod.rs"]
mod libm;

macro_rules! no_mangle {
($(fn $fun:ident($($iid:ident : $ity:ty),+) -> $oty:ty;)+) => {
intrinsics! {
$(
pub extern "C" fn $fun($($iid: $ity),+) -> $oty {
self::libm::$fun($($iid),+)
}
)+
}
}
}

no_mangle! {
fn acos(x: f64) -> f64;
fn asin(x: f64) -> f64;
fn atan(x: f64) -> f64;
fn atan2(x: f64, y: f64) -> f64;
fn cbrt(x: f64) -> f64;
fn cosh(x: f64) -> f64;
fn expm1(x: f64) -> f64;
fn hypot(x: f64, y: f64) -> f64;
fn log1p(x: f64) -> f64;
fn sinh(x: f64) -> f64;
fn tan(x: f64) -> f64;
fn tanh(x: f64) -> f64;
fn cos(x: f64) -> f64;
fn cosf(x: f32) -> f32;
fn exp(x: f64) -> f64;
fn expf(x: f32) -> f32;
fn log2(x: f64) -> f64;
fn log2f(x: f32) -> f32;
fn log10(x: f64) -> f64;
fn log10f(x: f32) -> f32;
fn log(x: f64) -> f64;
fn logf(x: f32) -> f32;
fn round(x: f64) -> f64;
fn roundf(x: f32) -> f32;
fn sin(x: f64) -> f64;
fn sinf(x: f32) -> f32;
fn pow(x: f64, y: f64) -> f64;
fn powf(x: f32, y: f32) -> f32;
fn exp2(x: f64) -> f64;
fn exp2f(x: f32) -> f32;
fn fmod(x: f64, y: f64) -> f64;
fn fmodf(x: f32, y: f32) -> f32;
fn fma(x: f64, y: f64, z: f64) -> f64;
fn fmaf(x: f32, y: f32, z: f32) -> f32;
}

0 comments on commit b4a3645

Please sign in to comment.