BUG: don't strip static libraries, it removes their symbol table, dynamic

libs have an extra symbol table so they still work stripped

Alex
This commit is contained in:
Alexander Neundorf 2007-06-15 13:00:54 -04:00
parent 69d3628461
commit 8237518994
2 changed files with 17 additions and 11 deletions

View File

@ -182,10 +182,10 @@ void cmInstallTargetGenerator::GenerateScript(std::ostream& os)
quotedFullDestinationFilename += "/";
quotedFullDestinationFilename += cmSystemTools::GetFilenameName(fromFile);
quotedFullDestinationFilename += "\"";
this->AddRanlibRule(os, type, quotedFullDestinationFilename);
this->AddStripRule(os, quotedFullDestinationFilename, optional);
this->AddStripRule(os, type, quotedFullDestinationFilename, optional);
}
//----------------------------------------------------------------------------
@ -453,10 +453,18 @@ void cmInstallTargetGenerator
}
void cmInstallTargetGenerator::AddStripRule(std::ostream& os,
cmTarget::TargetType type,
const std::string& quotedFullDestinationFilename,
bool optional)
{
// don't strip static libraries, because it removes the only symbol table
// they have so you can't link to them anymore
if(type == cmTarget::STATIC_LIBRARY)
{
return;
}
// Don't handle OSX Bundles.
if(this->Target->GetMakefile()->IsOn("APPLE") &&
this->Target->GetPropertyAsBool("MACOSX_BUNDLE"))
@ -469,21 +477,18 @@ void cmInstallTargetGenerator::AddStripRule(std::ostream& os,
return;
}
os << "IF(CMAKE_INSTALL_DO_STRIP";
std::string optionalString;
if (optional)
{
os << " AND EXISTS " << quotedFullDestinationFilename;
optionalString = " AND EXISTS ";
optionalString += quotedFullDestinationFilename;
}
os << ")\n";
os << "IF(CMAKE_INSTALL_DO_STRIP" << optionalString << ")\n";
os << " EXECUTE_PROCESS(COMMAND \""
<< this->Target->GetMakefile()->GetDefinition("CMAKE_STRIP")
<< "\" " << quotedFullDestinationFilename << " )\n";
os << "ENDIF(CMAKE_INSTALL_DO_STRIP";
if (optional)
{
os << " AND EXISTS " << quotedFullDestinationFilename;
}
os << ")\n";
os << "ENDIF(CMAKE_INSTALL_DO_STRIP" << optionalString << ")\n";
}
void cmInstallTargetGenerator::AddRanlibRule(std::ostream& os,

View File

@ -45,6 +45,7 @@ protected:
bool useSOName);
void AddInstallNamePatchRule(std::ostream& os, const char* destination);
void AddStripRule(std::ostream& os,
cmTarget::TargetType type,
const std::string& quotedFullDestinationFilename,
bool optional);
void AddRanlibRule(std::ostream& os,