Fix broken android framework builds where 32-bit MIPS compilers lack 64-bit __sync operators.

R=mtklein@google.com, reed@google.com, scroggo@google.com

Review URL: https://codereview.chromium.org/398153002
diff --git a/gyp/common_conditions.gypi b/gyp/common_conditions.gypi
index 2e8bf3c..55651de 100644
--- a/gyp/common_conditions.gypi
+++ b/gyp/common_conditions.gypi
@@ -363,8 +363,6 @@
         'IGNORE_ROT_AA_RECT_OPT',
         'SkLONGLONG int64_t',
         'SK_DEFAULT_FONT_CACHE_LIMIT   (768 * 1024)',
-        'SK_ATOMICS_PLATFORM_H "../../src/ports/SkAtomics_sync.h"',
-        'SK_MUTEX_PLATFORM_H "../../src/ports/SkMutex_pthread.h"',
         # Transitional, for deprecated SkCanvas::SaveFlags methods.
         'SK_ATTR_DEPRECATED=SK_NOTHING_ARG1',
         'SK_DEFAULT_GLOBAL_DISCARDABLE_MEMORY_POOL_SIZE (512 * 1024)',
diff --git a/src/ports/SkAtomics_sync.h b/src/ports/SkAtomics_sync.h
index ed9e3d1..6355082 100644
--- a/src/ports/SkAtomics_sync.h
+++ b/src/ports/SkAtomics_sync.h
@@ -17,7 +17,15 @@
 }
 
 static inline __attribute__((always_inline)) int64_t sk_atomic_inc(int64_t* addr) {
+#if defined(SK_BUILD_FOR_ANDROID_FRAMEWORK) && defined(__mips__) && !defined(__LP64__)
+    /** The 32-bit MIPS toolchain for the android framework is missing support
+     *  for __sync* functions that operate on 64-bit values. The workaround is
+     *  to use __atomic* functions until we can move everything to <stdatomic.h>.
+     */
+    return __atomic_fetch_add(addr, 1, __ATOMIC_SEQ_CST);
+#else
     return __sync_fetch_and_add(addr, 1);
+#endif
 }
 
 static inline __attribute__((always_inline)) int32_t sk_atomic_add(int32_t* addr, int32_t inc) {