From a468872ccdcdfda09ef7eb6c69a8d058b55eec8c Mon Sep 17 00:00:00 2001 From: Bill Hoffman Date: Thu, 4 May 2006 17:54:31 -0400 Subject: [PATCH] ENH: add a check to make sure targets only link to libraries and not utility targets to avoid seg faults, bug 3194 --- Source/cmMakefile.cxx | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 5140b74d6..55f9ed552 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -804,6 +804,21 @@ void cmMakefile::AddLinkLibraryForTarget(const char *target, cmTargets::iterator i = this->Targets.find(target); if ( i != this->Targets.end()) { + cmTarget* tgt = + this->GetCMakeInstance()->GetGlobalGenerator()->FindTarget(0, lib); + if(tgt) + { + // if it is not a static or shared library then you can not link to it + if(!((tgt->GetType() == cmTarget::STATIC_LIBRARY) || + (tgt->GetType() == cmTarget::SHARED_LIBRARY))) + { + cmOStringStream e; + e << "Attempt to add link library " << lib + << " which is not a library target to target " << tgt->GetType() << " " << + target << "\n"; + cmSystemTools::Error(e.str().c_str()); + } + } i->second.AddLinkLibrary( *this, target, lib, llt ); } else