loki.transform.build_system_transform
Transformations to be used in build-system level tasks
Classes
|
Generates a list of files to add, remove or replace in a CMake target's list of sources |
|
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., usingexecute_process
) to generate a CMake plan file (usingwrite_planfile()
). This file set variablesLOKI_SOURCES_TO_TRANSFORM
,LOKI_SOURCES_TO_APPEND
, andLOKI_SOURCES_TO_REMOVE
that can then be used to update a target’sSOURCES
property viaget_target_property
andset_property
.- sources_to_append
Newly generated source files that need to be added to the target
- sources_to_remove
The source files that are replaced and must be removed from the target
- sources_to_transform
The source files that are going to be transformed by Loki transformations
- Parameters:
rootpath (
pathlib.Path
or str) – The base directory of the source treemode (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 processitem (
Item
) – The corresponding work item from theScheduler
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 theScheduler
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 methodapply()
.- Parameters:
sourcefile (
Sourcefile
) – The sourcefile to be transformed.**kwargs (optional) – Keyword arguments for the transformation.