cherry-pick ahead of the automerger: Merge "Revert "Fix the mac build.""
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: