ELIPS builds with CMake and ships its Python module through PyBind11. A single configure + build produces both the C++ static library and the Python extension.
Requirements
- A C++23 compiler — Clang 16+, GCC 13+, or MSVC 19.36+.
- CMake 3.26 or newer.
- Ninja (recommended) or Make.
- Python 3.10+ for the bindings.
- On Linux, the standard development toolchain (glibc, libstdc++).
Building from source
terminal
git clone https://github.com/axiomchronicles/elips.git
cd elips
cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DELIPS_BUILD_PYTHON=ON
cmake --build build -jThe default configuration builds the runtime, the elips CLI, and the PyBind11 module. Toggle features through CMake variables:
| Variable | Default | Purpose |
|---|---|---|
ELIPS_BUILD_PYTHON | OFF | Build the Python extension. |
ELIPS_BUILD_CLI | ON | Build the elips command. |
ELIPS_BUILD_TESTS | ON | Build the C++ test suite for ctest. |
ELIPS_GPU_ENABLED | OFF | Compile the GPU index family. |
Python bindings
After the build completes, point Python at the bindings directory:
bash
export PYTHONPATH=$PWD/bindings/python
python3 -c "import elips; print(elips.__doc__)"For an installable wheel, use the included setup.py under bindings/python/.
Verify
bash
ctest --test-dir build --output-on-failure
PYTHONPATH=bindings/python python3 tests/python/test_bindings.pyOptional GPU build
The GPU index family lives under src/gpu_engine/ and is compiled when -DELIPS_GPU_ENABLED=ON is set. Backend selection happens at runtime via the device manager; CUDA, Metal, and a portable fallback are supported. Domain code only ever talks to GpuPort, so the runtime falls back to CPU indexes when no GPU is available.