- CMake >= 3.13.4
- GCC >= 7.1.0
- Python >= 3.8
- pip >= 22.1.1
cd custom-llvm && ./prepare.sh
cd ../build && ./build.shcd src/python/futag-package
pip install -e ".[test]"cd src/python/futag-package
python -m pytest tests/ -v- Follow PEP 8
- Use Google-style docstrings
- All new methods must have type hints and docstrings
- Use
loggingmodule instead ofprint() - Use
withstatements for file I/O - Raise exceptions from
futag.exceptionsinstead ofsys.exit()
- Follow LLVM coding style (configured in .clang-format)
- Column limit: 80 characters
- Indent: 4 spaces
- Create a feature branch from
main - Make your changes with clear commit messages
- Ensure all Python tests pass
- Update documentation if APIs change
- Submit PR with description of changes
See docs/generators.md for the BaseGenerator pattern. Implement 10 abstract _gen_* methods.
When adding support for a new LLVM version:
- Create version-specific source files (e.g., FutagAnalyzer19.cpp)
- Create version-specific CMakeLists (e.g., CMakeLists19.txt)
- Update Checkers.td with version-specific copy
- Update build/build.sh version detection
- The base file should always match the latest supported LLVM version