diff --git a/srec/include/portable.h b/srec/include/portable.h
index c9cc0ea..3d39931 100644
--- a/srec/include/portable.h
+++ b/srec/include/portable.h
@@ -38,6 +38,11 @@
 
 #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 183e264..4c9fe44 100644
--- a/tools/grxmlcompile/Android.mk
+++ b/tools/grxmlcompile/Android.mk
@@ -63,8 +63,6 @@
 LOCAL_SHARED_LIBRARIES += libfst
 endif
 
-LOCAL_CLANG := true
-
 LOCAL_CPPFLAGS += -std=c++11
 
 LOCAL_STATIC_LIBRARIES := \
@@ -77,6 +75,4 @@
 
 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 9c7cc5a..16470cd 100644
--- a/tools/make_cfst/Android.mk
+++ b/tools/make_cfst/Android.mk
@@ -24,8 +24,6 @@
 	$(ASR_GLOBAL_DEFINES) \
 	$(ASR_GLOBAL_CPPFLAGS) \
 
-LOCAL_CLANG := true
-
 LOCAL_CPPFLAGS += -std=c++11
 
 LOCAL_SHARED_LIBRARIES := \
@@ -53,6 +51,4 @@
 
 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 dfd3686..6e89e3c 100644
--- a/tools/thirdparty/OpenFst/fst/lib/Android.mk
+++ b/tools/thirdparty/OpenFst/fst/lib/Android.mk
@@ -16,9 +16,7 @@
 LOCAL_CFLAGS += \
 	-DFST_DL \
 
-LOCAL_CLANG := true
-
-LOCAL_CPPFLAGS += -std=c++11
+LOCAL_CPPFLAGS +=  -std=c++11
 
 LOCAL_SHARED_LIBRARIES := \
 
@@ -26,6 +24,4 @@
 
 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 01196c9..ebeeb34 100644
--- a/tools/thirdparty/OpenFst/fst/lib/const-fst.h
+++ b/tools/thirdparty/OpenFst/fst/lib/const-fst.h
@@ -211,11 +211,9 @@
     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 false;
-  }
-  return true;
+  return strm;
 }
 
 // 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 e21ff20..b577d4a 100644
--- a/tools/thirdparty/OpenFst/fst/lib/encode.h
+++ b/tools/thirdparty/OpenFst/fst/lib/encode.h
@@ -137,11 +137,9 @@
       tuple->weight.Write(strm);
     }
     strm.flush();
-    if (!strm) {
+    if (!strm)
       LOG(ERROR) << "EncodeTable::Write: write failed: " << source;
-      return false;
-    }
-    return true;
+    return strm;
   }
 
   bool Read(istream &strm, const string &source) {
@@ -168,11 +166,9 @@
       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 false;
-    }
-    return true;
+    return strm;
   }
 
   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 0a18b38..a5cdc75 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;
 
-struct LogArc;
-struct StdArc;
+class LogArc;
+class 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 6ec0884..3b8c9ef 100644
--- a/tools/thirdparty/OpenFst/fst/lib/fst.cpp
+++ b/tools/thirdparty/OpenFst/fst/lib/fst.cpp
@@ -65,11 +65,9 @@
   ReadType(strm, &start_);
   ReadType(strm, &numstates_);
   ReadType(strm, &numarcs_);
-  if (!strm) {
+  if (!strm)
     LOG(ERROR) << "FstHeader::Read: read failed: " << source;
-    return false;
-  }
-  return true;
+  return strm;
 }
 
 // Write Fst magic number and Fst header.
@@ -83,11 +81,9 @@
   WriteType(strm, start_);
   WriteType(strm, numstates_);
   WriteType(strm, numarcs_);
-  if (!strm) {
+  if (!strm)
     LOG(ERROR) << "FstHeader::Write: write failed: " << source;
-    return false;
-  }
-  return true;
+  return strm;
 }
 
 }
diff --git a/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp b/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp
index a27d3cf..d4715da 100644
--- a/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp
+++ b/tools/thirdparty/OpenFst/fst/lib/symbol-table.cpp
@@ -138,11 +138,9 @@
     WriteType(strm, it->second);
   }
   strm.flush();
-  if (!strm) {
+  if (!strm)
     LOG(ERROR) << "SymbolTable::Write: write failed";
-    return false;
-  }
-  return true;
+  return strm;
 }
 
 bool SymbolTableImpl::WriteText(ostream &strm) const {
@@ -152,11 +150,9 @@
     strm.write(line, strlen(line));
   }
   strm.flush();
-  if (!strm) {
+  if (!strm)
     LOG(ERROR) << "SymbolTable::WriteText: write failed";
-    return false;
-  }
-  return true;
+  return strm;
 }
 
 }  // namespace fst
diff --git a/tools/thirdparty/OpenFst/fst/lib/vector-fst.h b/tools/thirdparty/OpenFst/fst/lib/vector-fst.h
index b5603d6..fde934a 100644
--- a/tools/thirdparty/OpenFst/fst/lib/vector-fst.h
+++ b/tools/thirdparty/OpenFst/fst/lib/vector-fst.h
@@ -440,11 +440,9 @@
     }
   }
   strm.flush();
-  if (!strm) {
+  if (!strm)
     LOG(ERROR) << "VectorFst::Write: write failed: " << opts.source;
-    return false;
-  }
-  return true;
+  return strm;
 }
 
 // Simple concrete, mutable FST. Supports additional operations:
