This adds a dummy v8-poc project that in Cargo links against our prebuilt binaries and the ones provided by rusty_v8 for non musl platforms. This demonstrates that we can successfully link and use v8 on all platforms that we want to target. In bazel things are slightly more complicated. Since the libraries as published have libc++ linked in already we end up with a lot of double linked symbols if we try to use them in bazel land. Instead we fall back to building rusty_v8 and v8 from source (cached of course) on the platforms we ship to. There is likely some compatibility drift in the windows bazel builder that we'll need to reconcile before we can re-enable them. I'm happy to be on the hook to unwind that.
331 lines
10 KiB
Text
331 lines
10 KiB
Text
load("@bazel_skylib//rules:copy_file.bzl", "copy_file")
|
|
load("@rules_cc//cc:cc_static_library.bzl", "cc_static_library")
|
|
load("@rules_cc//cc:defs.bzl", "cc_library")
|
|
|
|
package(default_visibility = ["//visibility:public"])
|
|
|
|
config_setting(
|
|
name = "platform_aarch64_unknown_linux_musl",
|
|
constraint_values = [
|
|
"@platforms//cpu:aarch64",
|
|
"@platforms//os:linux",
|
|
"@llvm//constraints/libc:musl",
|
|
],
|
|
)
|
|
|
|
config_setting(
|
|
name = "platform_x86_64_unknown_linux_musl",
|
|
constraint_values = [
|
|
"@platforms//cpu:x86_64",
|
|
"@platforms//os:linux",
|
|
"@llvm//constraints/libc:musl",
|
|
],
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_x86_64_apple_darwin",
|
|
actual = "@rusty_v8_146_4_0_x86_64_apple_darwin_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_aarch64_apple_darwin",
|
|
actual = "@rusty_v8_146_4_0_aarch64_apple_darwin_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_x86_64_unknown_linux_gnu",
|
|
actual = "@rusty_v8_146_4_0_x86_64_unknown_linux_gnu_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_aarch64_unknown_linux_gnu",
|
|
actual = "@rusty_v8_146_4_0_aarch64_unknown_linux_gnu_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_x86_64_unknown_linux_musl",
|
|
actual = "@rusty_v8_146_4_0_x86_64_unknown_linux_musl_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_aarch64_unknown_linux_musl",
|
|
actual = "@rusty_v8_146_4_0_aarch64_unknown_linux_musl_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_x86_64_pc_windows_msvc",
|
|
actual = "@rusty_v8_146_4_0_x86_64_pc_windows_msvc_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_aarch64_pc_windows_msvc",
|
|
actual = "@rusty_v8_146_4_0_aarch64_pc_windows_msvc_archive//file",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_aarch64_pc_windows_gnullvm",
|
|
actual = ":v8_146_4_0_aarch64_pc_windows_msvc",
|
|
)
|
|
|
|
alias(
|
|
name = "v8_146_4_0_x86_64_pc_windows_gnullvm",
|
|
actual = ":v8_146_4_0_x86_64_pc_windows_msvc",
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_x86_64_apple_darwin",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_x86_64_apple_darwin"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_aarch64_apple_darwin",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_aarch64_apple_darwin"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_aarch64_unknown_linux_gnu",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_aarch64_unknown_linux_gnu"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_x86_64_unknown_linux_gnu",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_x86_64_unknown_linux_gnu"],
|
|
)
|
|
|
|
alias(
|
|
name = "src_binding_release_x86_64_unknown_linux_musl",
|
|
actual = "@rusty_v8_146_4_0_x86_64_unknown_linux_musl_binding//file",
|
|
)
|
|
|
|
alias(
|
|
name = "src_binding_release_aarch64_unknown_linux_musl",
|
|
actual = "@rusty_v8_146_4_0_aarch64_unknown_linux_musl_binding//file",
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_x86_64_pc_windows_msvc",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_x86_64_pc_windows_msvc"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_aarch64_pc_windows_msvc",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_aarch64_pc_windows_msvc"],
|
|
)
|
|
|
|
alias(
|
|
name = "src_binding_release_x86_64_pc_windows_gnullvm",
|
|
actual = ":src_binding_release_x86_64_pc_windows_msvc",
|
|
)
|
|
|
|
alias(
|
|
name = "src_binding_release_aarch64_pc_windows_gnullvm",
|
|
actual = ":src_binding_release_aarch64_pc_windows_msvc",
|
|
)
|
|
|
|
alias(
|
|
name = "rusty_v8_archive_for_target",
|
|
actual = select({
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-apple-darwin": ":v8_146_4_0_aarch64_apple_darwin_bazel",
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-gnullvm": ":v8_146_4_0_aarch64_pc_windows_gnullvm",
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-msvc": ":v8_146_4_0_aarch64_pc_windows_msvc",
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-unknown-linux-gnu": ":v8_146_4_0_aarch64_unknown_linux_gnu_bazel",
|
|
":platform_aarch64_unknown_linux_musl": ":v8_146_4_0_aarch64_unknown_linux_musl_release_base",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-apple-darwin": ":v8_146_4_0_x86_64_apple_darwin_bazel",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-gnullvm": ":v8_146_4_0_x86_64_pc_windows_gnullvm",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-msvc": ":v8_146_4_0_x86_64_pc_windows_msvc",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-unknown-linux-gnu": ":v8_146_4_0_x86_64_unknown_linux_gnu_bazel",
|
|
":platform_x86_64_unknown_linux_musl": ":v8_146_4_0_x86_64_unknown_linux_musl_release",
|
|
"//conditions:default": ":v8_146_4_0_x86_64_unknown_linux_gnu_bazel",
|
|
}),
|
|
)
|
|
|
|
alias(
|
|
name = "rusty_v8_binding_for_target",
|
|
actual = select({
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-apple-darwin": ":src_binding_release_aarch64_apple_darwin",
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-gnullvm": ":src_binding_release_aarch64_pc_windows_gnullvm",
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-pc-windows-msvc": ":src_binding_release_aarch64_pc_windows_msvc",
|
|
"@rules_rs//rs/experimental/platforms/config:aarch64-unknown-linux-gnu": ":src_binding_release_aarch64_unknown_linux_gnu",
|
|
":platform_aarch64_unknown_linux_musl": ":src_binding_release_aarch64_unknown_linux_musl",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-apple-darwin": ":src_binding_release_x86_64_apple_darwin",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-gnullvm": ":src_binding_release_x86_64_pc_windows_gnullvm",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-pc-windows-msvc": ":src_binding_release_x86_64_pc_windows_msvc",
|
|
"@rules_rs//rs/experimental/platforms/config:x86_64-unknown-linux-gnu": ":src_binding_release_x86_64_unknown_linux_gnu",
|
|
":platform_x86_64_unknown_linux_musl": ":src_binding_release_x86_64_unknown_linux_musl",
|
|
"//conditions:default": ":src_binding_release_x86_64_unknown_linux_gnu",
|
|
}),
|
|
)
|
|
|
|
V8_COPTS = ["-std=c++20"]
|
|
|
|
V8_STATIC_LIBRARY_FEATURES = [
|
|
"-symbol_check",
|
|
"-validate-static-library",
|
|
]
|
|
|
|
genrule(
|
|
name = "binding_cc",
|
|
srcs = ["@v8_crate_146_4_0//:binding_cc"],
|
|
outs = ["binding.cc"],
|
|
cmd = """
|
|
sed \
|
|
-e '/#include "v8\\/src\\/flags\\/flags.h"/d' \
|
|
-e 's|"v8/src/libplatform/default-platform.h"|"src/libplatform/default-platform.h"|' \
|
|
-e 's| namespace i = v8::internal;| (void)usage;|' \
|
|
-e '/using HelpOptions = i::FlagList::HelpOptions;/d' \
|
|
-e '/HelpOptions help_options = HelpOptions(HelpOptions::kExit, usage);/d' \
|
|
-e 's| i::FlagList::SetFlagsFromCommandLine(argc, argv, true, help_options);| v8::V8::SetFlagsFromCommandLine(argc, argv, true);|' \
|
|
$(location @v8_crate_146_4_0//:binding_cc) > "$@"
|
|
""",
|
|
)
|
|
|
|
copy_file(
|
|
name = "support_h",
|
|
src = "@v8_crate_146_4_0//:support_h",
|
|
out = "support.h",
|
|
)
|
|
|
|
cc_library(
|
|
name = "v8_146_4_0_binding",
|
|
srcs = [":binding_cc"],
|
|
hdrs = [":support_h"],
|
|
copts = V8_COPTS,
|
|
deps = [
|
|
"@v8//:core_lib_icu",
|
|
"@v8//:rusty_v8_internal_headers",
|
|
],
|
|
)
|
|
|
|
cc_static_library(
|
|
name = "v8_146_4_0_aarch64_apple_darwin_bazel",
|
|
deps = [":v8_146_4_0_binding"],
|
|
features = V8_STATIC_LIBRARY_FEATURES,
|
|
)
|
|
|
|
cc_static_library(
|
|
name = "v8_146_4_0_aarch64_unknown_linux_gnu_bazel",
|
|
deps = [":v8_146_4_0_binding"],
|
|
features = V8_STATIC_LIBRARY_FEATURES,
|
|
)
|
|
|
|
cc_static_library(
|
|
name = "v8_146_4_0_x86_64_apple_darwin_bazel",
|
|
deps = [":v8_146_4_0_binding"],
|
|
features = V8_STATIC_LIBRARY_FEATURES,
|
|
)
|
|
|
|
cc_static_library(
|
|
name = "v8_146_4_0_x86_64_unknown_linux_gnu_bazel",
|
|
deps = [":v8_146_4_0_binding"],
|
|
features = V8_STATIC_LIBRARY_FEATURES,
|
|
)
|
|
|
|
cc_static_library(
|
|
name = "v8_146_4_0_aarch64_unknown_linux_musl_release_base",
|
|
deps = [":v8_146_4_0_binding"],
|
|
features = V8_STATIC_LIBRARY_FEATURES,
|
|
)
|
|
|
|
genrule(
|
|
name = "v8_146_4_0_aarch64_unknown_linux_musl_release",
|
|
srcs = [
|
|
":v8_146_4_0_aarch64_unknown_linux_musl_release_base",
|
|
"@llvm//runtimes/compiler-rt:clang_rt.builtins.static",
|
|
],
|
|
tools = [
|
|
"@llvm//tools:llvm-ar",
|
|
"@llvm//tools:llvm-ranlib",
|
|
],
|
|
outs = ["libv8_146_4_0_aarch64_unknown_linux_musl.a"],
|
|
cmd = """
|
|
cat > "$(@D)/merge.mri" <<'EOF'
|
|
create $@
|
|
addlib $(location :v8_146_4_0_aarch64_unknown_linux_musl_release_base)
|
|
addlib $(location @llvm//runtimes/compiler-rt:clang_rt.builtins.static)
|
|
save
|
|
end
|
|
EOF
|
|
$(location @llvm//tools:llvm-ar) -M < "$(@D)/merge.mri"
|
|
$(location @llvm//tools:llvm-ranlib) "$@"
|
|
""",
|
|
)
|
|
|
|
cc_static_library(
|
|
name = "v8_146_4_0_x86_64_unknown_linux_musl_release",
|
|
deps = [":v8_146_4_0_binding"],
|
|
features = V8_STATIC_LIBRARY_FEATURES,
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_aarch64_unknown_linux_musl_release",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_aarch64_unknown_linux_gnu"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "src_binding_release_x86_64_unknown_linux_musl_release",
|
|
srcs = ["@v8_crate_146_4_0//:src_binding_release_x86_64_unknown_linux_gnu"],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_x86_64_apple_darwin",
|
|
srcs = [
|
|
":v8_146_4_0_x86_64_apple_darwin",
|
|
":src_binding_release_x86_64_apple_darwin",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_aarch64_apple_darwin",
|
|
srcs = [
|
|
":v8_146_4_0_aarch64_apple_darwin",
|
|
":src_binding_release_aarch64_apple_darwin",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_x86_64_unknown_linux_gnu",
|
|
srcs = [
|
|
":v8_146_4_0_x86_64_unknown_linux_gnu",
|
|
":src_binding_release_x86_64_unknown_linux_gnu",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_aarch64_unknown_linux_gnu",
|
|
srcs = [
|
|
":v8_146_4_0_aarch64_unknown_linux_gnu",
|
|
":src_binding_release_aarch64_unknown_linux_gnu",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_x86_64_unknown_linux_musl",
|
|
srcs = [
|
|
":v8_146_4_0_x86_64_unknown_linux_musl_release",
|
|
":src_binding_release_x86_64_unknown_linux_musl_release",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_aarch64_unknown_linux_musl",
|
|
srcs = [
|
|
":v8_146_4_0_aarch64_unknown_linux_musl_release",
|
|
":src_binding_release_aarch64_unknown_linux_musl_release",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_x86_64_pc_windows_msvc",
|
|
srcs = [
|
|
":v8_146_4_0_x86_64_pc_windows_msvc",
|
|
":src_binding_release_x86_64_pc_windows_msvc",
|
|
],
|
|
)
|
|
|
|
filegroup(
|
|
name = "rusty_v8_release_pair_aarch64_pc_windows_msvc",
|
|
srcs = [
|
|
":v8_146_4_0_aarch64_pc_windows_msvc",
|
|
":src_binding_release_aarch64_pc_windows_msvc",
|
|
],
|
|
)
|