| commit | 51cb57d3f01c0d04a3fdea962c02c7c1327a3d5a | [log] [tgz] |
|---|---|---|
| author | Milo Kerr <34846459+M-Kerr@users.noreply.github.com> | Sat Jul 04 18:33:27 2020 -0400 |
| committer | GitHub <noreply@github.com> | Sat Jul 04 15:33:27 2020 -0700 |
| tree | 7c678be6d9707e9bb71380cc205f433486e7e997 | |
| parent | 16ed1b8f308d2b3dec9d7e6decaad49ce4d28b43 [diff] |
Initial commit to add embedding support via pybind11_embed target (#15)
* Initial commit to add embedding support via pybind11_embed target
Currently, only MacOS 10.13.3 tested and Python 3 supported
//python_configure.bzl:
_find_python_config() function to find the local Python's python-config script
_get_embed_flags() function to identify the copts and linkopts flags required to embed the Python interpreter.
//py/BUILD.tpl: cc_library(name= "python_embed") combines python headers with embed flags.
//pybind11.BUILD: pybind11_embed target that depends on python_embed.
To embed the python interpreter, add "@pybind11//:pybind11_embed" as a dependency
to your cc_binary target that embeds Python.
* Removed unused found_config variable
* Added pybind11_embed instructions
* Updated README to reflect Linux support
* readme formatting fixes
* Improved python_configure.bzl organizationProvided rules:
pybind_extension: Builds a python extension, automatically adding the required build flags and pybind11 dependencies. It defines a *.so 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.
Provided targets:
@pybind11//:pybind11_embed: Automatically adds required build flags to embed Python. Add as a dependency to your cc_binary.
@pybind11//:pybind11_embed currently supports Python 3 MacOS/Ubuntu/Debian environments:
If pybind11_embed doesn't work with your embedded Python project, add @pybind11 as a dependency to your cc_binary and follow the instructions for manually retrieving the build flags.
In your WORKSPACE file:
http_archive( name = "pybind11_bazel", strip_prefix = "pybind11_bazel-<stable-commit>", urls = ["https://github.com/pybind/pybind11_bazel/archive/<stable-commit>.zip"], ) # We still require the pybind library. http_archive( name = "pybind11", build_file = "@pybind11_bazel//:pybind11.BUILD", strip_prefix = "pybind11-<stable-version>", urls = ["https://github.com/pybind/pybind11/archive/v<stable-version>.tar.gz"], ) load("@pybind11_bazel//:python_configure.bzl", "python_configure") python_configure(name = "local_config_python")
Then, in your BUILD file:
load("@pybind11_bazel//:build_defs.bzl", "pybind_extension")