summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSudarsana Babu Nagineni <sudarsana.babu@mapbox.com>2018-08-09 17:13:05 +0300
committerSudarsana Babu Nagineni <sudarsana.babu@mapbox.com>2018-08-10 13:43:05 +0300
commitd1f1ef922f329f3a5f729c34dde615d5afeb5ac6 (patch)
tree6723114e41ac03fc27ab02de508aaa6fcdd345b2
parent0130c58fdd74edbbfe668f3125a9377554d7d605 (diff)
downloadqtlocation-mapboxgl-d1f1ef922f329f3a5f729c34dde615d5afeb5ac6.tar.gz
Fix Android build
Cherry picked from commit fc0745a699a0ef60c080e9c2ff5eaecde9cb5306
-rw-r--r--include/mbgl/math/log2.hpp16
-rw-r--r--mapbox-gl-native.pro4
-rw-r--r--src/mbgl/renderer/buckets/symbol_bucket.cpp4
-rw-r--r--src/mbgl/util/tile_cover.cpp1
4 files changed, 23 insertions, 2 deletions
diff --git a/include/mbgl/math/log2.hpp b/include/mbgl/math/log2.hpp
index 6a1ba23ed9..3136ac22b4 100644
--- a/include/mbgl/math/log2.hpp
+++ b/include/mbgl/math/log2.hpp
@@ -2,6 +2,11 @@
#include <cmath>
#include <cstdint>
+#include <type_traits>
+
+#if defined(__ANDROID__)
+#include <android/api-level.h>
+#endif
namespace mbgl {
namespace util {
@@ -12,3 +17,14 @@ uint32_t ceil_log2(uint64_t x);
} // namespace util
} // namespace mbgl
+
+// log2 is not available on Android before API 18.
+#if defined(__ANDROID__) && defined(__GNUC__) && \
+ defined(__ANDROID_API__) && __ANDROID_API__ < 18
+
+template <typename T>
+typename std::enable_if_t<std::is_floating_point<T>::value, T> log2(T x) {
+ return ::log(x) / M_LN2;
+}
+
+#endif
diff --git a/mapbox-gl-native.pro b/mapbox-gl-native.pro
index 2f499b6ec5..ed974db779 100644
--- a/mapbox-gl-native.pro
+++ b/mapbox-gl-native.pro
@@ -29,6 +29,10 @@ android|win32|darwin|qnx {
platform/default/thread.cpp
}
+android|gcc {
+ QMAKE_CFLAGS += -std=c99
+}
+
darwin {
LIBS += \
-framework Foundation
diff --git a/src/mbgl/renderer/buckets/symbol_bucket.cpp b/src/mbgl/renderer/buckets/symbol_bucket.cpp
index 0a1530ae74..9b73124be4 100644
--- a/src/mbgl/renderer/buckets/symbol_bucket.cpp
+++ b/src/mbgl/renderer/buckets/symbol_bucket.cpp
@@ -193,8 +193,8 @@ void SymbolBucket::sortFeatures(const float angle) {
std::sort(symbolInstanceIndexes.begin(), symbolInstanceIndexes.end(), [sin, cos, this](size_t &aIndex, size_t &bIndex) {
const SymbolInstance& a = symbolInstances[aIndex];
const SymbolInstance& b = symbolInstances[bIndex];
- const int32_t aRotated = static_cast<int32_t>(std::lround(sin * a.anchor.point.x + cos * a.anchor.point.y));
- const int32_t bRotated = static_cast<int32_t>(std::lround(sin * b.anchor.point.x + cos * b.anchor.point.y));
+ const int32_t aRotated = static_cast<int32_t>(::lround(sin * a.anchor.point.x + cos * a.anchor.point.y));
+ const int32_t bRotated = static_cast<int32_t>(::lround(sin * b.anchor.point.x + cos * b.anchor.point.y));
return aRotated != bRotated ?
aRotated < bRotated :
a.dataFeatureIndex > b.dataFeatureIndex;
diff --git a/src/mbgl/util/tile_cover.cpp b/src/mbgl/util/tile_cover.cpp
index 3f39e53d40..f58d1270bd 100644
--- a/src/mbgl/util/tile_cover.cpp
+++ b/src/mbgl/util/tile_cover.cpp
@@ -4,6 +4,7 @@
#include <mbgl/map/transform_state.hpp>
#include <mbgl/util/tile_cover_impl.hpp>
#include <mbgl/util/tile_coordinate.hpp>
+#include <mbgl/math/log2.hpp>
#include <functional>
#include <list>