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
Carmi Grushko 5fda9e82bd
Add code and examples (#1)
2018-04-26 13:52:06 -04:00
.bazelci Add code and examples (#1) 2018-04-26 13:52:06 -04:00
cc_configure_make Add code and examples (#1) 2018-04-26 13:52:06 -04:00
examples/cc_configure_make Add code and examples (#1) 2018-04-26 13:52:06 -04:00
AUTHORS Add code and examples (#1) 2018-04-26 13:52:06 -04:00
CONTRIBUTING.md Add code and examples (#1) 2018-04-26 13:52:06 -04:00
LICENSE Add code and examples (#1) 2018-04-26 13:52:06 -04:00
README.md Add code and examples (#1) 2018-04-26 13:52:06 -04:00
WORKSPACE Add code and examples (#1) 2018-04-26 13:52:06 -04:00

README.md

rules_foreign_cc

Rules for building projects using foreign build systems inside Bazel projects.

  • Experimental - API will most definitely change.
  • This is not an officially supported Google product (meaning, support and/or new releases may be limited.)

./configure && make

NOTE: this requires building Bazel from head after 060b1624e4

Example:

  • In WORKSPACE, we use a new_http_archive to download tarballs with the libraries we use.
  • In BUILD, we instantiate a cc_configure_make_library macro which behaves similarly to a cc_library, which can then be used in a C++ rule (cc_binary in this case).

In WORKSPACE, put

new_http_archive(
    name = "libevent",
    build_file_content = """filegroup(name = "all", srcs = glob(["**"]), visibility = ["//visibility:public"])""",
    strip_prefix = "libevent-2.1.8-stable",
    urls = ["https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz"],
)

and in BUILD, put

cc_configure_make(
    name = "libevent",
    src = "@libevent//:all",
    configure_flags = [
        "--enable-shared=no",
        "--disable-libevent-regress",
        "--disable-openssl",
    ],
    out_lib_path = "lib/libevent.a",
)

cc_binary(
    name = "libevent_echosrv1",
    srcs = ["libevent_echosrv1.c"],
    deps = [":libevent"],
)

then build as usual:

$ devbazel build //:libevent_echosrv1