Commit 3d63d3ce authored by Michael Hirsch, Ph.D's avatar Michael Hirsch, Ph.D Committed by Brad King
Browse files

Help: Add examples to CheckFortranSource{Runs,Compiles}

parent fa5bf870
...@@ -17,8 +17,20 @@ Check if given Fortran source compiles and links into an executable. ...@@ -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 source file and linked as an executable. The ``<code>`` must be a Fortran program
``PROGRAM`` entry point). The result will be stored in the internal cache 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.
......
...@@ -16,8 +16,20 @@ subsequently be run. ...@@ -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 file, linked as an executable and then run. The ``<code>`` must be a Fortran program
least ``program; end program`` statements. If the ``<code>`` could be built and run 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).
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment