From 50e1c1056ea82690474dc186d7a4103b33547fa6 Mon Sep 17 00:00:00 2001 From: Gregor Jasny Date: Fri, 20 Jan 2017 23:24:05 +0100 Subject: Makefile: For static libraries remove only the "real" lib before creating When creating a static library with the archive tool, only the `.a` needs to be removed to start a fresh archive. Any other files (e.g. symbolic links we may later add) are not managed by the archive tool and therefore do not need to be cleaned. --- Source/cmMakefileLibraryTargetGenerator.cxx | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 33f2c35..ff8b604 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -598,6 +598,20 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( std::vector libCleanFiles; libCleanFiles.push_back(this->LocalGenerator->MaybeConvertToRelativePath( this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPathReal)); + + std::vector commands1; + // Add a command to remove any existing files for this library. + // for static libs only + if (this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) { + this->LocalGenerator->AppendCleanCommand(commands1, libCleanFiles, + this->GeneratorTarget, "target"); + this->LocalGenerator->CreateCDCommand( + commands1, this->Makefile->GetCurrentBinaryDirectory(), + this->LocalGenerator->GetBinaryDirectory()); + commands.insert(commands.end(), commands1.begin(), commands1.end()); + commands1.clear(); + } + if (targetName != targetNameReal) { libCleanFiles.push_back(this->LocalGenerator->MaybeConvertToRelativePath( this->LocalGenerator->GetCurrentBinaryDirectory(), targetFullPath)); @@ -634,19 +648,6 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules( } #endif - std::vector commands1; - // Add a command to remove any existing files for this library. - // for static libs only - if (this->GeneratorTarget->GetType() == cmStateEnums::STATIC_LIBRARY) { - this->LocalGenerator->AppendCleanCommand(commands1, libCleanFiles, - this->GeneratorTarget, "target"); - this->LocalGenerator->CreateCDCommand( - commands1, this->Makefile->GetCurrentBinaryDirectory(), - this->LocalGenerator->GetBinaryDirectory()); - 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) { this->LocalGenerator->AppendCustomCommands( -- cgit v0.12