summaryrefslogtreecommitdiff
path: root/Source/cmLocalUnixMakefileGenerator3.cxx
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2008-01-17 19:58:01 -0500
committerBrad King <brad.king@kitware.com>2008-01-17 19:58:01 -0500
commit8d1d5500c8cb7ebabce73777c79c33074e679ab5 (patch)
tree27c37321fe8aff93398c9309462eb4f05b735778 /Source/cmLocalUnixMakefileGenerator3.cxx
parent7f589c9f23ee64ca0d36e81a02a70a87bc7fbbbe (diff)
downloadcmake-8d1d5500c8cb7ebabce73777c79c33074e679ab5.tar.gz
ENH: Enable use of COMPILE_DEFINITIONS property for Fortran sources.
Diffstat (limited to 'Source/cmLocalUnixMakefileGenerator3.cxx')
-rw-r--r--Source/cmLocalUnixMakefileGenerator3.cxx47
1 files changed, 39 insertions, 8 deletions
diff --git a/Source/cmLocalUnixMakefileGenerator3.cxx b/Source/cmLocalUnixMakefileGenerator3.cxx
index adabd0a8fb..8445a6c5a9 100644
--- a/Source/cmLocalUnixMakefileGenerator3.cxx
+++ b/Source/cmLocalUnixMakefileGenerator3.cxx
@@ -1478,7 +1478,8 @@ cmLocalUnixMakefileGenerator3
else if(lang == "Fortran")
{
std::vector<std::string> defines;
- if(const char* c_defines = mf->GetDefinition("CMAKE_DEFINITIONS"))
+ if(const char* c_defines =
+ mf->GetDefinition("CMAKE_TARGET_DEFINITIONS"))
{
cmSystemTools::ExpandListArgument(c_defines, defines);
}
@@ -1844,13 +1845,43 @@ void cmLocalUnixMakefileGenerator3
}
}
- cmakefileStream
- << "\n"
- << "# Preprocessor definitions for this directory.\n"
- << "SET(CMAKE_DEFINITIONS\n"
- << " " << this->Makefile->GetDefineFlags() << "\n"
- << " )\n";
-
+ // Build a list of preprocessor definitions for the target.
+ std::vector<std::string> defines;
+ {
+ std::string defPropName = "COMPILE_DEFINITIONS_";
+ defPropName += this->ConfigurationName;
+ if(const char* ddefs = this->Makefile->GetProperty("COMPILE_DEFINITIONS"))
+ {
+ cmSystemTools::ExpandListArgument(ddefs, defines);
+ }
+ if(const char* cdefs = target.GetProperty("COMPILE_DEFINITIONS"))
+ {
+ cmSystemTools::ExpandListArgument(cdefs, defines);
+ }
+ if(const char* dcdefs = this->Makefile->GetProperty(defPropName.c_str()))
+ {
+ cmSystemTools::ExpandListArgument(dcdefs, defines);
+ }
+ if(const char* ccdefs = target.GetProperty(defPropName.c_str()))
+ {
+ cmSystemTools::ExpandListArgument(ccdefs, defines);
+ }
+ }
+ if(!defines.empty())
+ {
+ cmakefileStream
+ << "\n"
+ << "# Preprocessor definitions for this target.\n"
+ << "SET(CMAKE_TARGET_DEFINITIONS\n";
+ for(std::vector<std::string>::const_iterator di = defines.begin();
+ di != defines.end(); ++di)
+ {
+ cmakefileStream
+ << " " << this->EscapeForCMake(di->c_str()) << "\n";
+ }
+ cmakefileStream
+ << " )\n";
+ }
}
//----------------------------------------------------------------------------