summaryrefslogtreecommitdiffstats
path: root/Source/cmInstallTargetGenerator.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-01-29 20:47:18 (GMT)
committerBrad King <brad.king@kitware.com>2008-01-29 20:47:18 (GMT)
commit319c4c4d8033d8c37f320839196ed174c4674fdf (patch)
treed4fc94a1a40578b6c17ef21bea87642f642fe894 /Source/cmInstallTargetGenerator.cxx
parent6e70424fc85ad81f60c589dd01cc127af1be0fad (diff)
downloadCMake-319c4c4d8033d8c37f320839196ed174c4674fdf.zip
CMake-319c4c4d8033d8c37f320839196ed174c4674fdf.tar.gz
CMake-319c4c4d8033d8c37f320839196ed174c4674fdf.tar.bz2
ENH: Update cmInstallTargetGenerator to get the shared libraries linked by a target from cmComputeLinkInformation instead of duplicating the computation.
Diffstat (limited to 'Source/cmInstallTargetGenerator.cxx')
-rw-r--r--Source/cmInstallTargetGenerator.cxx75
1 files changed, 28 insertions, 47 deletions
diff --git a/Source/cmInstallTargetGenerator.cxx b/Source/cmInstallTargetGenerator.cxx
index 4f6539a..521fa4d 100644
--- a/Source/cmInstallTargetGenerator.cxx
+++ b/Source/cmInstallTargetGenerator.cxx
@@ -382,56 +382,37 @@ cmInstallTargetGenerator
// Build a map of build-tree install_name to install-tree install_name for
// shared libraries linked to this target.
std::map<cmStdString, cmStdString> install_name_remap;
- cmTarget::LinkLibraryType linkType = cmTarget::OPTIMIZED;
- if(config && cmSystemTools::UpperCase(config) == "DEBUG")
+ if(cmComputeLinkInformation* cli = this->Target->GetLinkInformation(config))
{
- linkType = cmTarget::DEBUG;
- }
- // TODO: Merge with ComputeLinkInformation.
- const cmTarget::LinkLibraryVectorType& inLibs =
- this->Target->GetLinkLibraries();
- for(cmTarget::LinkLibraryVectorType::const_iterator j = inLibs.begin();
- j != inLibs.end(); ++j)
- {
- std::string lib = j->first;
- if((this->Target->GetType() == cmTarget::EXECUTABLE ||
- lib != this->Target->GetName()) &&
- (j->second == cmTarget::GENERAL || j->second == linkType))
+ std::set<cmTarget*> const& sharedLibs = cli->GetSharedLibrariesLinked();
+ for(std::set<cmTarget*>::const_iterator j = sharedLibs.begin();
+ j != sharedLibs.end(); ++j)
{
- if(cmTarget* tgt = this->Target->GetMakefile()->
- GetLocalGenerator()->GetGlobalGenerator()->
- FindTarget(0, lib.c_str()))
+ // If the build tree and install tree use different path
+ // components of the install_name field then we need to create a
+ // mapping to be applied after installation.
+ cmTarget* tgt = *j;
+ std::string for_build = tgt->GetInstallNameDirForBuildTree(config);
+ std::string for_install = tgt->GetInstallNameDirForInstallTree(config);
+ std::string fname = this->GetInstallFilename(tgt, config, false, true);
+
+ // Map from the build-tree install_name.
+ for_build += fname;
+
+ // Map to the install-tree install_name.
+ if (!for_install.empty())
{
- if(tgt->GetType() == cmTarget::SHARED_LIBRARY)
- {
- // If the build tree and install tree use different path
- // components of the install_name field then we need to create a
- // mapping to be applied after installation.
- std::string for_build = tgt->GetInstallNameDirForBuildTree(config);
- std::string for_install =
- tgt->GetInstallNameDirForInstallTree(config);
- std::string fname =
- this->GetInstallFilename(tgt, config, false, true);
-
- // Map from the build-tree install_name.
- for_build += fname;
-
- // Map to the install-tree install_name.
- if (!for_install.empty())
- {
- for_install += fname;
- }
- else
- {
- for_install = tgt->GetInstallNameFixupPath();
- }
-
- if(for_build != for_install)
- {
- // Store the mapping entry.
- install_name_remap[for_build] = for_install;
- }
- }
+ for_install += fname;
+ }
+ else
+ {
+ for_install = tgt->GetInstallNameFixupPath();
+ }
+
+ if(for_build != for_install)
+ {
+ // Store the mapping entry.
+ install_name_remap[for_build] = for_install;
}
}
}