Просмотр исходного кода

Help: Add examples to CheckFortranSource{Runs,Compiles}

Michael Hirsch, Ph.D 7 лет назад
Родитель
Сommit
3d63d3ce2f
2 измененных файлов с 28 добавлено и 4 удалено
  1. 14 2
      Modules/CheckFortranSourceCompiles.cmake
  2. 14 2
      Modules/CheckFortranSourceRuns.cmake

+ 14 - 2
Modules/CheckFortranSourceCompiles.cmake

@@ -17,8 +17,20 @@ Check if given Fortran source compiles and links into an executable.
     )
     )
 
 
   Checks that the source supplied in ``<code>`` can be compiled as a Fortran
   Checks that the source supplied in ``<code>`` can be compiled as a Fortran
-  source file and linked as an executable (so it must contain at least a
-  ``PROGRAM`` entry point). The result will be stored in the internal cache
+  source file and linked as an executable. The ``<code>`` must be a Fortran program
+  containing at least an ``end`` statement--for example:
+
+  .. code-block:: cmake
+
+    check_fortran_source_compiles("character :: b; error stop b; end" F2018ESTOPOK SRC_EXT F90)
+
+  This command can help avoid costly build processes when a compiler lacks support
+  for a necessary feature, or a particular vendor library is not compatible with
+  the Fortran compiler version being used. This generate-time check may advise the
+  user of such before the main build process. See also the
+  :command:`check_fortran_source_runs` command to actually run the compiled code.
+
+  The result will be stored in the internal cache
   variable ``<resultVar>``, with a boolean true value for success and boolean
   variable ``<resultVar>``, with a boolean true value for success and boolean
   false for failure.
   false for failure.
 
 

+ 14 - 2
Modules/CheckFortranSourceRuns.cmake

@@ -16,8 +16,20 @@ subsequently be run.
         [SRC_EXT <extension>])
         [SRC_EXT <extension>])
 
 
   Check that the source supplied in ``<code>`` can be compiled as a Fortran source
   Check that the source supplied in ``<code>`` can be compiled as a Fortran source
-  file, linked as an executable and then run. The ``<code>`` must contain at
-  least ``program; end program`` statements. If the ``<code>`` could be built and run
+  file, linked as an executable and then run. The ``<code>`` must be a Fortran program
+  containing at least an ``end`` statement--for example:
+
+  .. code-block:: cmake
+
+    check_fortran_source_runs("real :: x[*]; call co_sum(x); end" F2018coarrayOK)
+
+  This command can help avoid costly build processes when a compiler lacks support
+  for a necessary feature, or a particular vendor library is not compatible with
+  the Fortran compiler version being used. Some of these failures only occur at runtime
+  instead of linktime, and a trivial runtime example can catch the issue before the
+  main build process.
+
+  If the ``<code>`` could be built and run
   successfully, the internal cache variable specified by ``<resultVar>`` will
   successfully, the internal cache variable specified by ``<resultVar>`` will
   be set to 1, otherwise it will be set to an value that evaluates to boolean
   be set to 1, otherwise it will be set to an value that evaluates to boolean
   false (e.g. an empty string or an error message).
   false (e.g. an empty string or an error message).