cmTarget: Don't set properties on custom targets

Properties are not required on custom targets.
This commit is contained in:
Ben Boeckel 2014-03-12 14:05:52 -04:00
parent 660769151a
commit b75fc0e1ad
1 changed files with 41 additions and 35 deletions

View File

@ -328,7 +328,7 @@ void cmTarget::SetMakefile(cmMakefile* mf)
this->IsApple = this->Makefile->IsOn("APPLE"); this->IsApple = this->Makefile->IsOn("APPLE");
// Setup default property values. // Setup default property values.
if (this->GetType() != INTERFACE_LIBRARY) if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY)
{ {
this->SetPropertyDefault("INSTALL_NAME_DIR", 0); this->SetPropertyDefault("INSTALL_NAME_DIR", 0);
this->SetPropertyDefault("INSTALL_RPATH", ""); this->SetPropertyDefault("INSTALL_RPATH", "");
@ -369,41 +369,44 @@ void cmTarget::SetMakefile(cmMakefile* mf)
mf->GetConfigurations(configNames); mf->GetConfigurations(configNames);
// Setup per-configuration property default values. // Setup per-configuration property default values.
const char* configProps[] = { if (this->GetType() != UTILITY)
"ARCHIVE_OUTPUT_DIRECTORY_",
"LIBRARY_OUTPUT_DIRECTORY_",
"RUNTIME_OUTPUT_DIRECTORY_",
"PDB_OUTPUT_DIRECTORY_",
"COMPILE_PDB_OUTPUT_DIRECTORY_",
"MAP_IMPORTED_CONFIG_",
0};
for(std::vector<std::string>::iterator ci = configNames.begin();
ci != configNames.end(); ++ci)
{ {
std::string configUpper = cmSystemTools::UpperCase(*ci); const char* configProps[] = {
for(const char** p = configProps; *p; ++p) "ARCHIVE_OUTPUT_DIRECTORY_",
"LIBRARY_OUTPUT_DIRECTORY_",
"RUNTIME_OUTPUT_DIRECTORY_",
"PDB_OUTPUT_DIRECTORY_",
"COMPILE_PDB_OUTPUT_DIRECTORY_",
"MAP_IMPORTED_CONFIG_",
0};
for(std::vector<std::string>::iterator ci = configNames.begin();
ci != configNames.end(); ++ci)
{ {
if (this->TargetTypeValue == INTERFACE_LIBRARY std::string configUpper = cmSystemTools::UpperCase(*ci);
&& strcmp(*p, "MAP_IMPORTED_CONFIG_") != 0) for(const char** p = configProps; *p; ++p)
{ {
continue; if (this->TargetTypeValue == INTERFACE_LIBRARY
&& strcmp(*p, "MAP_IMPORTED_CONFIG_") != 0)
{
continue;
}
std::string property = *p;
property += configUpper;
this->SetPropertyDefault(property, 0);
} }
std::string property = *p;
property += configUpper;
this->SetPropertyDefault(property, 0);
}
// Initialize per-configuration name postfix property from the // Initialize per-configuration name postfix property from the
// variable only for non-executable targets. This preserves // variable only for non-executable targets. This preserves
// compatibility with previous CMake versions in which executables // compatibility with previous CMake versions in which executables
// did not support this variable. Projects may still specify the // did not support this variable. Projects may still specify the
// property directly. // property directly.
if(this->TargetTypeValue != cmTarget::EXECUTABLE if(this->TargetTypeValue != cmTarget::EXECUTABLE
&& this->TargetTypeValue != cmTarget::INTERFACE_LIBRARY) && this->TargetTypeValue != cmTarget::INTERFACE_LIBRARY)
{ {
std::string property = cmSystemTools::UpperCase(*ci); std::string property = cmSystemTools::UpperCase(*ci);
property += "_POSTFIX"; property += "_POSTFIX";
this->SetPropertyDefault(property, 0); this->SetPropertyDefault(property, 0);
}
} }
} }
@ -442,7 +445,7 @@ void cmTarget::SetMakefile(cmMakefile* mf)
} }
} }
if (this->GetType() != INTERFACE_LIBRARY) if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY)
{ {
this->SetPropertyDefault("C_VISIBILITY_PRESET", 0); this->SetPropertyDefault("C_VISIBILITY_PRESET", 0);
this->SetPropertyDefault("CXX_VISIBILITY_PRESET", 0); this->SetPropertyDefault("CXX_VISIBILITY_PRESET", 0);
@ -454,7 +457,7 @@ void cmTarget::SetMakefile(cmMakefile* mf)
{ {
this->SetProperty("POSITION_INDEPENDENT_CODE", "True"); this->SetProperty("POSITION_INDEPENDENT_CODE", "True");
} }
if (this->GetType() != INTERFACE_LIBRARY) if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY)
{ {
this->SetPropertyDefault("POSITION_INDEPENDENT_CODE", 0); this->SetPropertyDefault("POSITION_INDEPENDENT_CODE", 0);
} }
@ -476,8 +479,11 @@ void cmTarget::SetMakefile(cmMakefile* mf)
this->PolicyStatusCMP0022 = cmPolicies::NEW; this->PolicyStatusCMP0022 = cmPolicies::NEW;
} }
this->SetPropertyDefault("JOB_POOL_COMPILE", 0); if (this->GetType() != INTERFACE_LIBRARY && this->GetType() != UTILITY)
this->SetPropertyDefault("JOB_POOL_LINK", 0); {
this->SetPropertyDefault("JOB_POOL_COMPILE", 0);
this->SetPropertyDefault("JOB_POOL_LINK", 0);
}
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------