added PCH support removed some redundant code Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp _____
Modified: trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp --- trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp 2005-11-30 22:17:11 UTC (rev 19788) +++ trunk/reactos/tools/rbuild/backend/msvc/vcprojmaker.cpp 2005-11-30 22:44:41 UTC (rev 19789) @@ -213,7 +213,10 @@
{ std::string& cfg = cfgs[icfg];
- bool debug = !strstr ( cfg.c_str(), "Release" ); + bool debug = strstr ( cfg.c_str(), "Debug" ); + bool speed = strstr ( cfg.c_str(), "Speed" ); + bool release = (!debug && !speed ); + //bool msvc_headers = ( 0 != strstr ( cfg.c_str(), "MSVC Headers" ) );
fprintf ( OUT, "\t\t<Configuration\r\n" ); @@ -248,30 +251,22 @@ if ( debug ) { defines.push_back ( "_DEBUG" ); - if ( lib || exe ) - { - defines.push_back ( "_LIB" ); - } - else - { - defines.push_back ( "_WINDOWS" ); - defines.push_back ( "_USRDLL" ); - } } else { defines.push_back ( "NDEBUG" ); - if ( lib || exe ) - { - defines.push_back ( "_LIB" ); - } - else - { - defines.push_back ( "_WINDOWS" ); - defines.push_back ( "_USRDLL" ); - } }
+ if ( lib || exe ) + { + defines.push_back ( "_LIB" ); + } + else + { + defines.push_back ( "_WINDOWS" ); + defines.push_back ( "_USRDLL" ); + } + fprintf ( OUT, "\t\t\t\tPreprocessorDefinitions="" ); for ( i = 0; i < defines.size(); i++ ) { @@ -284,15 +279,29 @@ fprintf ( OUT, ""\r\n" );
fprintf ( OUT, "\t\t\t\tMinimalRebuild="TRUE"\r\n" ); - fprintf ( OUT, "\t\t\t\tBasicRuntimeChecks="3"\r\n" ); + fprintf ( OUT, "\t\t\t\tBasicRuntimeChecks="%s"\r\n", debug ? "3" : "0" ); fprintf ( OUT, "\t\t\t\tRuntimeLibrary="5"\r\n" ); fprintf ( OUT, "\t\t\t\tBufferSecurityCheck="%s"\r\n", debug ? "TRUE" : "FALSE" ); fprintf ( OUT, "\t\t\t\tEnableFunctionLevelLinking="%s"\r\n", debug ? "TRUE" : "FALSE" ); - fprintf ( OUT, "\t\t\t\tUsePrecompiledHeader="0"\r\n" ); - fprintf ( OUT, "\t\t\t\tWarningLevel="1"\r\n" ); - fprintf ( OUT, "\t\t\t\tDetect64BitPortabilityProblems="TRUE"\r\n" ); - fprintf ( OUT, "\t\t\t\tDebugInformationFormat="4"/>\r\n" ); + + if ( module.pch != NULL ) + { + fprintf ( OUT, "\t\t\t\tUsePrecompiledHeader="2"\r\n" ); + string pch_path = Path::RelativeFromDirectory ( + module.pch->file.name, + module.GetBasePath() ); + fprintf ( OUT, "\t\t\t\tPrecompiledHeaderThrough="%s"\r\n", pch_path.c_str() ); + } + else + { + fprintf ( OUT, "\t\t\t\tUsePrecompiledHeader="0"\r\n" ); + }
+ fprintf ( OUT, "\t\t\t\tWholeProgramOptimization="%s"\r\n", release ? "TRUE" : "FALSE"); + fprintf ( OUT, "\t\t\t\tWarningLevel="%s"\r\n", release ? "0" : "4" ); + fprintf ( OUT, "\t\t\t\tDetect64BitPortabilityProblems="%s"\r\n", release ? "FALSE" : "TRUE"); + fprintf ( OUT, "\t\t\t\tDebugInformationFormat="%s"/>\r\n", speed ? "0" : "4"); + fprintf ( OUT, "\t\t\t<Tool\r\n" ); fprintf ( OUT, "\t\t\t\tName="VCCustomBuildTool"/>\r\n" );
@@ -318,7 +327,7 @@
fprintf ( OUT, "\t\t\t\tOutputFile="$(OutDir)/%s%s"\r\n", module.name.c_str(), module_type.c_str() ); fprintf ( OUT, "\t\t\t\tLinkIncremental="%d"\r\n", debug ? 2 : 1 ); - fprintf ( OUT, "\t\t\t\tGenerateDebugInformation="TRUE"\r\n" ); + fprintf ( OUT, "\t\t\t\tGenerateDebugInformation="%s"\r\n", speed ? "FALSE" : "TRUE" );
if ( debug ) fprintf ( OUT, "\t\t\t\tProgramDatabaseFile="$(OutDir)/%s.pdb"\r\n", module.name.c_str() ); @@ -351,7 +360,7 @@ fprintf ( OUT, "\t\t\t\tSubSystem="%d"\r\n", console ? 1 : 2 ); } } - else if ( dll) + else if ( dll ) { fprintf ( OUT, "\t\t\t\tEntryPointSymbol="%s"\r\n", module.entrypoint == "" ? "DllMain" : module.entrypoint.c_str ()); fprintf ( OUT, "\t\t\t\tBaseAddress="%s"\r\n", module.baseaddress == "" ? "0x40000" : module.baseaddress.c_str ()); @@ -407,11 +416,24 @@ fprintf ( OUT, "\t\t\t<File\r\n" ); fprintf ( OUT, "\t\t\t\tRelativePath="%s">\r\n", source_file.c_str() );
- if (configuration.VSProjectVersion < "8.00") { - for ( size_t iconfig = 0; iconfig < cfgs.size(); iconfig++ ) + for ( size_t iconfig = 0; iconfig < cfgs.size(); iconfig++ ) + { + std::string& config = cfgs[iconfig]; + + if ( isrcfile == 0 ) { - std::string& config = cfgs[iconfig]; + /* little hack to speed up PCH */ + fprintf ( OUT, "\t\t\t\t<FileConfiguration\r\n" ); + fprintf ( OUT, "\t\t\t\t\tName="" ); + fprintf ( OUT, config.c_str() ); + fprintf ( OUT, "|Win32">\r\n" ); + fprintf ( OUT, "\t\t\t\t\t<Tool\r\n" ); + fprintf ( OUT, "\t\t\t\t\t\tName="VCCLCompilerTool"\r\n" ); + fprintf ( OUT, "\t\t\t\t\t\tUsePrecompiledHeader="1"/>\r\n" ); + fprintf ( OUT, "\t\t\t\t</FileConfiguration>\r\n" ); + }
+ if (configuration.VSProjectVersion < "8.00") { if ((source_file.find(".idl") != string::npos) || ((source_file.find(".asm") != string::npos || tolower(source_file.at(source_file.size() - 1)) == 's'))) { fprintf ( OUT, "\t\t\t\t<FileConfiguration\r\n" );