From afd7d4ca4c5a4855b6f932af644e09a886b20a3d Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 31 Jan 2008 08:05:34 -0500 Subject: [PATCH] ENH: Add target property LINK_SEARCH_END_STATIC to help people building static binaries on some platforms. --- Source/cmComputeLinkInformation.cxx | 10 +++++++++- Source/cmTarget.cxx | 12 ++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx index 1e340c042..ec55c452b 100644 --- a/Source/cmComputeLinkInformation.cxx +++ b/Source/cmComputeLinkInformation.cxx @@ -340,7 +340,15 @@ bool cmComputeLinkInformation::Compute() // Restore the target link type so the correct system runtime // libraries are found. - this->SetCurrentLinkType(this->StartLinkType); + const char* lss = this->Target->GetProperty("LINK_SEARCH_END_STATIC"); + if(cmSystemTools::IsOn(lss)) + { + this->SetCurrentLinkType(LinkStatic); + } + else + { + this->SetCurrentLinkType(this->StartLinkType); + } // Compute the linker search path. this->ComputeLinkerSearchDirectories(); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 6575140a6..e00736770 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -284,6 +284,18 @@ void cmTarget::DefineProperties(cmake *cm) "Per-configuration linker flags for a target.", "This is the configuration-specific version of LINK_FLAGS."); + cm->DefineProperty + ("LINK_SEARCH_END_STATIC", cmProperty::TARGET, + "End a link line such that static system libraries are used.", + "Some linkers support switches such as -Bstatic and -Bdynamic " + "to determine whether to use static or shared libraries for -lXXX " + "options. CMake uses these options to set the link type for " + "libraries whose full paths are not known or (in some cases) are in " + "implicit link directories for the platform. By default the " + "linker search type is left at -Bdynamic by the end of the library " + "list. This property switches the final linker search type to " + "-Bstatic."); + cm->DefineProperty ("LINKER_LANGUAGE", cmProperty::TARGET, "What tool to use for linking, based on language.",