BUG: Fix generation of Xcode 2.0 and earlier projects to use CMAKE_BUILD_TYPE.
This commit is contained in:
parent
f437c8e888
commit
576f0b65c7
@ -1031,27 +1031,18 @@ void cmGlobalXCodeGenerator::CreateBuildSettings(cmTarget& target,
|
|||||||
std::string cflags;
|
std::string cflags;
|
||||||
if(lang)
|
if(lang)
|
||||||
{
|
{
|
||||||
// Temporarily set the CMAKE_BUILD_TYPE so the local generator can use
|
|
||||||
// it. TODO: The local generator methods should take the configuration
|
|
||||||
// name as input.
|
|
||||||
if(configName)
|
|
||||||
{
|
|
||||||
m_CurrentMakefile->AddDefinition("CMAKE_BUILD_TYPE", configName);
|
|
||||||
}
|
|
||||||
// for c++ projects get the c flags as well
|
// for c++ projects get the c flags as well
|
||||||
if(strcmp(lang, "CXX") == 0)
|
if(strcmp(lang, "CXX") == 0)
|
||||||
{
|
{
|
||||||
m_CurrentLocalGenerator->AddLanguageFlags(cflags, "C");
|
m_CurrentLocalGenerator->AddLanguageFlags(cflags, "C", configName);
|
||||||
m_CurrentLocalGenerator->AddSharedFlags(cflags, lang, shared);
|
m_CurrentLocalGenerator->AddSharedFlags(cflags, lang, shared);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add language-specific flags.
|
// Add language-specific flags.
|
||||||
m_CurrentLocalGenerator->AddLanguageFlags(flags, lang);
|
m_CurrentLocalGenerator->AddLanguageFlags(flags, lang, configName);
|
||||||
|
|
||||||
// Add shared-library flags if needed.
|
// Add shared-library flags if needed.
|
||||||
m_CurrentLocalGenerator->AddSharedFlags(flags, lang, shared);
|
m_CurrentLocalGenerator->AddSharedFlags(flags, lang, shared);
|
||||||
|
|
||||||
// Remove the temporary CMAKE_BUILD_TYPE definition.
|
|
||||||
m_CurrentMakefile->AddDefinition("CMAKE_BUILD_TYPE", "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add define flags
|
// Add define flags
|
||||||
@ -1364,13 +1355,18 @@ cmGlobalXCodeGenerator::CreateUtilityTarget(cmTarget& cmtarget)
|
|||||||
std::string fileTypeString;
|
std::string fileTypeString;
|
||||||
std::string productTypeString;
|
std::string productTypeString;
|
||||||
std::string productName;
|
std::string productName;
|
||||||
this->CreateBuildSettings(cmtarget,
|
const char* globalConfig = 0;
|
||||||
buildSettings, fileTypeString,
|
|
||||||
productTypeString, productName, 0);
|
|
||||||
if(m_XcodeVersion > 20)
|
if(m_XcodeVersion > 20)
|
||||||
{
|
{
|
||||||
this->AddConfigurations(target, cmtarget);
|
this->AddConfigurations(target, cmtarget);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
globalConfig = m_CurrentMakefile->GetDefinition("CMAKE_BUILD_TYPE");
|
||||||
|
}
|
||||||
|
this->CreateBuildSettings(cmtarget,
|
||||||
|
buildSettings, fileTypeString,
|
||||||
|
productTypeString, productName, globalConfig);
|
||||||
target->AddAttribute("buildSettings", buildSettings);
|
target->AddAttribute("buildSettings", buildSettings);
|
||||||
cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
||||||
target->AddAttribute("dependencies", dependencies);
|
target->AddAttribute("dependencies", dependencies);
|
||||||
@ -1441,13 +1437,18 @@ cmGlobalXCodeGenerator::CreateXCodeTarget(cmTarget& cmtarget,
|
|||||||
std::string fileTypeString;
|
std::string fileTypeString;
|
||||||
std::string productTypeString;
|
std::string productTypeString;
|
||||||
std::string productName;
|
std::string productName;
|
||||||
|
const char* globalConfig = 0;
|
||||||
if(m_XcodeVersion > 20)
|
if(m_XcodeVersion > 20)
|
||||||
{
|
{
|
||||||
this->AddConfigurations(target, cmtarget);
|
this->AddConfigurations(target, cmtarget);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
globalConfig = m_CurrentMakefile->GetDefinition("CMAKE_BUILD_TYPE");
|
||||||
|
}
|
||||||
this->CreateBuildSettings(cmtarget,
|
this->CreateBuildSettings(cmtarget,
|
||||||
buildSettings, fileTypeString,
|
buildSettings, fileTypeString,
|
||||||
productTypeString, productName, 0);
|
productTypeString, productName, globalConfig);
|
||||||
target->AddAttribute("buildSettings", buildSettings);
|
target->AddAttribute("buildSettings", buildSettings);
|
||||||
cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
cmXCodeObject* dependencies = this->CreateObject(cmXCodeObject::OBJECT_LIST);
|
||||||
target->AddAttribute("dependencies", dependencies);
|
target->AddAttribute("dependencies", dependencies);
|
||||||
|
@ -1349,13 +1349,14 @@ cmLocalGenerator::ComputeLinkInformation(cmTarget& target,
|
|||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmLocalGenerator::AddLanguageFlags(std::string& flags,
|
void cmLocalGenerator::AddLanguageFlags(std::string& flags,
|
||||||
const char* lang)
|
const char* lang,
|
||||||
|
const char* config)
|
||||||
{
|
{
|
||||||
// Add language-specific flags.
|
// Add language-specific flags.
|
||||||
std::string flagsVar = "CMAKE_";
|
std::string flagsVar = "CMAKE_";
|
||||||
flagsVar += lang;
|
flagsVar += lang;
|
||||||
flagsVar += "_FLAGS";
|
flagsVar += "_FLAGS";
|
||||||
this->AddConfigVariableFlags(flags, flagsVar.c_str());
|
this->AddConfigVariableFlags(flags, flagsVar.c_str(), config);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
@ -1417,8 +1418,8 @@ std::string cmLocalGenerator::GetRealDependency(const char* inName,
|
|||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmLocalGenerator::AddSharedFlags(std::string& flags,
|
void cmLocalGenerator::AddSharedFlags(std::string& flags,
|
||||||
const char* lang,
|
const char* lang,
|
||||||
bool shared)
|
bool shared)
|
||||||
{
|
{
|
||||||
std::string flagsVar;
|
std::string flagsVar;
|
||||||
|
|
||||||
@ -1443,18 +1444,18 @@ void cmLocalGenerator::AddSharedFlags(std::string& flags,
|
|||||||
|
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmLocalGenerator::AddConfigVariableFlags(std::string& flags,
|
void cmLocalGenerator::AddConfigVariableFlags(std::string& flags,
|
||||||
const char* var)
|
const char* var,
|
||||||
|
const char* config)
|
||||||
{
|
{
|
||||||
// Add the flags from the variable itself.
|
// Add the flags from the variable itself.
|
||||||
std::string flagsVar = var;
|
std::string flagsVar = var;
|
||||||
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
|
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
|
||||||
|
|
||||||
// Add the flags from the build-type specific variable.
|
// Add the flags from the build-type specific variable.
|
||||||
const char* buildType = m_Makefile->GetDefinition("CMAKE_BUILD_TYPE");
|
if(config && *config)
|
||||||
if(buildType && *buildType)
|
|
||||||
{
|
{
|
||||||
flagsVar += "_";
|
flagsVar += "_";
|
||||||
flagsVar += cmSystemTools::UpperCase(buildType);
|
flagsVar += cmSystemTools::UpperCase(config);
|
||||||
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
|
this->AppendFlags(flags, m_Makefile->GetDefinition(flagsVar.c_str()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -127,9 +127,11 @@ public:
|
|||||||
std::vector<cmLocalGenerator*>& GetChildren() { return this->Children; };
|
std::vector<cmLocalGenerator*>& GetChildren() { return this->Children; };
|
||||||
|
|
||||||
|
|
||||||
void AddLanguageFlags(std::string& flags, const char* lang);
|
void AddLanguageFlags(std::string& flags, const char* lang,
|
||||||
|
const char* config);
|
||||||
void AddSharedFlags(std::string& flags, const char* lang, bool shared);
|
void AddSharedFlags(std::string& flags, const char* lang, bool shared);
|
||||||
void AddConfigVariableFlags(std::string& flags, const char* var);
|
void AddConfigVariableFlags(std::string& flags, const char* var,
|
||||||
|
const char* config);
|
||||||
void AppendFlags(std::string& flags, const char* newFlags);
|
void AppendFlags(std::string& flags, const char* newFlags);
|
||||||
///! Get the include flags for the current makefile and language
|
///! Get the include flags for the current makefile and language
|
||||||
const char* GetIncludeFlags(const char* lang);
|
const char* GetIncludeFlags(const char* lang);
|
||||||
|
@ -187,7 +187,8 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
|
|||||||
|
|
||||||
// Add flags to create an executable.
|
// Add flags to create an executable.
|
||||||
this->LocalGenerator->
|
this->LocalGenerator->
|
||||||
AddConfigVariableFlags(linkFlags, "CMAKE_EXE_LINKER_FLAGS");
|
AddConfigVariableFlags(linkFlags, "CMAKE_EXE_LINKER_FLAGS",
|
||||||
|
this->LocalGenerator->m_ConfigurationName.c_str());
|
||||||
|
|
||||||
|
|
||||||
if(this->Target->GetPropertyAsBool("WIN32_EXECUTABLE"))
|
if(this->Target->GetPropertyAsBool("WIN32_EXECUTABLE"))
|
||||||
@ -202,7 +203,9 @@ void cmMakefileExecutableTargetGenerator::WriteExecutableRule(bool relink)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add language-specific flags.
|
// Add language-specific flags.
|
||||||
this->LocalGenerator->AddLanguageFlags(flags, linkLanguage);
|
this->LocalGenerator
|
||||||
|
->AddLanguageFlags(flags, linkLanguage,
|
||||||
|
this->LocalGenerator->m_ConfigurationName.c_str());
|
||||||
|
|
||||||
// Add target-specific linker flags.
|
// Add target-specific linker flags.
|
||||||
this->LocalGenerator->AppendFlags(linkFlags, this->Target->GetProperty("LINK_FLAGS"));
|
this->LocalGenerator->AppendFlags(linkFlags, this->Target->GetProperty("LINK_FLAGS"));
|
||||||
|
@ -109,7 +109,8 @@ void cmMakefileLibraryTargetGenerator::WriteSharedLibraryRules(bool relink)
|
|||||||
|
|
||||||
std::string extraFlags;
|
std::string extraFlags;
|
||||||
this->LocalGenerator->AppendFlags(extraFlags, this->Target->GetProperty("LINK_FLAGS"));
|
this->LocalGenerator->AppendFlags(extraFlags, this->Target->GetProperty("LINK_FLAGS"));
|
||||||
this->LocalGenerator->AddConfigVariableFlags(extraFlags, "CMAKE_SHARED_LINKER_FLAGS");
|
this->LocalGenerator->AddConfigVariableFlags(extraFlags, "CMAKE_SHARED_LINKER_FLAGS",
|
||||||
|
this->LocalGenerator->m_ConfigurationName.c_str());
|
||||||
if(this->Makefile->IsOn("WIN32") && !(this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW")))
|
if(this->Makefile->IsOn("WIN32") && !(this->Makefile->IsOn("CYGWIN") || this->Makefile->IsOn("MINGW")))
|
||||||
{
|
{
|
||||||
const std::vector<cmSourceFile*>& sources = this->Target->GetSourceFiles();
|
const std::vector<cmSourceFile*>& sources = this->Target->GetSourceFiles();
|
||||||
@ -142,7 +143,8 @@ void cmMakefileLibraryTargetGenerator::WriteModuleLibraryRules(bool relink)
|
|||||||
|
|
||||||
std::string extraFlags;
|
std::string extraFlags;
|
||||||
this->LocalGenerator->AppendFlags(extraFlags, this->Target->GetProperty("LINK_FLAGS"));
|
this->LocalGenerator->AppendFlags(extraFlags, this->Target->GetProperty("LINK_FLAGS"));
|
||||||
this->LocalGenerator->AddConfigVariableFlags(extraFlags, "CMAKE_MODULE_LINKER_FLAGS");
|
this->LocalGenerator->AddConfigVariableFlags(extraFlags, "CMAKE_MODULE_LINKER_FLAGS",
|
||||||
|
this->LocalGenerator->m_ConfigurationName.c_str());
|
||||||
// TODO: .def files should be supported here also.
|
// TODO: .def files should be supported here also.
|
||||||
this->WriteLibraryRules(linkRuleVar.c_str(), extraFlags.c_str(), relink);
|
this->WriteLibraryRules(linkRuleVar.c_str(), extraFlags.c_str(), relink);
|
||||||
}
|
}
|
||||||
|
@ -219,7 +219,9 @@ void cmMakefileTargetGenerator::WriteCommonCodeRules()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Add language-specific flags.
|
// Add language-specific flags.
|
||||||
this->LocalGenerator->AddLanguageFlags(flags, lang);
|
this->LocalGenerator
|
||||||
|
->AddLanguageFlags(flags, lang,
|
||||||
|
this->LocalGenerator->m_ConfigurationName.c_str());
|
||||||
|
|
||||||
// Add shared-library flags if needed.
|
// Add shared-library flags if needed.
|
||||||
this->LocalGenerator->AddSharedFlags(flags, lang, shared);
|
this->LocalGenerator->AddSharedFlags(flags, lang, shared);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user