invoke _generate_dsp() have it open the output file, and fix some path parsing and...
authorRoyce Mitchell III <royce3@ev1.net>
Wed, 24 Aug 2005 19:58:07 +0000 (19:58 +0000)
committerRoyce Mitchell III <royce3@ev1.net>
Wed, 24 Aug 2005 19:58:07 +0000 (19:58 +0000)
svn path=/trunk/; revision=17517

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

index b4188a6..b0f8114 100644 (file)
@@ -119,12 +119,14 @@ void MSVCBackend::ProcessModules()
        {\r
                Module &module = *ProjectNode.modules[i];\r
 \r
-               for(size_t k = 0; k < module.non_if_data.files.size(); k++)\r
+               this->_generate_dsp ( module );\r
+\r
+               /*for(size_t k = 0; k < module.non_if_data.files.size(); k++)\r
                {\r
                        File &file = *module.non_if_data.files[k];\r
                        \r
                        ProcessFile(file.name);\r
-               }\r
+               }*/\r
        }\r
 }\r
 \r
index 06ae753..a524496 100644 (file)
@@ -64,7 +64,7 @@ class MSVCBackend : public Backend
 \r
                // functions in msvcmaker.cpp:\r
 \r
-               void _generate_dsp ( FILE* OUT, const std::string& moduleName );\r
+               void _generate_dsp ( const Module& module );\r
 \r
                void _generate_dsw_header ( FILE* OUT );\r
 \r
index 5c39333..01bb414 100644 (file)
@@ -13,15 +13,15 @@ using std::string;
 using std::vector;
 
 void
-MSVCBackend::_generate_dsp ( FILE* OUT, const std::string& moduleName )
+MSVCBackend::_generate_dsp ( const Module& module )
 {
        size_t i;
        // TODO FIXME wine hack?
        const bool wine = false;
 
-       Module& module = *ProjectNode.LocateModule ( moduleName );
-
        string dsp_file = DspFileName(module);
+       FILE* OUT = fopen ( dsp_file.c_str(), "w" );
+
        vector<string> imports;
        for ( i = 0; i < module.non_if_data.libraries.size(); i++ )
        {
@@ -32,19 +32,20 @@ MSVCBackend::_generate_dsp ( FILE* OUT, const std::string& moduleName )
        bool lib = (module_type == "lib");
        bool dll = (module_type == "dll");
        bool exe = (module_type == "exe");
+       // TODO FIXME - need more checks here for 'sys' and possibly 'drv'?
 
        bool console = exe; // FIXME: Not always correct
 
        // TODO FIXME - not sure if the count here is right...
-       int parts = 1;
-       const char* p = strchr ( dsp_file.c_str(), '/' );
+       int parts = 0;
+       const char* p = strpbrk ( dsp_file.c_str(), "/\\" );
        while ( p )
        {
                ++parts;
-               p = strchr ( p+1, '/' );
+               p = strpbrk ( p+1, "/\\" );
        }
        string msvc_wine_dir = "..";
-       while ( parts-- )
+       while ( --parts )
                msvc_wine_dir += "\\..";
 
        string wine_include_dir = msvc_wine_dir + "\\include";
@@ -54,16 +55,16 @@ MSVCBackend::_generate_dsp ( FILE* OUT, const std::string& moduleName )
 
        // TODO FIXME - what's diff. betw. 'c_srcs' and 'source_files'?
        vector<string> c_srcs, source_files, resource_files;
-       vector<IfableData*> ifs_list;
+       vector<const IfableData*> ifs_list;
        ifs_list.push_back ( &module.non_if_data );
        while ( ifs_list.size() )
        {
-               IfableData& data = *ifs_list.back();
+               const IfableData& data = *ifs_list.back();
                ifs_list.pop_back();
                // TODO FIXME - refactor needed - we're discarding if conditions
                for ( i = 0; i < data.ifs.size(); i++ )
                        ifs_list.push_back ( &data.ifs[i]->data );
-               vector<File*>& files = data.files;
+               const vector<File*>& files = data.files;
                for ( i = 0; i < files.size(); i++ )
                {
                        // TODO FIXME - do we want the full path of the file here?