diff --git a/Source/cmGetDirectoryPropertyCommand.cxx b/Source/cmGetDirectoryPropertyCommand.cxx index 278e2aef6..0f0fcca13 100644 --- a/Source/cmGetDirectoryPropertyCommand.cxx +++ b/Source/cmGetDirectoryPropertyCommand.cxx @@ -28,7 +28,6 @@ bool cmGetDirectoryPropertyCommand::InitialPass( return false; } - std::vector::size_type cc; std::vector::const_iterator i = args.begin(); std::string variable = *i; ++i; @@ -76,72 +75,7 @@ bool cmGetDirectoryPropertyCommand::InitialPass( // OK, now we have the directory to process, we just get the requested // information out of it - if ( *i == "VARIABLES" || *i == "CACHE_VARIABLES" ) - { - int cacheonly = 0; - if ( *i == "CACHE_VARIABLES" ) - { - cacheonly = 1; - } - std::vector vars = dir->GetDefinitions(cacheonly); - for ( cc = 0; cc < vars.size(); cc ++ ) - { - if ( cc > 0 ) - { - output += ";"; - } - output += vars[cc]; - } - } - else if ( *i == "MACROS" ) - { - dir->GetListOfMacros(output); - } - else if ( *i == "DEFINITIONS" ) - { - output = dir->GetDefineFlags(); - } - else if ( *i == "INCLUDE_DIRECTORIES" ) - { - std::vector::iterator it; - int first = 1; - cmOStringStream str; - for ( it = dir->GetIncludeDirectories().begin(); - it != dir->GetIncludeDirectories().end(); - ++ it ) - { - if ( !first ) - { - str << ";"; - } - str << it->c_str(); - first = 0; - } - output = str.str(); - } - else if ( *i == "INCLUDE_REGULAR_EXPRESSION" ) - { - output = dir->GetIncludeRegularExpression(); - } - else if ( *i == "LINK_DIRECTORIES" ) - { - std::vector::iterator it; - int first = 1; - cmOStringStream str; - for ( it = dir->GetLinkDirectories().begin(); - it != dir->GetLinkDirectories().end(); - ++ it ) - { - if ( !first ) - { - str << ";"; - } - str << it->c_str(); - first = 0; - } - output = str.str(); - } - else if ( *i == "DEFINITION" ) + if ( *i == "DEFINITION" ) { ++i; if (i == args.end()) @@ -151,20 +85,16 @@ bool cmGetDirectoryPropertyCommand::InitialPass( return false; } output = dir->GetSafeDefinition(i->c_str()); + this->Makefile->AddDefinition(variable.c_str(), output.c_str()); } - else + + const char *prop = dir->GetProperty(i->c_str()); + if (prop) { - const char *prop = dir->GetProperty(i->c_str()); - if (prop) - { - this->Makefile->AddDefinition(variable.c_str(), prop); - return true; - } - this->Makefile->AddDefinition(variable.c_str(), ""); + this->Makefile->AddDefinition(variable.c_str(), prop); return true; } - this->Makefile->AddDefinition(variable.c_str(), output.c_str()); - + this->Makefile->AddDefinition(variable.c_str(), ""); return true; } diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 04873130d..fae8ad914 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -2614,6 +2614,79 @@ const char *cmMakefile::GetProperty(const char* prop, this->SetProperty("LISTFILE_STACK",tmp.c_str()); } + // some other special properties sigh + std::string output = ""; + if (!strcmp("VARIABLES",prop) || !strcmp("CACHE_VARIABLES",prop)) + { + int cacheonly = 0; + if ( !strcmp("CACHE_VARIABLES",prop) ) + { + cacheonly = 1; + } + std::vector vars = this->GetDefinitions(cacheonly); + for (unsigned int cc = 0; cc < vars.size(); cc ++ ) + { + if ( cc > 0 ) + { + output += ";"; + } + output += vars[cc]; + } + this->SetProperty(prop, output.c_str()); + } + else if (!strcmp("MACROS",prop)) + { + this->GetListOfMacros(output); + this->SetProperty(prop, output.c_str()); + } + else if (!strcmp("DEFINITIONS",prop)) + { + output = this->GetDefineFlags(); + this->SetProperty(prop, output.c_str()); + } + else if (!strcmp("INCLUDE_DIRECTORIES",prop) ) + { + std::vector::iterator it; + int first = 1; + cmOStringStream str; + for ( it = this->GetIncludeDirectories().begin(); + it != this->GetIncludeDirectories().end(); + ++ it ) + { + if ( !first ) + { + str << ";"; + } + str << it->c_str(); + first = 0; + } + output = str.str(); + this->SetProperty(prop, output.c_str()); + } + else if (!strcmp("INCLUDE_REGULAR_EXPRESSION",prop) ) + { + return this->GetIncludeRegularExpression(); + } + else if (!strcmp("LINK_DIRECTORIES",prop)) + { + std::vector::iterator it; + int first = 1; + cmOStringStream str; + for ( it = this->GetLinkDirectories().begin(); + it != this->GetLinkDirectories().end(); + ++ it ) + { + if ( !first ) + { + str << ";"; + } + str << it->c_str(); + first = 0; + } + output = str.str(); + this->SetProperty(prop, output.c_str()); + } + bool chain = false; const char *retVal = this->Properties.GetPropertyValue(prop, scope, chain);