Swift: cc wrapper rules

This commit is contained in:
Paolo Tranquilli
2022-04-29 14:18:02 +02:00
parent 7efb4ab4e4
commit 2fe38c2bbb
2 changed files with 27 additions and 11 deletions

View File

@@ -1,3 +1,5 @@
load("//swift:rules.bzl", "swift_cc_binary")
alias(
name = "swift-llvm-support",
actual = select({
@@ -6,7 +8,7 @@ alias(
}),
)
cc_binary(
swift_cc_binary(
name = "extractor",
srcs = [
"SwiftExtractor.cpp",
@@ -14,16 +16,6 @@ cc_binary(
"SwiftExtractorConfiguration.h",
"main.cpp",
],
copts = [
# Required by LLVM/Swift
"-fno-rtti",
],
features = ["-universal_binaries"],
target_compatible_with = select({
"@platforms//os:linux": [],
"@platforms//os:macos": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
visibility = ["//swift:__pkg__"],
deps = [
":swift-llvm-support",

24
swift/rules.bzl Normal file
View File

@@ -0,0 +1,24 @@
def _add_args(kwargs, kwarg, value):
kwargs[kwarg] = kwargs.get(kwarg, []) + value
def _wrap_cc(rule, kwargs):
_add_args(kwargs, "copts", [
# Required by LLVM/Swift
"-fno-rtti",
])
_add_args(kwargs, "features", [
# temporary, before we do universal merging
"-universal_binaries",
])
_add_args(kwargs, "target_compatible_with", select({
"@platforms//os:linux": [],
"@platforms//os:macos": [],
"//conditions:default": ["@platforms//:incompatible"],
}))
rule(**kwargs)
def swift_cc_binary(**kwargs):
_wrap_cc(native.cc_binary, kwargs)
def swift_cc_library(**kwargs):
_wrap_cc(native.cc_library, kwargs)