about summary refs log tree commit diff
path: root/src/libstd/num/f32.rs
diff options
context:
space:
mode:
authorAlex Crichton <alex@alexcrichton.com>2016-04-25 13:39:05 -0700
committerAlex Crichton <alex@alexcrichton.com>2016-04-27 09:28:48 -0700
commitc31e2e77ed955faafffe7b22859f045cc1e5deec (patch)
treef5e315e9518b6c78f18b40a55d70bcc0da86db56 /src/libstd/num/f32.rs
parentcfae4dea875ddcc5f23481106a149ea15b6be1e5 (diff)
downloadrust-c31e2e77ed955faafffe7b22859f045cc1e5deec.tar.gz
rust-c31e2e77ed955faafffe7b22859f045cc1e5deec.zip
std: Add compatibility with android-9
The Gecko folks currently use Android API level 9 for their builds, so they're
requesting that we move back our minimum supported API level from 18 to 9. Turns
out, ABI-wise at least, there's not that many changes we need to take care of.
The `ftruncate64` API appeared in android-12 and the `log2` and `log2f` APIs
appeared in android-18. We can have a simple shim for `ftruncate64` which falls
back on `ftruncate` and the `log2` function can be approximated with just
`ln(f) / ln(2)`.

This should at least get the standard library building on API level 9, although
the tests aren't quite happening there just yet. As we seem to be growing a
number of Android compatibility shims, they're now centralized in a common
`sys::android` module.
Diffstat (limited to 'src/libstd/num/f32.rs')
-rw-r--r--src/libstd/num/f32.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libstd/num/f32.rs b/src/libstd/num/f32.rs
index 624748f352e..94aa3d6b513 100644
--- a/src/libstd/num/f32.rs
+++ b/src/libstd/num/f32.rs
@@ -646,7 +646,10 @@ impl f32 {
     #[stable(feature = "rust1", since = "1.0.0")]
     #[inline]
     pub fn log2(self) -> f32 {
-        unsafe { intrinsics::log2f32(self) }
+        #[cfg(target_os = "android")]
+        return ::sys::android::log2f32(self);
+        #[cfg(not(target_os = "android"))]
+        return unsafe { intrinsics::log2f32(self) };
     }
 
     /// Returns the base 10 logarithm of the number.