diff options
Diffstat (limited to 'Source/cmMakefileLibraryTargetGenerator.cxx')
-rw-r--r-- | Source/cmMakefileLibraryTargetGenerator.cxx | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/Source/cmMakefileLibraryTargetGenerator.cxx b/Source/cmMakefileLibraryTargetGenerator.cxx index 67bc46e..7797c91 100644 --- a/Source/cmMakefileLibraryTargetGenerator.cxx +++ b/Source/cmMakefileLibraryTargetGenerator.cxx @@ -653,26 +653,19 @@ void cmMakefileLibraryTargetGenerator::WriteLibraryRules targetFullPathReal.c_str(), depends, commands, false); - // The symlink names for the target should depend on the real target - // so if the target version changes it rebuilds and recreates the - // symlinks. - if(targetFullPathSO != targetFullPathReal) + // Some targets have more than one output file. Create rules to + // drive the build if any extra outputs are missing. + std::vector<std::string> extraOutputs; + if(targetNameSO != targetNameReal) { - depends.clear(); - commands.clear(); - depends.push_back(targetFullPathReal.c_str()); - this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, 0, - targetFullPathSO.c_str(), - depends, commands, false); + this->GenerateExtraOutput(targetFullPathSO.c_str(), + targetFullPathReal.c_str()); } - if(targetFullPath != targetFullPathSO) + if(targetName != targetNameSO && + targetName != targetNameReal) { - depends.clear(); - commands.clear(); - depends.push_back(targetFullPathSO.c_str()); - this->LocalGenerator->WriteMakeRule(*this->BuildFileStream, 0, - targetFullPath.c_str(), - depends, commands, false); + this->GenerateExtraOutput(targetFullPath.c_str(), + targetFullPathReal.c_str()); } // Write the main driver rule to build everything in this target. |