/gap

A utility library to bridge llvm and mlir gaps.

Primary LanguageC++Apache License 2.0Apache-2.0

Build and Test

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 cmakelang recommended together with vscode cmake-format extension

Structure

  1. Core GAP

    • contracts
    • error handling
    • parsing
    • logging
    • coroutines
    • ranges
    • benchmarks
    • data structures
    • cmake utils
  2. LLVM GAP

    • ranges
    • single context library (sc)
    • monadic builders
  3. MLIR GAP

    • parser
    • fmt
    • single context library (sc)
    • ranges
  4. Any IR GAP

    • serialize/deserialize uniform ir representation