summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cole <david.cole@kitware.com>2010-11-16 19:46:30 (GMT)
committerCMake Topic Stage <kwrobot@kitware.com>2010-11-16 19:46:30 (GMT)
commitc172ffef061c1bf412389fdf01275cf91aa2ff79 (patch)
tree1d28533950a2d04a5fd09de6d770aaf99e2f3420
parente19fa08ac9df21826b5427c4d4442a5eee45b9f9 (diff)
parent53e76c8f126fd2480c560cf2bb46a93eabbc91fa (diff)
downloadCMake-c172ffef061c1bf412389fdf01275cf91aa2ff79.zip
CMake-c172ffef061c1bf412389fdf01275cf91aa2ff79.tar.gz
CMake-c172ffef061c1bf412389fdf01275cf91aa2ff79.tar.bz2
Merge topic 'cray-compiler'
53e76c8 Teach CMake about Cray C, C++, and Fortran compilers 34e1ac2 Create Fortran info variables for .mod behavior
-rw-r--r--Modules/CMakeCCompilerId.c.in3
-rw-r--r--Modules/CMakeCXXCompilerId.cpp.in3
-rw-r--r--Modules/CMakeFortranCompilerId.F.in2
-rw-r--r--Modules/Compiler/Cray-C.cmake1
-rw-r--r--Modules/Compiler/Cray-CXX.cmake1
-rw-r--r--Modules/Compiler/Cray-Fortran.cmake4
-rw-r--r--Source/cmDocumentVariables.cxx23
-rw-r--r--Source/cmMakefileTargetGenerator.cxx13
8 files changed, 50 insertions, 0 deletions
diff --git a/Modules/CMakeCCompilerId.c.in b/Modules/CMakeCCompilerId.c.in
index accda32..2b80c88 100644
--- a/Modules/CMakeCCompilerId.c.in
+++ b/Modules/CMakeCCompilerId.c.in
@@ -42,6 +42,9 @@
#elif defined(__PATHSCALE__)
# define COMPILER_ID "PathScale"
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+
#elif defined(__GNUC__)
# define COMPILER_ID "GNU"
diff --git a/Modules/CMakeCXXCompilerId.cpp.in b/Modules/CMakeCXXCompilerId.cpp.in
index 4a32823..91f116a 100644
--- a/Modules/CMakeCXXCompilerId.cpp.in
+++ b/Modules/CMakeCXXCompilerId.cpp.in
@@ -44,6 +44,9 @@
#elif defined(__PATHSCALE__)
# define COMPILER_ID "PathScale"
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+
#elif defined(__GNUC__)
# define COMPILER_ID "GNU"
diff --git a/Modules/CMakeFortranCompilerId.F.in b/Modules/CMakeFortranCompilerId.F.in
index 107470c..4080cc1 100644
--- a/Modules/CMakeFortranCompilerId.F.in
+++ b/Modules/CMakeFortranCompilerId.F.in
@@ -6,6 +6,8 @@
PRINT *, 'INFO:compiler[Intel]'
#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95)
PRINT *, 'INFO:compiler[SunPro]'
+#elif defined(_CRAYFTN)
+ PRINT *, 'INFO:compiler[Cray]'
#elif defined(__G95__)
PRINT *, 'INFO:compiler[G95]'
#elif defined(__PATHSCALE__)
diff --git a/Modules/Compiler/Cray-C.cmake b/Modules/Compiler/Cray-C.cmake
new file mode 100644
index 0000000..675560c
--- /dev/null
+++ b/Modules/Compiler/Cray-C.cmake
@@ -0,0 +1 @@
+set(CMAKE_C_VERBOSE_FLAG "-v")
diff --git a/Modules/Compiler/Cray-CXX.cmake b/Modules/Compiler/Cray-CXX.cmake
new file mode 100644
index 0000000..9fb191c
--- /dev/null
+++ b/Modules/Compiler/Cray-CXX.cmake
@@ -0,0 +1 @@
+set(CMAKE_CXX_VERBOSE_FLAG "-v")
diff --git a/Modules/Compiler/Cray-Fortran.cmake b/Modules/Compiler/Cray-Fortran.cmake
new file mode 100644
index 0000000..4f45176
--- /dev/null
+++ b/Modules/Compiler/Cray-Fortran.cmake
@@ -0,0 +1,4 @@
+set(CMAKE_Fortran_VERBOSE_FLAG "-v")
+set(CMAKE_Fortran_MODOUT_FLAG -em)
+set(CMAKE_Fortran_MODDIR_FLAG -J)
+set(CMAKE_Fortran_MODDIR_DEFAULT .)
diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx
index a877680..a69bb8f 100644
--- a/Source/cmDocumentVariables.cxx
+++ b/Source/cmDocumentVariables.cxx
@@ -1336,6 +1336,29 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
"this variable is defined to 1.",
false,"Variables for Languages");
+ cm->DefineProperty(
+ "CMAKE_Fortran_MODDIR_FLAG", cmProperty::VARIABLE,
+ "Fortran flag for module output directory.",
+ "This stores the flag needed to pass the value of the "
+ "Fortran_MODULE_DIRECTORY target property to the compiler.",
+ false,"Variables for Languages");
+
+ cm->DefineProperty(
+ "CMAKE_Fortran_MODDIR_DEFAULT", cmProperty::VARIABLE,
+ "Fortran default module output directory.",
+ "Most Fortran compilers write .mod files to the current working "
+ "directory. "
+ "For those that do not, this is set to \".\" and used when the "
+ "Fortran_MODULE_DIRECTORY target property is not set.",
+ false,"Variables for Languages");
+
+ cm->DefineProperty(
+ "CMAKE_Fortran_MODOUT_FLAG", cmProperty::VARIABLE,
+ "Fortran flag to enable module output.",
+ "Most Fortran compilers write .mod files out by default. "
+ "For others, this stores the flag needed to enable module output.",
+ false,"Variables for Languages");
+
// variables that are used by cmake but not to be documented
cm->DefineProperty("CMAKE_MATCH_0", cmProperty::VARIABLE,0,0);
cm->DefineProperty("CMAKE_MATCH_1", cmProperty::VARIABLE,0,0);
diff --git a/Source/cmMakefileTargetGenerator.cxx b/Source/cmMakefileTargetGenerator.cxx
index 9153f3a..6b290ab 100644
--- a/Source/cmMakefileTargetGenerator.cxx
+++ b/Source/cmMakefileTargetGenerator.cxx
@@ -1723,6 +1723,8 @@ const char* cmMakefileTargetGenerator::GetFortranModuleDirectory()
this->Target->GetProperty("Fortran_MODULE_DIRECTORY");
const char* moddir_flag =
this->Makefile->GetDefinition("CMAKE_Fortran_MODDIR_FLAG");
+ const char* moddir_default =
+ this->Makefile->GetDefinition("CMAKE_Fortran_MODDIR_DEFAULT");
if(target_mod_dir && moddir_flag)
{
// Compute the full path to the module directory.
@@ -1743,6 +1745,10 @@ const char* cmMakefileTargetGenerator::GetFortranModuleDirectory()
// Make sure the module output directory exists.
cmSystemTools::MakeDirectory(this->FortranModuleDirectory.c_str());
}
+ else if(moddir_default && moddir_flag)
+ {
+ this->FortranModuleDirectory = moddir_default;
+ }
this->FortranModuleDirectoryComputed = true;
}
@@ -1760,6 +1766,13 @@ const char* cmMakefileTargetGenerator::GetFortranModuleDirectory()
//----------------------------------------------------------------------------
void cmMakefileTargetGenerator::AddFortranFlags(std::string& flags)
{
+ // Enable module output if necessary.
+ if(const char* modout_flag =
+ this->Makefile->GetDefinition("CMAKE_Fortran_MODOUT_FLAG"))
+ {
+ this->LocalGenerator->AppendFlags(flags, modout_flag);
+ }
+
// Add a module output directory flag if necessary.
if(const char* mod_dir = this->GetFortranModuleDirectory())
{