2
0
Fork 0
mirror of https://github.com/bazel-contrib/rules_foreign_cc synced 2024-11-29 12:33:51 +00:00
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/
Find a file
irengrig 7792e40fc0
provide several libraries as outputs from external build rules (#6)
i.e. not single libraries, because in general case several build targets
can be created by a single CMake/configure-make build, and several of them linked to the next dependency
2018-07-30 14:59:02 +02: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
framework_example/cmake provide several libraries as outputs from external build rules (#6) 2018-07-30 14:59:02 +02:00
tools/build_defs provide several libraries as outputs from external build rules (#6) 2018-07-30 14:59:02 +02: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 external build framework function and cmake_external rule (#4) 2018-07-30 12:56:09 +02:00

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