add an example for flag validation [ci skip]

This commit is contained in:
Radovan Bast 2017-05-03 16:25:43 +02:00
parent 5a10a3f23d
commit e607ebe284

View File

@ -155,3 +155,35 @@ This file should implement a function with the following signature:
In this function you can do any validation and post-processing you like. In this function you can do any validation and post-processing you like.
This function is run after the flags are parsed and before the CMake command This function is run after the flags are parsed and before the CMake command
is run. is run.
Example for a validation of MPI flags to the setup script:
.. code-block:: python
import sys
def contains_flag(sys_argv, flag):
return (any(x for x in sys_argv if x.startswith('--{0}='.format(flag))))
def postprocess_args(sys_argv, arguments):
# if --mpi is selected and compilers are not selected
# then compilers default to mpif90, mpicc, and mpicxx
if arguments['--mpi']:
if not contains_flag(sys_argv, 'fc') and not contains_flag(sys_argv, 'cc') and not contains_flag(sys_argv, 'cxx'):
arguments['--fc'] = 'mpif90'
arguments['--cc'] = 'mpicc'
arguments['--cxx'] = 'mpicxx'
# if one of the compilers contains "mpi" and --mpi is not selected, it is probably a user error
# in this case stop the configuration
asking_for_mpi_compiler = False
for flag in ['fc', 'cc', 'cxx']:
if contains_flag(sys_argv, 'fc'):
if 'mpi' in arguments['--fc']:
asking_for_mpi_compiler = True
if asking_for_mpi_compiler and not arguments['--mpi']:
sys.stderr.write('ERROR: you ask for an MPI compiler but have not specified --mpi\n')
sys.exit(1)
return arguments