123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- # Copyright Materialize, Inc. and contributors. All rights reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License in the LICENSE file at the
- # root of this repository, or online at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- load("@bazel_skylib//rules:run_binary.bzl", "run_binary")
- load("@rules_cc//cc:defs.bzl", "cc_library")
- """
- Ripped from the `cxx` repository.
- <https://github.com/dtolnay/cxx/blob/ea34e6350c7ff6528e9aebec1be7918dd2a2b608/tools/bazel/rust_cxx_bridge.bzl>
- Please see the end of the file for the license.
- """
- def rust_cxx_bridge(name, src, deps = [], headers_prefix = ""):
- """A macro defining a cxx bridge library
- Args:
- name (string): The name of the new target
- src (string): The rust source file to generate a bridge for
- deps (list, optional): A list of dependencies for the underlying cc_library. Defaults to [].
- headers_prefix (string, optional): An `include_prefix` for the generated headers.
- """
- native.alias(
- name = "%s/header" % name,
- actual = src + ".h",
- )
- native.alias(
- name = "%s/source" % name,
- actual = src + ".cc",
- )
- run_binary(
- name = "%s/generated" % name,
- srcs = [src],
- outs = [
- src + ".h",
- src + ".cc",
- ],
- args = [
- "$(location %s)" % src,
- "-o",
- "$(location %s.h)" % src,
- "-o",
- "$(location %s.cc)" % src,
- ],
- tool = "@cxxbridge-cmd//:cxxbridge-cmd",
- )
- cc_library(
- name = name,
- srcs = [src + ".cc"],
- deps = deps + [":%s/include" % name],
- )
- cc_library(
- name = "%s/include" % name,
- hdrs = [src + ".h"],
- include_prefix = headers_prefix,
- )
- """
- `cxx/LICENSE-MIT`
- Permission is hereby granted, free of charge, to any
- person obtaining a copy of this software and associated
- documentation files (the "Software"), to deal in the
- Software without restriction, including without
- limitation the rights to use, copy, modify, merge,
- publish, distribute, sublicense, and/or sell copies of
- the Software, and to permit persons to whom the Software
- is furnished to do so, subject to the following
- conditions:
- The above copyright notice and this permission notice
- shall be included in all copies or substantial portions
- of the Software.
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
- ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
- SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
- IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- DEALINGS IN THE SOFTWARE.
- """
|