Commit 96c9e7de authored by Brad King's avatar Brad King

BUG: Preserve shared lib order for 2.4 compatibility

We preserve the order and multiplicity of libraries directly linked by a
target as specified by the user.  Items known to be shared libraries may
be safely skipped because order preservation is only needed for static
libraries.  However, CMake 2.4 did not skip shared libs, so we do the
same when in 2.4 compatibility mode.
parent bd4601f9
......@@ -881,6 +881,11 @@ void cmComputeLinkDepends::CheckWrongConfigItem(std::string const& item)
//----------------------------------------------------------------------------
void cmComputeLinkDepends::PreserveOriginalEntries()
{
// In CMake 2.4 and below all link items were included in order
// preservation. In CMake 2.6 and above we know it is safe to skip
// shared libraries.
bool skipShared = !this->LocalGenerator->NeedBackwardsCompatibility(2,4);
// Regular expression to match shared libraries.
cmsys::RegularExpression shared_lib(this->SharedRegexString.c_str());
......@@ -893,7 +898,7 @@ void cmComputeLinkDepends::PreserveOriginalEntries()
{
cmTarget* tgt = this->EntryList[*in].Target;
if((tgt && tgt->GetType() != cmTarget::STATIC_LIBRARY) ||
(!tgt && shared_lib.find(this->EntryList[*in].Item)))
(skipShared && !tgt && shared_lib.find(this->EntryList[*in].Item)))
{
// Skip input items known to not be static libraries.
++in;
......@@ -917,7 +922,7 @@ void cmComputeLinkDepends::PreserveOriginalEntries()
{
cmTarget* tgt = this->EntryList[*in].Target;
if((tgt && tgt->GetType() != cmTarget::STATIC_LIBRARY) ||
(!tgt && shared_lib.find(this->EntryList[*in].Item)))
(skipShared && !tgt && shared_lib.find(this->EntryList[*in].Item)))
{
// Skip input items known to not be static libraries.
++in;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment