adding gccasm.rules to vcproj files now it is possible to compile .s files with msvc Modified: trunk/reactos/tools/rbuild/backend/msvc/msvc.cpp Modified: trunk/reactos/tools/rbuild/backend/msvc/msvc.h Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp _____
Modified: trunk/reactos/tools/rbuild/backend/msvc/msvc.cpp --- trunk/reactos/tools/rbuild/backend/msvc/msvc.cpp 2005-10-22 01:46:46 UTC (rev 18670) +++ trunk/reactos/tools/rbuild/backend/msvc/msvc.cpp 2005-10-22 02:27:37 UTC (rev 18671) @@ -54,10 +54,21 @@
void MSVCBackend::Process() { string filename_sln ( ProjectNode.name ); + string filename_rules = "gccasm.rules"; + if ( configuration.VSProjectVersion == "6.00" ) filename_sln += ".dsw"; - else + else { filename_sln += ".sln"; + + m_rulesFile = fopen ( filename_rules.c_str(), "wb" ); + if ( m_rulesFile ) + { + _generate_rules_file ( m_rulesFile ); + } + fclose ( m_rulesFile ); + } + printf ( "Creating MSVC workspace: %s\n", filename_sln.c_str() ); ProcessModules(); _____
Modified: trunk/reactos/tools/rbuild/backend/msvc/msvc.h --- trunk/reactos/tools/rbuild/backend/msvc/msvc.h 2005-10-22 01:46:46 UTC (rev 18670) +++ trunk/reactos/tools/rbuild/backend/msvc/msvc.h 2005-10-22 02:27:37 UTC (rev 18671) @@ -63,6 +63,7 @@
FILE* m_dswFile; FILE* m_slnFile; + FILE* m_rulesFile;
// functions in msvcmaker.cpp:
@@ -79,6 +80,7 @@
// functions in vcprojmaker.cpp:
+ std::string _get_solution_verion ( void ); std::string _gen_guid(); std::string _replace_str( std::string string1, @@ -90,10 +92,11 @@ void _generate_sln_header ( FILE* OUT ); void _generate_sln_footer ( FILE* OUT ); void _generate_sln ( FILE* OUT ); + void _generate_rules_file ( FILE* OUT ); void _generate_sln_project ( FILE* OUT, const Module& module, - std::string dsp_file, + std::string vcproj_file, std::string sln_guid, std::string vcproj_guid, const std::vector<Dependency*>& dependencies ); _____
Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp --- trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp 2005-10-22 01:46:46 UTC (rev 18670) +++ trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp 2005-10-22 02:27:37 UTC (rev 18671) @@ -190,6 +190,15 @@
fprintf ( OUT, "\t\t\tName="Win32"/>\r\n" ); fprintf ( OUT, "\t</Platforms>\r\n" );
+ fprintf ( OUT, "\t<ToolFiles>\r\n" ); + fprintf ( OUT, "\t\t<ToolFile\r\n" ); + + string path = Path::RelativeFromDirectory ( ProjectNode.name, module.GetBasePath() ); + path.erase(path.find(ProjectNode.name, 0), ProjectNode.name.size() + 1); + + fprintf ( OUT, "\t\t\tRelativePath="%s/gccasm.rules"/>\r\n", path.c_str() ); + fprintf ( OUT, "\t</ToolFiles>\r\n" ); + int n = 0;
std::string output_dir; @@ -352,7 +361,7 @@ // Source files fprintf ( OUT, "\t\t<Filter\r\n" ); fprintf ( OUT, "\t\t\tName="Source Files"\r\n" ); - fprintf ( OUT, "\t\t\tFilter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">\r\n" ); + fprintf ( OUT, "\t\t\tFilter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat;S">\r\n" ); for ( size_t isrcfile = 0; isrcfile < source_files.size(); isrcfile++ ) { const string& source_file = DosSeparator(source_files[isrcfile]); @@ -410,14 +419,13 @@ return string1; }
-void -MSVCBackend::_generate_sln_header ( FILE* OUT ) -{ +std::string +MSVCBackend::_get_solution_verion ( void ) { + string version; + if (configuration.VSProjectVersion.empty()) configuration.VSProjectVersion = MS_VS_DEF_VERSION;
- string version; - if (configuration.VSProjectVersion == "7.00") version = "7.00";
@@ -427,7 +435,38 @@ if (configuration.VSProjectVersion == "8.00") version = "9.00";
- fprintf ( OUT, "Microsoft Visual Studio Solution File, Format Version %s\r\n", version.c_str() ); + return version; +} + + +void +MSVCBackend::_generate_rules_file ( FILE* OUT ) +{ + fprintf ( OUT, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n" ); + fprintf ( OUT, "<VisualStudioToolFile\r\n" ); + fprintf ( OUT, "\tName="GCC Assembler"\r\n" ); + fprintf ( OUT, "\tVersion="%s"\r\n", _get_solution_verion().c_str() ); + fprintf ( OUT, "\t>\r\n" ); + fprintf ( OUT, "\t<Rules>\r\n" ); + fprintf ( OUT, "\t\t<CustomBuildRule\r\n" ); + fprintf ( OUT, "\t\t\tName="Assembler"\r\n" ); + fprintf ( OUT, "\t\t\tDisplayName="Assembler Files"\r\n" ); + fprintf ( OUT, "\t\t\tCommandLine="cl /E "$(InputPath)" | as -o "$(OutDir)\$(InputName).obj""\r\n" ); + fprintf ( OUT, "\t\t\tOutputs="$(OutDir)\$(InputName).obj"\r\n" ); + fprintf ( OUT, "\t\t\tFileExtensions="*.S"\r\n" ); + fprintf ( OUT, "\t\t\tExecutionDescription="asm"\r\n" ); + fprintf ( OUT, "\t\t\t>\r\n" ); + fprintf ( OUT, "\t\t\t<Properties>\r\n" ); + fprintf ( OUT, "\t\t\t</Properties>\r\n" ); + fprintf ( OUT, "\t\t</CustomBuildRule>\r\n" ); + fprintf ( OUT, "\t</Rules>\r\n" ); + fprintf ( OUT, "</VisualStudioToolFile>\r\n" ); +} + +void +MSVCBackend::_generate_sln_header ( FILE* OUT ) +{ + fprintf ( OUT, "Microsoft Visual Studio Solution File, Format Version %s\r\n", _get_solution_verion().c_str() ); fprintf ( OUT, "# Visual Studio 2005\r\n" ); fprintf ( OUT, "\r\n" ); }