Metadata-Version: 2.1
Name: just-buildit
Version: 0.3.4
Summary: The missing PEP 517 build backend for C extensions.
Requires-Python: >=3.11
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: C
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Archiving :: Packaging
Keywords: pep517,build-backend,c-extension,cmake,meson,bazel,make,packaging,wheel,cffi
Project-URL: Homepage, https://just-buildit.github.io/just-buildit/
Project-URL: Repository, https://github.com/just-buildit/just-buildit
Project-URL: Documentation, https://just-buildit.github.io/just-buildit/
Project-URL: Bug Tracker, https://github.com/just-buildit/just-buildit/issues
Project-URL: Changelog, https://github.com/just-buildit/just-buildit/blob/main/CHANGELOG.md
Description-Content-Type: text/markdown

<p align="center">
  <img src="https://raw.githubusercontent.com/just-buildit/just-buildit/main/docs/assets/logo-wordmark.png" alt="just-buildit" width="540">
</p>

[![CI](https://github.com/just-buildit/just-buildit/actions/workflows/ci.yml/badge.svg)](https://github.com/just-buildit/just-buildit/actions/workflows/ci.yml)
[![Docs](https://github.com/just-buildit/just-buildit/actions/workflows/docs.yml/badge.svg)](https://github.com/just-buildit/just-buildit/actions/workflows/docs.yml)

The missing [PEP 517](https://peps.python.org/pep-0517/) build backend for C extensions.

You know how to build your project. just-buildit knows how to package it.
That's the whole deal.

---

## The problem

Every existing Python build backend either wants to own your build system,
assumes you're using setuptools extensions, or drags in a dependency tree
bigger than your project. There's no option that just says:

> "Here are your C files. Build them however you want. I'll ship the result."

just-buildit is that option.

---

## Installation

```sh
pip install just-buildit
```

---

## Quickstart

Flat layouts, nested packages, multiple extensions across subdirectories, mixed pure Python and C — whatever your build produces.

**Zero config** — a single C extension in `src/mylib/`:

```toml
[build-system]
requires = ["just-buildit"]
build-backend = "just_buildit"

[project]
name = "mylib"
version = "0.1.0"
```

Run `pip install .` and just-buildit finds `src/mylib/`, compiles every `.c`
file it contains, and ships the result.

**Custom build command** — Make, CMake, Meson, Bazel, or anything else:

```toml
[tool.just-buildit]
command = "make"
```

just-buildit sets environment variables, calls your command, and packages
everything written to `$JUST_BUILDIT_OUTPUT_DIR`.

Need a project scaffold? [just-makeit](https://github.com/just-buildit/just-makeit) generates a CMake-based C extension project pre-wired for just-buildit — see the [examples](https://just-buildit.github.io/just-buildit/examples/#scaffolding-with-just-makeit).

### CLI

```sh
uvx just-buildit inspect   # dry-run: show config and what would be built
uvx just-buildit build     # build wheel into dist/
uvx just-buildit sdist     # build source distribution into dist/
```

---

## Documentation

| | |
|---|---|
| [Environment variables](https://just-buildit.github.io/just-buildit/environment-variables/) | What just-buildit sets before calling your command |
| [Examples](https://just-buildit.github.io/just-buildit/examples/) | Make, CMake, Meson, Bazel, mixed Python + C, nested packages |
| [Configuration](https://just-buildit.github.io/just-buildit/configuration/) | Full config reference, wheel repair, editable installs |
| [Contributing](https://just-buildit.github.io/just-buildit/contributing/) | Running tests, platform support, bootstrapping |

---

## Requirements

- Python 3.11+
- A compiler (you already have one)
- `uv` for wheel repair (`uvx auditwheel` / `uvx delocate-wheel` / `uvx delvewheel`)

---

## License

MIT
