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" );
}