make_msvcX_install_[config] patch by Brezenbak
(i.e. make_msvc71_install_speed)
Modified: trunk/reactos/Makefile
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/configuration.cpp
Modified: trunk/reactos/tools/rbuild/project.cpp
Modified: trunk/reactos/tools/rbuild/rbuild.cpp
Modified: trunk/reactos/tools/rbuild/rbuild.h
_____
Modified: trunk/reactos/Makefile
--- trunk/reactos/Makefile 2006-01-11 10:00:09 UTC (rev 20784)
+++ trunk/reactos/Makefile 2006-01-11 15:47:22 UTC (rev 20785)
@@ -396,22 +396,22 @@
$(ECHO_RBUILD)
$(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs8.00 msvc
-.PHONY: msvc6
+.PHONY: msvc6_clean
msvc6_clean: $(RBUILD_TARGET)
$(ECHO_RBUILD)
$(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -c -vs6.00 msvc
-.PHONY: msvc7
+.PHONY: msvc7_clean
msvc7_clean: $(RBUILD_TARGET)
$(ECHO_RBUILD)
$(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -c -vs7.00 msvc
-.PHONY: msvc71
+.PHONY: msvc71_clean
msvc71_clean: $(RBUILD_TARGET)
$(ECHO_RBUILD)
$(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -c -vs7.10 msvc
-.PHONY: msvc8
+.PHONY: msvc8_clean
msvc8_clean: $(RBUILD_TARGET)
$(ECHO_RBUILD)
$(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -c -vs8.00 msvc
@@ -429,6 +429,52 @@
$(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -c -vs7.10 msvc
$(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -c -vs8.10 msvc
+.PHONY: msvc7_install_debug
+msvc7_install_debug: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs7.00 -vcdebug msvc
+
+.PHONY: msvc7_install_release
+msvc7_install_release: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs7.00 -vcrelease msvc
+
+.PHONY: msvc7_install_speed
+msvc7_install_speed: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs7.00 -vcspeed msvc
+
+.PHONY: msvc71_install_debug
+msvc71_install_debug: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs7.10 -vcdebug msvc
+
+.PHONY: msvc71_install_release
+msvc71_install_release: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs7.10 -vcrelease msvc
+
+
+.PHONY: msvc71_install_speed
+msvc71_install_speed: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs7.10 -vcspeed msvc
+
+.PHONY: msvc8_install_debug
+msvc8_install_debug: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs8.00 -vcdebug msvc
+
+.PHONY: msvc8_install_release
+msvc8_install_release: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs8.00 -vcrelease msvc
+
+.PHONY: msvc8_install_speed
+msvc8_install_speed: $(RBUILD_TARGET)
+ $(ECHO_RBUILD)
+ $(Q)$(RBUILD_TARGET) $(ROS_RBUILDFLAGS) -vs8.00 -vcspeed msvc
+
.PHONY: makefile_auto_clean
makefile_auto_clean:
-@$(rm) $(ROS_AUTOMAKE) $(PREAUTO) 2>$(NUL)
_____
Modified: trunk/reactos/tools/rbuild/backend/msvc/msvc.cpp
--- trunk/reactos/tools/rbuild/backend/msvc/msvc.cpp 2006-01-11
10:00:09 UTC (rev 20784)
+++ trunk/reactos/tools/rbuild/backend/msvc/msvc.cpp 2006-01-11
15:47:22 UTC (rev 20785)
@@ -60,7 +60,10 @@
_clean_project_files();
return;
}
-
+ if ( configuration.InstallFiles ) {
+ _install_files( _get_vc_dir(),
configuration.VSConfigurationType );
+ return;
+ }
string filename_sln ( ProjectNode.name );
//string filename_rules = "gccasm.rules";
@@ -374,3 +377,42 @@
remove ( filename_dsw.c_str () );
}
+bool
+MSVCBackend::_copy_file ( const std::string& inputname, const
std::string& targetname ) const
+{
+ FILE * input = fopen ( inputname.c_str (), "rb" );
+ if ( !input )
+ return false;
+
+ FILE * output = fopen ( targetname.c_str (), "wb+" );
+ if ( !output )
+ {
+ fclose ( input );
+ return false;
+ }
+
+ char buffer[256];
+ int num_read;
+ while ( (num_read = fread( buffer, sizeof(char), 256, input) ) ||
!feof( input ) )
+ fwrite( buffer, sizeof(char), num_read, output );
+
+ fclose ( input );
+ fclose ( output );
+ return true;
+}
+
+void
+MSVCBackend::_install_files (const std::string& vcdir, const::string&
config)
+{
+ for ( size_t i = 0; i < ProjectNode.modules.size(); i++ )
+ {
+ Module& module = *ProjectNode.modules[i];
+ if ( module.installBase == "" || module.installName ==
"" )
+ continue;
+
+ string inputname = Environment::GetOutputPath () + "\\"
+ module.GetBasePath () + "\\" + vcdir + "\\" + config +
"\\" +
module.GetTargetName ();
+ string installdir = Environment::GetInstallPath () +
"\\" + module.installBase + "\\" + module.installName;
+ if ( _copy_file( inputname, installdir ) )
+ printf ("Installed File
:'%s'\n",installdir.c_str () );
+ }
+}
_____
Modified: trunk/reactos/tools/rbuild/backend/msvc/msvc.h
--- trunk/reactos/tools/rbuild/backend/msvc/msvc.h 2006-01-11
10:00:09 UTC (rev 20784)
+++ trunk/reactos/tools/rbuild/backend/msvc/msvc.h 2006-01-11
15:47:22 UTC (rev 20785)
@@ -114,6 +114,8 @@
std::string vcproj_guid );
void _clean_project_files ( void );
void _get_object_files ( const Module& module,
std::vector<std::string>& out ) const;
+ void _install_files ( const std::string& vcdir, const
std::string& config );
+ bool _copy_file ( const std::string& inputname, const
std::string& targetname ) const;
};
#endif // __MSVC_H__
_____
Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp
--- trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp
2006-01-11 10:00:09 UTC (rev 20784)
+++ trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp
2006-01-11 15:47:22 UTC (rev 20785)
@@ -145,11 +145,10 @@
// this code is deactivated untill the tree
builds fine with msvc
// --- is appended to each library path which is
later
// replaced by the configuration
- // i.e. ../output-i386/lib/rtl/---/rtl.lib
becomes
- // ../output-i386/lib/rtl/Debug/rtl.lib
+ // i.e. ../output-i386/lib/rtl/vcXX/---/rtl.lib
becomes
+ //
../output-i386/lib/rtl/vcXX/Debug/rtl.lib
// etc
- libs[i]->importedModule->
- string libpath = outdir + "\\" +
libs[i]->importedModule->GetBasePath() + "\\---\\" + libs[i]->name +
".lib";
+ string libpath = outdir + "\\" +
libs[i]->importedModule->GetBasePath() + "\\" + _get_vc_dir() +
"\\---\\" + libs[i]->name + ".lib";
libraries.push_back ( libpath );
#else
libraries.push_back ( libs[i]->name + ".lib" );
_____
Modified: trunk/reactos/tools/rbuild/configuration.cpp
--- trunk/reactos/tools/rbuild/configuration.cpp 2006-01-11
10:00:09 UTC (rev 20784)
+++ trunk/reactos/tools/rbuild/configuration.cpp 2006-01-11
15:47:22 UTC (rev 20785)
@@ -29,6 +29,7 @@
CompilationUnitsEnabled = true;
MakeHandlesInstallDirectories = false;
GenerateProxyMakefilesInSourceTree = false;
+ InstallFiles = false;
}
Configuration::~Configuration ()
_____
Modified: trunk/reactos/tools/rbuild/project.cpp
--- trunk/reactos/tools/rbuild/project.cpp 2006-01-11 10:00:09 UTC
(rev 20784)
+++ trunk/reactos/tools/rbuild/project.cpp 2006-01-11 15:47:22 UTC
(rev 20785)
@@ -298,6 +298,12 @@
(property->value == non_if_data.ifs[i]->value);
if ( conditionTrue )
non_if_data.ifs[i]->data.ExtractModules( modules
);
+ else
+ {
+ If * if_data = non_if_data.ifs[i];
+ non_if_data.ifs.erase ( non_if_data.ifs.begin ()
+ i );
+ delete if_data;
+ }
}
for ( i = 0; i < linkerFlags.size (); i++ )
linkerFlags[i]->ProcessXML ();
_____
Modified: trunk/reactos/tools/rbuild/rbuild.cpp
--- trunk/reactos/tools/rbuild/rbuild.cpp 2006-01-11 10:00:09 UTC
(rev 20784)
+++ trunk/reactos/tools/rbuild/rbuild.cpp 2006-01-11 15:47:22 UTC
(rev 20785)
@@ -107,6 +107,10 @@
configuration.VSProjectVersion.append("0");
break;
+ case 'c':
+ configuration.VSConfigurationType = string
(&switchStart[3]);
+ configuration.InstallFiles = true;
+ break;
default:
printf ( "Unknown switch -d%c\n",
switchChar2 );
@@ -155,7 +159,7 @@
switch ( switchChar )
{
case 'v':
- if (switchChar2 == 's')
+ if (switchChar2 == 's' || switchChar2 == 'c' )
{
return ParseVCProjectSwitch (
switchChar2,
_____
Modified: trunk/reactos/tools/rbuild/rbuild.h
--- trunk/reactos/tools/rbuild/rbuild.h 2006-01-11 10:00:09 UTC (rev
20784)
+++ trunk/reactos/tools/rbuild/rbuild.h 2006-01-11 15:47:22 UTC (rev
20785)
@@ -141,8 +141,10 @@
bool CompilationUnitsEnabled;
std::string CheckDependenciesForModuleOnlyModule;
std::string VSProjectVersion;
+ std::string VSConfigurationType;
bool MakeHandlesInstallDirectories;
bool GenerateProxyMakefilesInSourceTree;
+ bool InstallFiles;
};
class Environment