|
@@ -333,31 +333,41 @@ void cmLocalUnixMakefileGenerator::OutputTargetRules(std::ostream& fout)
|
|
|
{
|
|
{
|
|
|
if (l->second.IsInAll())
|
|
if (l->second.IsInAll())
|
|
|
{
|
|
{
|
|
|
|
|
+ const char* targetPrefix = l->second.GetProperty("PREFIX");
|
|
|
|
|
+ const char* targetSuffix = l->second.GetProperty("SUFFIX");
|
|
|
std::string path = m_LibraryOutputPath;
|
|
std::string path = m_LibraryOutputPath;
|
|
|
- if(l->second.GetType() == cmTarget::STATIC_LIBRARY)
|
|
|
|
|
|
|
+ const char* prefixVar = 0;
|
|
|
|
|
+ const char* suffixVar = 0;
|
|
|
|
|
+ switch(l->second.GetType())
|
|
|
{
|
|
{
|
|
|
- path +=
|
|
|
|
|
- this->GetSafeDefinition("CMAKE_STATIC_LIBRARY_PREFIX") +
|
|
|
|
|
- l->first
|
|
|
|
|
- + this->GetSafeDefinition("CMAKE_STATIC_LIBRARY_SUFFIX");
|
|
|
|
|
- fout << " \\\n"
|
|
|
|
|
- << cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
|
|
|
- }
|
|
|
|
|
- else if(l->second.GetType() == cmTarget::SHARED_LIBRARY)
|
|
|
|
|
- {
|
|
|
|
|
- path +=
|
|
|
|
|
- this->GetSafeDefinition("CMAKE_SHARED_LIBRARY_PREFIX") +
|
|
|
|
|
- l->first
|
|
|
|
|
- + this->GetSafeDefinition("CMAKE_SHARED_LIBRARY_SUFFIX");
|
|
|
|
|
- fout << " \\\n"
|
|
|
|
|
- << cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
|
|
|
|
|
+ case cmTarget::STATIC_LIBRARY:
|
|
|
|
|
+ prefixVar = "CMAKE_STATIC_LIBRARY_PREFIX";
|
|
|
|
|
+ suffixVar = "CMAKE_STATIC_LIBRARY_SUFFIX";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case cmTarget::SHARED_LIBRARY:
|
|
|
|
|
+ prefixVar = "CMAKE_SHARED_LIBRARY_PREFIX";
|
|
|
|
|
+ suffixVar = "CMAKE_SHARED_LIBRARY_SUFFIX";
|
|
|
|
|
+ break;
|
|
|
|
|
+ case cmTarget::MODULE_LIBRARY:
|
|
|
|
|
+ prefixVar = "CMAKE_SHARED_MODULE_PREFIX";
|
|
|
|
|
+ suffixVar = "CMAKE_SHARED_MODULE_SUFFIX";
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
- else if(l->second.GetType() == cmTarget::MODULE_LIBRARY)
|
|
|
|
|
|
|
+ // if it is a library this will be set
|
|
|
|
|
+ if(prefixVar)
|
|
|
{
|
|
{
|
|
|
|
|
+ // if there is no prefix on the target use the cmake definition
|
|
|
|
|
+ if(!targetPrefix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetPrefix = this->GetSafeDefinition(prefixVar);
|
|
|
|
|
+ }
|
|
|
|
|
+ // if there is no suffix on the target use the cmake definition
|
|
|
|
|
+ if(!targetSuffix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetSuffix = this->GetSafeDefinition(suffixVar);
|
|
|
|
|
+ }
|
|
|
path +=
|
|
path +=
|
|
|
- this->GetSafeDefinition("CMAKE_SHARED_MODULE_PREFIX") +
|
|
|
|
|
- l->first
|
|
|
|
|
- + this->GetSafeDefinition("CMAKE_SHARED_MODULE_SUFFIX");
|
|
|
|
|
|
|
+ targetPrefix + l->first + targetSuffix;
|
|
|
fout << " \\\n"
|
|
fout << " \\\n"
|
|
|
<< cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
<< cmSystemTools::ConvertToOutputPath(path.c_str());
|
|
|
}
|
|
}
|
|
@@ -822,6 +832,8 @@ void cmLocalUnixMakefileGenerator::OutputLibraryRule(std::ostream& fout,
|
|
|
// collect up the link libraries
|
|
// collect up the link libraries
|
|
|
cmOStringStream linklibs;
|
|
cmOStringStream linklibs;
|
|
|
this->OutputLinkLibraries(linklibs, name, t);
|
|
this->OutputLinkLibraries(linklibs, name, t);
|
|
|
|
|
+ const char* targetLinkFlags = t.GetProperty("LINK_FLAGS");
|
|
|
|
|
+ std::string allLinkFlags;
|
|
|
for(std::vector<std::string>::iterator i = commands.begin();
|
|
for(std::vector<std::string>::iterator i = commands.begin();
|
|
|
i != commands.end(); ++i)
|
|
i != commands.end(); ++i)
|
|
|
{
|
|
{
|
|
@@ -876,9 +888,25 @@ void cmLocalUnixMakefileGenerator::OutputSharedLibraryRule(std::ostream& fout,
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
#endif
|
|
#endif
|
|
|
|
|
+ const char* targetPrefix = t.GetProperty("PREFIX");
|
|
|
|
|
+ if(!targetPrefix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetPrefix = this->GetSafeDefinition("CMAKE_SHARED_LIBRARY_PREFIX");
|
|
|
|
|
+ }
|
|
|
|
|
+ const char* targetSuffix = t.GetProperty("SUFFIX");
|
|
|
|
|
+ if(!targetSuffix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetSuffix = this->GetSafeDefinition("CMAKE_SHARED_LIBRARY_SUFFIX");
|
|
|
|
|
+ }
|
|
|
|
|
+ const char* targetLinkFlags = t.GetProperty("LINK_FLAGS");
|
|
|
|
|
+ if(targetLinkFlags)
|
|
|
|
|
+ {
|
|
|
|
|
+ linkFlags += targetLinkFlags;
|
|
|
|
|
+ linkFlags += " ";
|
|
|
|
|
+ }
|
|
|
this->OutputLibraryRule(fout, name, t,
|
|
this->OutputLibraryRule(fout, name, t,
|
|
|
- this->GetSafeDefinition("CMAKE_SHARED_LIBRARY_PREFIX"),
|
|
|
|
|
- this->GetSafeDefinition("CMAKE_SHARED_LIBRARY_SUFFIX"),
|
|
|
|
|
|
|
+ targetPrefix,
|
|
|
|
|
+ targetSuffix,
|
|
|
createRule,
|
|
createRule,
|
|
|
"shared library",
|
|
"shared library",
|
|
|
linkFlags.c_str());
|
|
linkFlags.c_str());
|
|
@@ -908,9 +936,25 @@ void cmLocalUnixMakefileGenerator::OutputModuleLibraryRule(std::ostream& fout,
|
|
|
linkFlags += this->GetSafeDefinition(build.c_str());
|
|
linkFlags += this->GetSafeDefinition(build.c_str());
|
|
|
linkFlags += " ";
|
|
linkFlags += " ";
|
|
|
}
|
|
}
|
|
|
|
|
+ const char* targetPrefix = t.GetProperty("PREFIX");
|
|
|
|
|
+ if(!targetPrefix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetPrefix = this->GetSafeDefinition("CMAKE_SHARED_MODULE_PREFIX");
|
|
|
|
|
+ }
|
|
|
|
|
+ const char* targetSuffix = t.GetProperty("SUFFIX");
|
|
|
|
|
+ if(!targetSuffix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetSuffix = this->GetSafeDefinition("CMAKE_SHARED_MODULE_SUFFIX");
|
|
|
|
|
+ }
|
|
|
|
|
+ const char* targetLinkFlags = t.GetProperty("LINK_FLAGS");
|
|
|
|
|
+ if(targetLinkFlags)
|
|
|
|
|
+ {
|
|
|
|
|
+ linkFlags += targetLinkFlags;
|
|
|
|
|
+ linkFlags += " ";
|
|
|
|
|
+ }
|
|
|
this->OutputLibraryRule(fout, name, t,
|
|
this->OutputLibraryRule(fout, name, t,
|
|
|
- this->GetSafeDefinition("CMAKE_SHARED_MODULE_PREFIX"),
|
|
|
|
|
- this->GetSafeDefinition("CMAKE_SHARED_MODULE_SUFFIX"),
|
|
|
|
|
|
|
+ targetPrefix,
|
|
|
|
|
+ targetSuffix,
|
|
|
createRule,
|
|
createRule,
|
|
|
"shared module",
|
|
"shared module",
|
|
|
linkFlags.c_str());
|
|
linkFlags.c_str());
|
|
@@ -929,10 +973,20 @@ void cmLocalUnixMakefileGenerator::OutputStaticLibraryRule(std::ostream& fout,
|
|
|
else
|
|
else
|
|
|
{
|
|
{
|
|
|
createRule = "CMAKE_C_CREATE_STATIC_LIBRARY";
|
|
createRule = "CMAKE_C_CREATE_STATIC_LIBRARY";
|
|
|
|
|
+ }
|
|
|
|
|
+ const char* targetPrefix = t.GetProperty("PREFIX");
|
|
|
|
|
+ if(!targetPrefix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetPrefix = this->GetSafeDefinition("CMAKE_STATIC_LIBRARY_PREFIX");
|
|
|
|
|
+ }
|
|
|
|
|
+ const char* targetSuffix = t.GetProperty("SUFFIX");
|
|
|
|
|
+ if(!targetSuffix)
|
|
|
|
|
+ {
|
|
|
|
|
+ targetSuffix = this->GetSafeDefinition("CMAKE_STATIC_LIBRARY_SUFFIX");
|
|
|
}
|
|
}
|
|
|
this->OutputLibraryRule(fout, name, t,
|
|
this->OutputLibraryRule(fout, name, t,
|
|
|
- this->GetSafeDefinition("CMAKE_STATIC_LIBRARY_PREFIX"),
|
|
|
|
|
- this->GetSafeDefinition("CMAKE_STATIC_LIBRARY_SUFFIX"),
|
|
|
|
|
|
|
+ targetPrefix,
|
|
|
|
|
+ targetSuffix,
|
|
|
createRule,
|
|
createRule,
|
|
|
"static library", 0);
|
|
"static library", 0);
|
|
|
|
|
|
|
@@ -1008,8 +1062,12 @@ void cmLocalUnixMakefileGenerator::OutputExecutableRule(std::ostream& fout,
|
|
|
linkFlags += this->GetSafeDefinition("CMAKE_CREATE_CONSOLE_EXE");
|
|
linkFlags += this->GetSafeDefinition("CMAKE_CREATE_CONSOLE_EXE");
|
|
|
linkFlags += " ";
|
|
linkFlags += " ";
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
+ const char* targetLinkFlags = t.GetProperty("LINK_FLAGS");
|
|
|
|
|
+ if(targetLinkFlags)
|
|
|
|
|
+ {
|
|
|
|
|
+ linkFlags += targetLinkFlags;
|
|
|
|
|
+ linkFlags += " ";
|
|
|
|
|
+ }
|
|
|
for(std::vector<std::string>::iterator i = commands.begin();
|
|
for(std::vector<std::string>::iterator i = commands.begin();
|
|
|
i != commands.end(); ++i)
|
|
i != commands.end(); ++i)
|
|
|
{
|
|
{
|