Merge topic 'cray-compiler'
53e76c8 Teach CMake about Cray C, C++, and Fortran compilers 34e1ac2 Create Fortran info variables for .mod behavior
This commit is contained in:
commit
c172ffef06
@ -42,6 +42,9 @@
|
|||||||
#elif defined(__PATHSCALE__)
|
#elif defined(__PATHSCALE__)
|
||||||
# define COMPILER_ID "PathScale"
|
# define COMPILER_ID "PathScale"
|
||||||
|
|
||||||
|
#elif defined(_CRAYC)
|
||||||
|
# define COMPILER_ID "Cray"
|
||||||
|
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
# define COMPILER_ID "GNU"
|
# define COMPILER_ID "GNU"
|
||||||
|
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
#elif defined(__PATHSCALE__)
|
#elif defined(__PATHSCALE__)
|
||||||
# define COMPILER_ID "PathScale"
|
# define COMPILER_ID "PathScale"
|
||||||
|
|
||||||
|
#elif defined(_CRAYC)
|
||||||
|
# define COMPILER_ID "Cray"
|
||||||
|
|
||||||
#elif defined(__GNUC__)
|
#elif defined(__GNUC__)
|
||||||
# define COMPILER_ID "GNU"
|
# define COMPILER_ID "GNU"
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
PRINT *, 'INFO:compiler[Intel]'
|
PRINT *, 'INFO:compiler[Intel]'
|
||||||
#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95)
|
#elif defined(__SUNPRO_F90) || defined(__SUNPRO_F95)
|
||||||
PRINT *, 'INFO:compiler[SunPro]'
|
PRINT *, 'INFO:compiler[SunPro]'
|
||||||
|
#elif defined(_CRAYFTN)
|
||||||
|
PRINT *, 'INFO:compiler[Cray]'
|
||||||
#elif defined(__G95__)
|
#elif defined(__G95__)
|
||||||
PRINT *, 'INFO:compiler[G95]'
|
PRINT *, 'INFO:compiler[G95]'
|
||||||
#elif defined(__PATHSCALE__)
|
#elif defined(__PATHSCALE__)
|
||||||
|
1
Modules/Compiler/Cray-C.cmake
Normal file
1
Modules/Compiler/Cray-C.cmake
Normal file
@ -0,0 +1 @@
|
|||||||
|
set(CMAKE_C_VERBOSE_FLAG "-v")
|
1
Modules/Compiler/Cray-CXX.cmake
Normal file
1
Modules/Compiler/Cray-CXX.cmake
Normal file
@ -0,0 +1 @@
|
|||||||
|
set(CMAKE_CXX_VERBOSE_FLAG "-v")
|
4
Modules/Compiler/Cray-Fortran.cmake
Normal file
4
Modules/Compiler/Cray-Fortran.cmake
Normal file
@ -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 .)
|
@ -1336,6 +1336,29 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
|
|||||||
"this variable is defined to 1.",
|
"this variable is defined to 1.",
|
||||||
false,"Variables for Languages");
|
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
|
// variables that are used by cmake but not to be documented
|
||||||
cm->DefineProperty("CMAKE_MATCH_0", cmProperty::VARIABLE,0,0);
|
cm->DefineProperty("CMAKE_MATCH_0", cmProperty::VARIABLE,0,0);
|
||||||
cm->DefineProperty("CMAKE_MATCH_1", cmProperty::VARIABLE,0,0);
|
cm->DefineProperty("CMAKE_MATCH_1", cmProperty::VARIABLE,0,0);
|
||||||
|
@ -1723,6 +1723,8 @@ const char* cmMakefileTargetGenerator::GetFortranModuleDirectory()
|
|||||||
this->Target->GetProperty("Fortran_MODULE_DIRECTORY");
|
this->Target->GetProperty("Fortran_MODULE_DIRECTORY");
|
||||||
const char* moddir_flag =
|
const char* moddir_flag =
|
||||||
this->Makefile->GetDefinition("CMAKE_Fortran_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)
|
if(target_mod_dir && moddir_flag)
|
||||||
{
|
{
|
||||||
// Compute the full path to the module directory.
|
// Compute the full path to the module directory.
|
||||||
@ -1743,6 +1745,10 @@ const char* cmMakefileTargetGenerator::GetFortranModuleDirectory()
|
|||||||
// Make sure the module output directory exists.
|
// Make sure the module output directory exists.
|
||||||
cmSystemTools::MakeDirectory(this->FortranModuleDirectory.c_str());
|
cmSystemTools::MakeDirectory(this->FortranModuleDirectory.c_str());
|
||||||
}
|
}
|
||||||
|
else if(moddir_default && moddir_flag)
|
||||||
|
{
|
||||||
|
this->FortranModuleDirectory = moddir_default;
|
||||||
|
}
|
||||||
this->FortranModuleDirectoryComputed = true;
|
this->FortranModuleDirectoryComputed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1760,6 +1766,13 @@ const char* cmMakefileTargetGenerator::GetFortranModuleDirectory()
|
|||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void cmMakefileTargetGenerator::AddFortranFlags(std::string& flags)
|
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.
|
// Add a module output directory flag if necessary.
|
||||||
if(const char* mod_dir = this->GetFortranModuleDirectory())
|
if(const char* mod_dir = this->GetFortranModuleDirectory())
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user