From 786fdbc196e6fa829472d9d8e9545ac837758242 Mon Sep 17 00:00:00 2001 From: Ken Martin Date: Thu, 16 Nov 2006 10:57:00 -0500 Subject: ENH: fix a bug with useing debuf optimized libs from other builds --- Source/cmMakefile.cxx | 15 +++++++++++++++ Source/cmTarget.cxx | 4 ++++ 2 files changed, 19 insertions(+) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 88f55dd..0a1a4dc 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -954,6 +954,21 @@ void cmMakefile::AddLinkLibraryForTarget(const char *target, } } } + // make sure the tpye is correct + std::string linkType = lib; + linkType += "_LINK_TYPE"; + const char* linkTypeString = this->GetDefinition( linkType.c_str() ); + if(linkTypeString) + { + if(strcmp(linkTypeString, "debug") == 0) + { + llt = cmTarget::DEBUG; + } + if(strcmp(linkTypeString, "optimized") == 0) + { + llt = cmTarget::OPTIMIZED; + } + } i->second.AddLinkLibrary( *this, target, lib, llt ); } else diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 18cce53..e7e3b99 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -737,7 +737,9 @@ void cmTarget::Emit( const std::string& lib, { // It's already been emitted if( emitted.find(lib) != emitted.end() ) + { return; + } // Emit the dependencies only if this library node hasn't been // visited before. If it has, then we have a cycle. The recursion @@ -797,7 +799,9 @@ void cmTarget::GatherDependencies( const cmMakefile& mf, // If the library is already in the dependency map, then it has // already been fully processed. if( dep_map.find(lib) != dep_map.end() ) + { return; + } const char* deps = mf.GetDefinition( (lib+"_LIB_DEPENDS").c_str() ); if( deps && strcmp(deps,"") != 0 ) -- cgit v0.12