prompt to configure for Mingw after building project files
authorSteven Edwards <winehacker@gmail.com>
Sun, 21 Aug 2005 19:35:19 +0000 (19:35 +0000)
committerSteven Edwards <winehacker@gmail.com>
Sun, 21 Aug 2005 19:35:19 +0000 (19:35 +0000)
svn path=/trunk/; revision=17468

reactos/tools/rbuild/backend/msvc/msvc.cpp

index 79750f6..4baaec1 100644 (file)
 #include <string>\r
 \r
 #include "msvc.h"\r
 #include <string>\r
 \r
 #include "msvc.h"\r
+#include "../mingw/mingw.h"\r
 \r
 using namespace std;\r
 \r
 \r
 using namespace std;\r
 \r
+char get_key(char *valid,char *prompt); //FIXME\r
+bool spawn_new(const string& cmd); //FIXME\r
 void gen_guid();\r
 \r
 static class MSVCFactory : public Backend::Factory\r
 void gen_guid();\r
 \r
 static class MSVCFactory : public Backend::Factory\r
@@ -53,6 +56,9 @@ MSVCBackend::MSVCBackend(Project &project,
 \r
 void MSVCBackend::Process()\r
 {\r
 \r
 void MSVCBackend::Process()\r
 {\r
+       bool exec = false;\r
+    const char rbuild_mingw[] = "output-i386\\tools\\rbuild\\rbuild.exe mingw"; \r
+\r
        string filename = ProjectNode.name + ".sln";\r
        \r
        cout << "Creating MSVC project: " << filename << endl;\r
        string filename = ProjectNode.name + ".sln";\r
        \r
        cout << "Creating MSVC project: " << filename << endl;\r
@@ -84,21 +90,25 @@ void MSVCBackend::Process()
        m_devFile << "  EndGlobalSection" << endl;\r
        m_devFile << "EndGlobal" << endl;\r
 \r
        m_devFile << "  EndGlobalSection" << endl;\r
        m_devFile << "EndGlobal" << endl;\r
 \r
-       OutputFolders();\r
-\r
        m_devFile << endl << endl;\r
 \r
        m_devFile << endl << endl;\r
 \r
-       OutputFileUnits();\r
-\r
        m_devFile.close();\r
        m_devFile.close();\r
-       \r
+\r
+       gen_guid();\r
+\r
        // The MSVC build still needs the mingw backend.\r
        // The MSVC build still needs the mingw backend.\r
-       \r
+       ProcessModules();\r
+\r
        cout << "Done." << endl << endl;\r
 \r
        cout << "Don't expect the MSVC backend to work yet. "<< endl << endl;\r
 \r
        cout << "Done." << endl << endl;\r
 \r
        cout << "Don't expect the MSVC backend to work yet. "<< endl << endl;\r
 \r
-       gen_guid();\r
+       if(get_key("yn","Would you like to configure for a Mingw build as well? (y/n)") == 'y')\r
+       {\r
+               exec = spawn_new(rbuild_mingw);\r
+                       if (!exec)\r
+                               printf("\nError invoking rbuild\n");\r
+       }\r
 }\r
 \r
 void MSVCBackend::ProcessModules()\r
 }\r
 \r
 void MSVCBackend::ProcessModules()\r
@@ -206,20 +216,31 @@ void MSVCBackend::OutputFolders()
        }\r
 }\r
 \r
        }\r
 }\r
 \r
-void MSVCBackend::OutputFileUnits()\r
+\r
+char get_key(char *valid,char *prompt)\r
 {\r
 {\r
-       for(size_t i = 0; i < m_fileUnits.size(); i++)\r
-       {\r
-               m_devFile << "[Unit" << i + 1 << "]" << endl;\r
-               \r
+    int ch,okay;\r
+\r
+    while (1) {\r
+       if (prompt) printf("%s ",prompt);\r
+       fflush(stdout);\r
+       while (ch = getchar(), ch == ' ' || ch == '\t');\r
+       if (ch == EOF) exit(1);\r
+       if (!strchr(valid,okay = ch)) okay = 0;\r
+       while (ch = getchar(), ch != '\n' && ch != EOF);\r
+       if (ch == EOF) exit(1);\r
+       if (okay) return okay;\r
+       printf("Invalid input.\n");\r
+    }\r
+}\r
 \r
 \r
-               m_devFile << "FileName="                        << m_fileUnits[i].filename << endl;\r
-               m_devFile << "CompileCpp=1"             << endl;\r
-               m_devFile << "Folder="                          << m_fileUnits[i].folder << endl;\r
-               m_devFile << "Compile=1"                        << endl;\r
-               m_devFile << "Link=1"                           << endl;\r
-               m_devFile << "Priority=1000"            << endl;\r
-               m_devFile << "OverrideBuildCmd=0"       << endl;\r
-               m_devFile << "BuildCmd="                        << endl << endl;;\r
-       }\r
+bool spawn_new( const string& cmd )\r
+{\r
+       string command = ssprintf (\r
+               "%s",\r
+               cmd.c_str (),\r
+               NUL,\r
+               NUL );\r
+       int exitcode = system ( command.c_str () );\r
+       return (exitcode == 0);\r
 }\r
 }\r