--- /dev/null
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+// Author: Andy Rushton\r
+// Copyright: (c) Southampton University 1999-2004\r
+// (c) Andy Rushton 2004-2009\r
+// License: BSD License, see ../docs/license.html\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+#include "build.hpp"\r
+#include "version.hpp"\r
+#include "dprintf.hpp"\r
+////////////////////////////////////////////////////////////////////////////////\r
+\r
+namespace stlplus\r
+{\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+ // report the platform-specific details of this build\r
+\r
+ std::string build(void)\r
+ {\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+ // work out the platform\r
+\r
+#ifdef _WIN32\r
+ std::string platform("Windows");\r
+#else\r
+ // at present there are no variations between different Unix platforms so\r
+ // they all map onto the generic Unix platform\r
+ std::string platform("Generic Unix");\r
+#endif\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+ // work out the compiler\r
+\r
+#if defined __GNUC__\r
+ std::string compiler(dformat("gcc v%s",__VERSION__));\r
+#elif defined _MSC_VER\r
+ std::string compiler(dformat("MSVC v%0.2f",((float)_MSC_VER)/100.0));\r
+#elif defined __BORLANDC__\r
+ std::string compiler(dformat("Borland v%d.%d",__BORLANDC__/256,__BORLANDC__/16%16));\r
+#else\r
+ std::string compiler("unknown compiler");\r
+#endif\r
+\r
+ ////////////////////////////////////////////////////////////////////////////////\r
+ // work out the kind of build\r
+ // there are two variants - debug and release\r
+\r
+#ifndef NDEBUG\r
+ std::string variant("debug");\r
+#else\r
+ std::string variant("release");\r
+#endif\r
+\r
+ return std::string("STLplus v") + version() + ", " + platform + ", " + compiler + ", " + variant;\r
+ }\r
+\r
+////////////////////////////////////////////////////////////////////////////////\r
+} // end namespace stlplus\r