diff --git a/reactos/tools/rbuild/backend/backend.cpp b/reactos/tools/rbuild/backend/backend.cpp index 83c6df2b959..dbe975fec41 100644 --- a/reactos/tools/rbuild/backend/backend.cpp +++ b/reactos/tools/rbuild/backend/backend.cpp @@ -29,13 +29,15 @@ Backend::Factory::factories = NULL; int Backend::Factory::ref = 0; -Backend::Factory::Factory ( const std::string& name_ ) +Backend::Factory::Factory ( const std::string& name_, const std::string& description_ ) { string name(name_); strlwr ( &name[0] ); if ( !ref++ ) factories = new map; (*factories)[name] = this; + m_name = name; + m_description = description_; } Backend::Factory::~Factory () diff --git a/reactos/tools/rbuild/backend/backend.h b/reactos/tools/rbuild/backend/backend.h index b8b6db4128a..b71d91e3041 100644 --- a/reactos/tools/rbuild/backend/backend.h +++ b/reactos/tools/rbuild/backend/backend.h @@ -32,10 +32,12 @@ public: { static std::map* factories; static int ref; + std::string m_name; + std::string m_description; protected: - Factory ( const std::string& name_ ); + Factory ( const std::string& name_, const std::string& description_ ); virtual ~Factory(); virtual Backend* operator() ( Project&, @@ -45,6 +47,19 @@ public: static Backend* Create ( const std::string& name, Project& project, Configuration& configuration ); + + static std::map::iterator map_begin(void) + { + return factories->begin(); + } + + static std::map::iterator map_end(void) + { + return factories->end(); + } + + const char *Name(void) { return m_name.c_str(); } + const char *Description(void) { return m_description.c_str(); } }; protected: diff --git a/reactos/tools/rbuild/backend/devcpp/devcpp.cpp b/reactos/tools/rbuild/backend/devcpp/devcpp.cpp index a2328cb9385..a33ee719aea 100644 --- a/reactos/tools/rbuild/backend/devcpp/devcpp.cpp +++ b/reactos/tools/rbuild/backend/devcpp/devcpp.cpp @@ -32,7 +32,7 @@ static class DevCppFactory : public Backend::Factory { public: - DevCppFactory() : Factory("devcpp") {} + DevCppFactory() : Factory("devcpp", "Dev C++") {} Backend *operator() (Project &project, Configuration& configuration) { diff --git a/reactos/tools/rbuild/backend/mingw/mingw.cpp b/reactos/tools/rbuild/backend/mingw/mingw.cpp index 9269ecde656..195e6da3582 100644 --- a/reactos/tools/rbuild/backend/mingw/mingw.cpp +++ b/reactos/tools/rbuild/backend/mingw/mingw.cpp @@ -58,7 +58,7 @@ v2s ( const string_list& v, int wrap_at ) static class MingwFactory : public Backend::Factory { public: - MingwFactory() : Factory ( "mingw" ) {} + MingwFactory() : Factory ( "mingw", "Minimalist GNU Win32" ) {} Backend* operator() ( Project& project, Configuration& configuration ) { diff --git a/reactos/tools/rbuild/backend/msvc/msvc.cpp b/reactos/tools/rbuild/backend/msvc/msvc.cpp index dfadc5ee4a2..418ad69547b 100644 --- a/reactos/tools/rbuild/backend/msvc/msvc.cpp +++ b/reactos/tools/rbuild/backend/msvc/msvc.cpp @@ -38,7 +38,7 @@ static class MSVCFactory : public Backend::Factory { public: - MSVCFactory() : Factory("MSVC") {} + MSVCFactory() : Factory("MSVC", "Microsoft Visual C") {} Backend *operator() (Project &project, Configuration& configuration) { diff --git a/reactos/tools/rbuild/rbuild.cpp b/reactos/tools/rbuild/rbuild.cpp index 42d50522c3c..a9def8560aa 100644 --- a/reactos/tools/rbuild/rbuild.cpp +++ b/reactos/tools/rbuild/rbuild.cpp @@ -17,6 +17,7 @@ */ #include "pch.h" #include +#include #include #ifdef WIN32 @@ -239,9 +240,13 @@ main ( int argc, char** argv ) printf ( " -vs{version} Version of MS VS project files. Default is %s.\n", MS_VS_DEF_VERSION ); printf ( "\n" ); printf ( " buildsystem Target build system. Can be one of:\n" ); - printf ( " mingw MinGW\n" ); - printf ( " devcpp DevC++\n" ); - printf ( " msvc MS Visual Studio\n" ); + + std::map::iterator iter; + for (iter = Backend::Factory::map_begin(); iter != Backend::Factory::map_end(); iter++) + { + Backend::Factory *factory = iter->second; + printf ( " %-10s %s\n", factory->Name(), factory->Description()); + } return 1; } try