https://www.nist.gov/national-institute-standards-and-technology
Back to Policies and Guidelines home
Designates a mandatory point (policy).
Designates a recommended point (guideline).
Package your installation and provide automated builds of dependencies using Spack.
Rationale Automating the build process prevents duplication of effort and allows others to build a copy of the code and to incorporate needed fixes in dependency tools and libraries. Spack is a package management tool that allows easy configuration with multiple dependency versions, configurations, platforms, and compilers. Ref Enforce WSC 1.1 and WSC 1.2 Tag Tools
Compilable projects (e.g. those written in C++ and/or Fortran) must be buildable with CMake.
Details We suggest considering BLT (Build, Link and Test) which handles known CMake limitations and provides a set of templates to easily stand up a robust CMake-based build system. Rationale Consistent use of CMake and BLT will enable individual users, computing centers, and package managers (such as Spack) to install the package in a way that is compatible with other RADIUSS products on the same system. Ref WSC 3.1 Tag Tools
Provide build options for production (optimized) and debug deployments.
Rationale Production versions should not be compiled with debug symbols and should include platform-specific optimizations so long as they pass all tests. Debug versions should be available for users who can self-assess bugs and thus provide more specific bug reports or fixes. Ref Smart Libraries practice 19