# Bazel extensions for pybind11

Github-CI:
| OS \ Build system | Bazel |
|:------- | :---: |
| Linux (`amd64`) | [![Build Status][amd64_linux_bazel_status]][amd64_linux_bazel_link] |
| MacOS (`amd64`) | [![Build Status][amd64_macos_bazel_status]][amd64_macos_bazel_link] |
| MacOS (`arm64`)     | [![Build Status][arm64_macos_bazel_status]][arm64_macos_bazel_link] |
| Windows (`amd64`) | [![Build Status][amd64_windows_bazel_status]][amd64_windows_bazel_link] |

[amd64_linux_bazel_status]: ./../../actions/workflows/amd64_linux_bazel.yml/badge.svg
[amd64_linux_bazel_link]: ./../../actions/workflows/amd64_linux_bazel.yml
[amd64_macos_bazel_status]: ./../../actions/workflows/amd64_macos_bazel.yml/badge.svg
[amd64_macos_bazel_link]: ./../../actions/workflows/amd64_macos_bazel.yml
[arm64_macos_bazel_status]: ./../../actions/workflows/arm64_macos_bazel.yml/badge.svg
[arm64_macos_bazel_link]: ./../../actions/workflows/arm64_macos_bazel.yml
[amd64_windows_bazel_status]: ./../../actions/workflows/amd64_windows_bazel.yml/badge.svg
[amd64_windows_bazel_link]: ./../../actions/workflows/amd64_windows_bazel.yml

Provided rules:

-   `pybind_extension`: Builds a python extension, automatically adding the
    required build flags and pybind11 dependencies. It defines a target which
    can be included as a `data` dependency of a `py_*` target.
-   `pybind_library`: Builds a C++ library, automatically adding the required
    build flags and pybind11 dependencies. This library can then be used as a
    dependency of a `pybind_extension`. The arguments match a `cc_library`.
-   `pybind_library_test`: Builds a C++ test for a `pybind_library`. The
    arguments match a `cc_test`.

To test a `pybind_extension`, the most common approach is to write the test in
Python and use the standard `py_test` build rule.

To embed Python, add `@rules_python//python/cc:current_py_cc_libs` as a
dependency to your `cc_binary`.

## Installation

In your `WORKSPACE` file:

```starlark
http_archive(
  name = "pybind11_bazel",
  strip_prefix = "pybind11_bazel-<version>",
  urls = ["https://github.com/pybind/pybind11_bazel/archive/v<version>.zip"],
)
# We still require the pybind library.
http_archive(
  name = "pybind11",
  build_file = "@pybind11_bazel//:pybind11-BUILD.bazel",
  strip_prefix = "pybind11-<version>",
  urls = ["https://github.com/pybind/pybind11/archive/v<version>.zip"],
)
```

Then, in your `BUILD` file:

```starlark
load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")
```

## Bzlmod

In your `MODULE.bazel` file:

```starlark
bazel_dep(name = "pybind11_bazel", version = "<version>")
```

Usage in your `BUILD` file is as described previously.
