diff --git a/srec/include/portable.h b/srec/include/portable.h
index 3d39931..c9cc0ea 100644
--- a/srec/include/portable.h
+++ b/srec/include/portable.h
@@ -38,11 +38,6 @@
 
 #define ASSERT passert
 
-/* QNX defines log in math.h */
-#ifndef log
-#define log(X)          ((X) <= 1e-32 ? -MAX_LOG : log(X))
-/* #define exp(X)          ((X) < FLT_MIN_EXP ? 0.0 : exp(X)) */
-#endif
 /*  Allocation macros
 */
 
diff --git a/tools/grxmlcompile/Android.mk b/tools/grxmlcompile/Android.mk
index 4c9fe44..82d931a 100644
--- a/tools/grxmlcompile/Android.mk
+++ b/tools/grxmlcompile/Android.mk
@@ -63,8 +63,13 @@
 LOCAL_SHARED_LIBRARIES += libfst
 endif
 
+LOCAL_CLANG := true
+
 LOCAL_CPPFLAGS += -std=c++11
 
+# Workaround clang 3.5 bug: b/15319952
+LOCAL_CFLAGS += -O1
+
 LOCAL_STATIC_LIBRARIES := \
 	libtinyxml \
 
@@ -75,4 +80,6 @@
 
 LOCAL_MODULE:= grxmlcompile
 
+include external/libcxx/libcxx.mk
+
 include $(BUILD_HOST_EXECUTABLE)
diff --git a/tools/make_cfst/Android.mk b/tools/make_cfst/Android.mk
index 16470cd..9c7cc5a 100644
--- a/tools/make_cfst/Android.mk
+++ b/tools/make_cfst/Android.mk
@@ -24,6 +24,8 @@
 	$(ASR_GLOBAL_DEFINES) \
 	$(ASR_GLOBAL_CPPFLAGS) \
 
+LOCAL_CLANG := true
+
 LOCAL_CPPFLAGS += -std=c++11
 
 LOCAL_SHARED_LIBRARIES := \
@@ -51,4 +53,6 @@
 
 LOCAL_MODULE:= make_cfst
 
+include external/libcxx/libcxx.mk
+
 include $(BUILD_HOST_EXECUTABLE)
diff --git a/tools/thirdparty/OpenFst/fst/lib/Android.mk b/tools/thirdparty/OpenFst/fst/lib/Android.mk
index 6e89e3c..dfd3686 100644
--- a/tools/thirdparty/OpenFst/fst/lib/Android.mk
+++ b/tools/thirdparty/OpenFst/fst/lib/Android.mk
@@ -16,7 +16,9 @@
 LOCAL_CFLAGS += \
 	-DFST_DL \
 
-LOCAL_CPPFLAGS +=  -std=c++11
+LOCAL_CLANG := true
+
+LOCAL_CPPFLAGS += -std=c++11
 
 LOCAL_SHARED_LIBRARIES := \
 
@@ -24,4 +26,6 @@
 
 LOCAL_MODULE := libfst
 
+include external/libcxx/libcxx.mk
+
 include $(BUILD_HOST_SHARED_LIBRARY)
diff --git a/tools/thirdparty/OpenFst/fst/lib/const-fst.h b/tools/thirdparty/OpenFst/fst/lib/const-fst.h
index ebeeb34..01196c9 100644
--- a/tools/thirdparty/OpenFst/fst/lib/const-fst.h
+++ b/tools/thirdparty/OpenFst/fst/lib/const-fst.h
@@ -211,9 +211,11 @@
     strm.write("", 1);
   strm.write(reinterpret_cast<char *>(arcs_), narcs_ * sizeof(A));
   strm.flush();
-  if (!strm)
+  if (!strm) {
     LOG(ERROR) << "ConstFst::Write: Write failed: " << opts.source;
-  return strm;
+    return false;
+  }
+  return true;
 }
 
 // Simple concrete immutable FST.  This class attaches interface to
