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