浏览代码

ENH: Teach Fortran compiler identification about the Portland Group compiler (PGI).

Brad King 17 年之前
父节点
当前提交
0c6ba12efd
共有 2 个文件被更改,包括 11 次插入5 次删除
  1. 2 0
      Modules/CMakeFortranCompilerId.F90.in
  2. 9 5
      Source/cmFileCommand.cxx

+ 2 - 0
Modules/CMakeFortranCompilerId.F90.in

@@ -8,6 +8,8 @@ PROGRAM CMakeFortranCompilerId
    PRINT *, 'INFO:compiler[GNU]'
 #elif defined(__IBM__) || defined(__IBMC__)
    PRINT *, 'INFO:compiler[VisualAge]'
+#elif defined(__PGI)
+   PRINT *, 'INFO:compiler[PGI]'
 #elif defined(_COMPILER_VERSION)
    PRINT *, 'INFO:compiler[MIPSpro]'
 !     This compiler is either not known or is too old to define an

+ 9 - 5
Source/cmFileCommand.cxx

@@ -533,12 +533,16 @@ bool cmFileCommand::HandleStringsCommand(std::vector<std::string> const& args)
         (limit_input < 0 || static_cast<int>(fin.tellg()) < limit_input) &&
         (c = fin.get(), fin))
     {
-    if(c == '\0')
+    if(c == '\0' || c == '\f')
       {
-      // A terminating null character has been found.  Check if the
-      // current string matches the requirements.  Since it was
-      // terminated by a null character, we require that the length be
-      // at least one no matter what the user specified.
+      // A terminating character has been found.  In most cases it is
+      // a NULL character, but at least one compiler (Portland Group
+      // Fortran) produces binaries that terminate strings with a form
+      // feed.
+
+      // Check if the current string matches the requirements.  Since
+      // it was terminated by a null character, we require that the
+      // length be at least one no matter what the user specified.
       if(s.length() >= minlen && s.length() >= 1 &&
          (!have_regex || regex.find(s.c_str())))
         {