loki.transform.build_system_transform

Transformations to be used in build-system level tasks

Classes

CMakePlanner(rootpath, mode[, build])

Generates a list of files to add, remove or replace in a CMake target's list of sources

FileWriteTransformation([builddir, mode, ...])

Write out modified source files to a select build directory

class CMakePlanner(rootpath, mode, build=None)

Bases: Transformation

Generates a list of files to add, remove or replace in a CMake target’s list of sources

This is intended to be used in a Scheduler traversal triggered during the configuration phase of a build (e.g., using execute_process) to generate a CMake plan file (using write_planfile()). This file set variables LOKI_SOURCES_TO_TRANSFORM, LOKI_SOURCES_TO_APPEND, and LOKI_SOURCES_TO_REMOVE that can then be used to update a target’s SOURCES property via get_target_property and set_property.

sources_to_append

Newly generated source files that need to be added to the target

Type:

list of str

sources_to_remove

The source files that are replaced and must be removed from the target

Type:

list of str

sources_to_transform

The source files that are going to be transformed by Loki transformations

Type:

list of str

Parameters:
  • rootpath (pathlib.Path or str) – The base directory of the source tree

  • mode (str) – The name of the transformation mode (which is going to be inserted into the file name of new source files)

  • build (pathlib.Path or str) – The target directory for generate source files

transform_subroutine(routine, **kwargs)

Insert the current subroutine into the lists of source files to process, add and remove, if part of the plan

Parameters:
  • routine (Subroutine) – The subroutine object to process

  • item (Item) – The corresponding work item from the Scheduler

  • role (str) – The routine’s role

write_planfile(filepath)

Write the CMake plan file at filepath

class FileWriteTransformation(builddir=None, mode='loki', suffix=None, cuf=False, include_module_var_imports=False)

Bases: Transformation

Write out modified source files to a select build directory

Parameters:
  • builddir (str or path) – Directory for the output to be written to

  • mode (str, optional) – “Mode” identifier string to add in front of the file suffix

  • suffix (str, optional) – File suffix to determine file type for all written file. If omitted, it will preserve the original file type.

  • cuf (bool, optional) – Use CUF (CUDA Fortran) backend instead of Fortran backend.

  • include_module_var_imports (bool, optional) – Flag to force the Scheduler traversal graph to recognise module variable imports and write the modified module files.

traverse_file_graph = True
property item_filter

Override item_filter to configure whether module variable imports are honoured in the Scheduler traversal.

transform_file(sourcefile, **kwargs)

Defines the transformation to apply to Sourcefile items.

For transformations that modify Sourcefile objects, this method should be implemented. It gets called via the dispatch method apply().

Parameters:
  • sourcefile (Sourcefile) – The sourcefile to be transformed.

  • **kwargs (optional) – Keyword arguments for the transformation.