build: Emulate std::to_string when it is missing

Change-Id: I4a08cf4abe7a2064a0c53d29582cbb761a1d131f
Refs: #2743
diff --git a/.waf-tools/compiler-features.py b/.waf-tools/compiler-features.py
index 5344939..774784d 100644
--- a/.waf-tools/compiler-features.py
+++ b/.waf-tools/compiler-features.py
@@ -18,10 +18,37 @@
 
 @conf
 def check_override(self):
-    if self.check_cxx(msg='Checking for override specifier',
-                      fragment=OVERRIDE,
-                      features='cxx', mandatory=False):
-        self.define('HAVE_CXX_OVERRIDE', 1)
+    self.check_cxx(msg='Checking for override specifier',
+                   fragment=OVERRIDE,
+                   define_name='HAVE_CXX_OVERRIDE',
+                   features='cxx', mandatory=False)
+
+STD_TO_STRING = '''
+#include <string>
+int
+main(int argc, char** argv)
+{
+  std::string s = std::to_string(0);
+  s = std::to_string(0l);
+  s = std::to_string(0ll);
+  s = std::to_string(0u);
+  s = std::to_string(0ul);
+  s = std::to_string(0ull);
+  s = std::to_string(0.0f);
+  s = std::to_string(0.0);
+  s = std::to_string(0.0l);
+  s.clear();
+  return 0;
+}
+'''
+
+@conf
+def check_std_to_string(self):
+    self.check_cxx(msg='Checking for std::to_string',
+                   fragment=STD_TO_STRING,
+                   define_name='HAVE_STD_TO_STRING',
+                   features='cxx', mandatory=False)
 
 def configure(conf):
     conf.check_override()
+    conf.check_std_to_string()