From 0fc4d10e38a90919604b5e128cb8743ab47cce1b Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Thu, 18 Oct 2007 09:38:34 -0400 Subject: ENH: do not remove executables and dll's before linking them so that incremental links work, incremental links are still broken for vs 2005 and greater because of the manifest stuff --- Source/cmMakefileExecutableTargetGenerator.cxx | 13 +------------ Source/cmMakefileLibraryTargetGenerator.cxx | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/Source/cmMakefileExecutableTargetGenerator.cxx b/Source/cmMakefileExecutableTargetGenerator.cxx index 17b2578..195a34b 100644 --- a/Source/cmMakefileExecutableTargetGenerator.cxx +++ b/Source/cmMakefileExecutableTargetGenerator.cxx @@ -329,18 +329,6 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) cmLocalGenerator::UNCHANGED)); } - // Add a command to remove any existing files for this executable. - std::vector commands1; - this->LocalGenerator->AppendCleanCommand(commands1, exeCleanFiles, - *this->Target, "target"); - this->LocalGenerator->CreateCDCommand - (commands1, - this->Makefile->GetStartOutputDirectory(), - this->Makefile->GetHomeOutputDirectory()); - - commands.insert(commands.end(), commands1.begin(), commands1.end()); - commands1.clear(); - // Add the pre-build and pre-link rules building but not when relinking. if(!relink) { @@ -356,6 +344,7 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink) linkRuleVar += "_LINK_EXECUTABLE"; std::string linkRule = this->Makefile->GetRequiredDefinition(linkRuleVar.c_str()); + std::vector commands1; cmSystemTools::ExpandListArgument(linkRule, commands1); if(this->Target->GetPropertyAsBool("ENABLE_EXPORTS")) { diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index a2aedd5..8a2ade8 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -643,16 +643,20 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules } #endif - // Add a command to remove any existing files for this library. std::vector commands1; - this->LocalGenerator->AppendCleanCommand(commands1, libCleanFiles, - *this->Target, "target"); - this->LocalGenerator->CreateCDCommand - (commands1, - this->Makefile->GetStartOutputDirectory(), - this->Makefile->GetHomeOutputDirectory()); - commands.insert(commands.end(), commands1.begin(), commands1.end()); - commands1.clear(); + // Add a command to remove any existing files for this library. + // for static libs only + if(this->Target->GetType() == cmTarget::STATIC_LIBRARY) + { + this->LocalGenerator->AppendCleanCommand(commands1, libCleanFiles, + *this->Target, "target"); + this->LocalGenerator->CreateCDCommand + (commands1, + this->Makefile->GetStartOutputDirectory(), + this->Makefile->GetHomeOutputDirectory()); + commands.insert(commands.end(), commands1.begin(), commands1.end()); + commands1.clear(); + } // Add the pre-build and pre-link rules building but not when relinking. if(!relink) -- cgit v0.12