GAP
January 4, 2024 ยท View on GitHub
GAP
A utility library to bridge llvm and mlir gaps.
Build & Configure
NOTE: if using the vcpkg preset, VCPKG_ROOT must be set to the root directory of the vcpkg instance
cmake --preset ninja-multi-vcpkg
cmake --build --preset ninja-multi-vcpkg
Install & Integrate
Simply use cmake install infrastructure:
cmake -DCMAKE_INSTALL_PREFIX:PATH=<path> --build --preset ninja-multi-vcpkg --target install
where installation path might be for example ~/opt/gap.
To integrate into other cmake project simply include:
find_package(gap CONFIG REQUIRED)
and point cmake to gap install directory:
cmake -Dgap_DIR=~/opt/gap/lib/cmake/gap ...
Test
ctest ./builds/ --preset ninja-multi-vcpkg
Dependencies
| Name | Version |
|---|---|
| Git | Latest |
| CMake | 3.21+ |
| Clang | 12+ |
| ccache | Latest |
Cmake takes care of downloading and building the vcpkg dependencies listed in vcpkg.json.
Dependencies for development
- pre-commit
pip install pre-commit - cmake-format
pip install cmakelangrecommended together with vscode cmake-format extension
Structure
-
Core GAP
- contracts
- error handling
- parsing
- logging
- coroutines
- ranges
- benchmarks
- data structures
- cmake utils
-
LLVM GAP
- ranges
- single context library (sc)
- monadic builders
-
MLIR GAP
- parser
- fmt
- single context library (sc)
- ranges
-
Any IR GAP
- serialize/deserialize uniform ir representation