diff --git a/tools/thirdparty/OpenFst/fst/lib/encode.h b/tools/thirdparty/OpenFst/fst/lib/encode.h
index b577d4a..e21ff20 100644
--- a/tools/thirdparty/OpenFst/fst/lib/encode.h
+++ b/tools/thirdparty/OpenFst/fst/lib/encode.h
@@ -137,9 +137,11 @@
       tuple->weight.Write(strm);
     }
     strm.flush();
-    if (!strm)
+    if (!strm) {
       LOG(ERROR) << "EncodeTable::Write: write failed: " << source;
-    return strm;
+      return false;
+    }
+    return true;
   }
 
   bool Read(istream &strm, const string &source) {
@@ -166,9 +168,11 @@
       encode_tuples_.push_back(tuple);
       encode_hash_[encode_tuples_.back()] = encode_tuples_.size();
     }
-    if (!strm)
+    if (!strm) {
       LOG(ERROR) << "EncodeTable::Read: read failed: " << source;
-    return strm;
+      return false;
+    }
+    return true;
   }
 
   uint32 flags() const { return flags_; }
diff --git a/tools/thirdparty/OpenFst/fst/lib/fst-decl.h b/tools/thirdparty/OpenFst/fst/lib/fst-decl.h
index a5cdc75..0a18b38 100644
--- a/tools/thirdparty/OpenFst/fst/lib/fst-decl.h
+++ b/tools/thirdparty/OpenFst/fst/lib/fst-decl.h
@@ -27,8 +27,8 @@
 class LogWeight;
 class TropicalWeight;
 
-class LogArc;
-class StdArc;
+struct LogArc;
+struct StdArc;
 
 template <class A> class ConstFst;
 template <class A> class ExpandedFst;
diff --git a/tools/thirdparty/OpenFst/fst/lib/fst.cpp b/tools/thirdparty/OpenFst/fst/lib/fst.cpp
index 3b8c9ef..6ec0884 100644
--- a/tools/thirdparty/OpenFst/fst/lib/fst.cpp
+++ b/tools/thirdparty/OpenFst/fst/lib/fst.cpp
@@ -65,9 +65,11 @@
   ReadType(strm, &start_);
   ReadType(strm, &numstates_);
   ReadType(strm, &numarcs_);
-  if (!strm)
+  if (!strm) {
     LOG(ERROR) << "FstHeader::Read: read failed: " << source;
-  return strm;
+    return false;
+  }
+  return true;
 }
 
 // Write Fst magic number and Fst header.
@@ -81,9 +83,11 @@
   WriteType(strm, start_);
   WriteType(strm, numstates_);
   WriteType(strm, numarcs_);
-  if (!strm)
+  if (!strm) {
     LOG(ERROR) << "FstHeader::Write: write failed: " << source;
-  return strm;
+    return false;
+  }
+  return true;
 }
 
 }
diff --git a/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp b/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp
index d4715da..a27d3cf 100644
--- a/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp
+++ b/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp
@@ -138,9 +138,11 @@
     WriteType(strm, it->second);
   }
   strm.flush();
-  if (!strm)
+  if (!strm) {
     LOG(ERROR) << "SymbolTable::Write: write failed";
-  return strm;
+    return false;
+  }
+  return true;
 }
 
 bool SymbolTableImpl::WriteText(ostream &strm) const {
@@ -150,9 +152,11 @@
     strm.write(line, strlen(line));
   }
   strm.flush();
-  if (!strm)
+  if (!strm) {
     LOG(ERROR) << "SymbolTable::WriteText: write failed";
-  return strm;
+    return false;
+  }
+  return true;
 }
 
 }  // namespace fst
diff --git a/tools/thirdparty/OpenFst/fst/lib/vector-fst.h b/tools/thirdparty/OpenFst/fst/lib/vector-fst.h
index fde934a..b5603d6 100644
--- a/tools/thirdparty/OpenFst/fst/lib/vector-fst.h
+++ b/tools/thirdparty/OpenFst/fst/lib/vector-fst.h
@@ -440,9 +440,11 @@
     }
   }
   strm.flush();
-  if (!strm)
+  if (!strm) {
     LOG(ERROR) << "VectorFst::Write: write failed: " << opts.source;
-  return strm;
+    return false;
+  }
+  return true;
 }
 
 // Simple concrete, mutable FST. Supports additional operations:
