Build rules for interfacing with "foreign" (non-Bazel) build systems (CMake, configure-make, GNU Make, boost, ninja, Meson) https://bazel-contrib.github.io/rules_foreign_cc/
Go to file
jheaff1 3cbd0a9938
Add meson support (#986)
* Add meson support

* Modify zlib to be detected via pkgconfig in dependent rules

* Modify zlib and expat to be linked to shared libs in dependent rules

* Add example usage of Meson rule

This commit adds the glib library to the "examples" build. glib requires
pcre2, so pcre and libgit2 (a dependent of pcre) have been
updated/modified

* Add example usage of meson_with_requirements macro

This commit adds mesa to the "examples" build.

This commit also changes the "examples" build to use the hermetic python
toolchain provided by rules_foreign_cc. As such, the python toolchain
built by rules_foreign_cc is no longer used, as it cannot be used in
workspace rules, .e.g pip_parse(). As such, the python2 build has been
removed from the examples as python2 is end-of-life.

Until Bazel 4.2.0, the built-in android toolchain required Python 2. As
such the minimum supported version has been upversioned to 4.2.0.

Note that the BAZEL_VC env var was removed from CI as mesa requires MSVC
2019.

* Set visibility for each target in foreign_cc_rule_variant

* Apply formatting changes

* Get meson examples working with bzlmod

Note that a newer version of pkgconfig than that installed in ubuntu 20
must be used to build libxau, therefore the built_pkgconfig_toolchain is
now registered
2023-06-09 11:29:12 +01:00
.bazelci Add meson support (#986) 2023-06-09 11:29:12 +01:00
.bcr Add bzlmod support files. (#999) 2023-05-06 08:56:00 +01:00
.github Disable stale-issue automation (#989) 2022-12-20 23:41:34 -08:00
docs Add meson support (#986) 2023-06-09 11:29:12 +01:00
examples Add meson support (#986) 2023-06-09 11:29:12 +01:00
foreign_cc Add meson support (#986) 2023-06-09 11:29:12 +01:00
test Fix cross compiling for android on macOS (#997) 2023-02-22 22:01:22 +00:00
toolchains Add meson support (#986) 2023-06-09 11:29:12 +01:00
.bazelignore Update bazelignore files (#854) 2022-01-06 21:13:25 +00:00
.gitignore Added test for ensuring docs are always appropriately updated (#576) 2021-03-20 20:11:57 +00:00
.pre-commit-config.yaml Bump buildifier to 6.1.0 (#1040) 2023-04-12 09:29:29 +01:00
ARCHITECTURE.md Added architecture documentation (#544) 2021-03-09 10:49:13 -08:00
AUTHORS Add code and examples (#1) 2018-04-26 13:52:06 -04:00
BUILD.bazel Deleted deprecated `bzl` files and packages (#608) 2021-04-13 20:09:46 +01:00
CODEOWNERS Updated code owners file (#688) 2021-07-19 18:43:46 +00:00
CONTRIBUTING.md chore: setup a buildifier pre-commit hook (#661) 2021-06-03 13:30:26 -07:00
LICENSE Add code and examples (#1) 2018-04-26 13:52:06 -04:00
MODULE.bazel Add meson support (#986) 2023-06-09 11:29:12 +01:00
NEWS.md Moved "news" into it's own file (#570) 2021-03-17 08:45:28 -07:00
README.md Add meson support (#986) 2023-06-09 11:29:12 +01:00
WORKSPACE.bazel Add meson support (#986) 2023-06-09 11:29:12 +01:00
WORKSPACE.bzlmod Add bzlmod support files. (#999) 2023-05-06 08:56:00 +01:00
version.bzl Release version 0.9.0 (#944) 2022-08-02 19:56:49 +00:00

README.md

rules_foreign_cc

Build status

Rules for building C/C++ projects using foreign build systems inside Bazel projects.

This is not an officially supported Google product (meaning, support and/or new releases may be limited.)

Documentation

Documentation for all rules and providers are available at: https://bazelbuild.github.io/rules_foreign_cc/

Bazel versions compatibility

Works with Bazel after 4.2.0.

The following flags are required in Bazel 4.x but not Bazel 5.x or newer:

  • --experimental_enable_aggregating_middleman=False

Note that the rules may be compatible with older versions of Bazel but support may break in future changes as these older versions are not tested.

News

For more generalized updates, please see NEWS.md or checkout the release notes of current or previous releases

Design document

External C/C++ libraries rules

Caveats

  • FreeBSD support is currently experimental and on a best-effort basis. Google currently doesn't have a CI test environment for FreeBSD, but please make your voice heard by upvoting this issue.