Developer Guide
Contributing
Folks interested in contributing should check out the Issues page. There you should find some easy fixes for anyone with some C/C++ experience. Before making changes take a look at the style guide.
Additional guidelines:
- Don't break the build
- If in doubt, make a branch
- Run the ctest suite - everything must pass
- Don't try to force push to
masterordevelop; it is disabled
Internal APIs
Developers should refer to this document discussing the APIs and their organization.
How are the branches setup?
The software repository setup is as follows:
- Each repository has exactly two branches:
masteranddevelop. - All developers can modify the
developbranch at will, without restriction. - No developer may directly modify the
masterbranch. - Every day, an automated process will perform regression tests on both branches, and post the results online here.
- Every day, an automated process will merge all changes
from the
developbranch to themasterbranch if and only if the resultingmasterregression tests pass. - A select group of Owners may modify
masterfor the limited purposes of repairing the automated system.
The above text was taken from the Automation page.
How does the build-system work?
We use CMake. First, read this page on the CMake build-system. Then, take a look at bob.cmake and one of the CMakeLists.txt files in sub-directory.
Simmetrix
How do we use Simmetrix SimModSuite?
We use SimModSuite mostly for the interface to geometric modeling kernels. In some cases apf-sim is used and there is a much stronger dependency (mesh, fields, etc.).
There is a new version of SimModSuite. How can I build against it?
- increase the max version # here: https://github.com/SCOREC/core/blob/ea65d5fb9e9c7915da289c9106d7b9f7b8c26727/cmake/FindSimModSuite.cmake#L77
- run make and ensure that there are no additional warnings/errors
- run ctest to ensure nothing is broken
- push the max version # change
Building Developer Documentation
Using https://github.com/SCOREC/core/blob/master/Doxyfile_internal.in more documentation on both internal and external APIs will be generated.
- Install Doxygen
- on SCOREC RHEL9 systems the following modules will provide it:
module use /opt/scorec/spack/rhel9/v0201_4/lmod/linux-rhel9-x86_64/Core/
module load gcc/12.3.0-iil3lno mpich/4.1.1-xpoyz4t
module load doxygen/1.9.6-5ppxahb
- Run CMake
- Build documentation:
cmake --build /path/to/build/dir --target docInternalorcd /path/to/build/dir; make docInternal