Source code for snek5000.util.smake
"""Snakemake helper utilities"""
import os
[docs]def ensure_env():
"""Ensure environment variables ``NEK_SOURCE_ROOT`` and ``PATH`` are
intact.
"""
from .. import get_nek_source_root
NEK_SOURCE_ROOT = get_nek_source_root()
if not os.getenv("NEK_SOURCE_ROOT"):
os.environ["NEK_SOURCE_ROOT"] = NEK_SOURCE_ROOT
if NEK_SOURCE_ROOT not in os.getenv("PATH"):
os.environ["PATH"] = ":".join([NEK_SOURCE_ROOT + "/bin", os.getenv("PATH")])
[docs]def set_compiler_verbosity(config, verbosity):
"""Set Fortran compiler warnings verbosity:
Parameters
----------
config: dict
verbosity: int
- 0 == suppress warnings
- 1 == do nothing
- 2 == all warnings
"""
flags = {0: " -w ", 1: "", 2: " -Wall "}
warning_flag = flags[int(verbosity)]
config["FFLAGS"] = config.get("FFLAGS", "") + warning_flag
config["CFLAGS"] = config.get("CFLAGS", "") + warning_flag
[docs]def append_debug_flags(config):
"""Append to commonly used gcc / gfortran debug flags if ``SNEK_DEBUG``
environment is activated.
Parameters
----------
config: dict
Snakemake configuration. Should contain ``CFLAGS`` and ``FFLAGS`` keys.
"""
if os.getenv("SNEK_DEBUG"):
config["CFLAGS"] = config.get("CFLAGS", "") + " -O0 -g"
config["FFLAGS"] = (
config.get("FFLAGS", "")
+ " -O0 -g -ffpe-trap=invalid,zero,overflow -DDEBUG "
)