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"]) exports_files(["icu.BUILD.bazel"]) 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", ], ) config_setting( name = "use_rusty_v8_custom_libcxx", flag_values = { "@v8//:v8_use_rusty_v8_custom_libcxx": "True", }, ) alias( name = "v8_152_2_0_x86_64_pc_windows_msvc", actual = "@rusty_v8_152_2_0_x86_64_pc_windows_msvc_archive//file", ) alias( name = "v8_152_2_0_aarch64_pc_windows_msvc", actual = "@rusty_v8_152_2_0_aarch64_pc_windows_msvc_archive//file", ) alias( name = "v8_152_2_0_aarch64_pc_windows_gnullvm", # `rusty_v8` only ships prebuilt Windows archives for MSVC. Build the # GNU-flavored archive in-tree so windows-gnullvm consumers can link # against a matching ABI instead of trying to reuse the MSVC release. actual = ":v8_152_2_0_aarch64_pc_windows_gnullvm_bazel", ) alias( name = "v8_152_2_0_x86_64_pc_windows_gnullvm", actual = ":v8_152_2_0_x86_64_pc_windows_gnullvm_bazel", ) alias( name = "src_binding_release_x86_64_pc_windows_gnullvm_152_2_0_release", # `rusty_v8` does not publish a Windows GNU binding file. The generated # binding only describes this V8 release's C++ API surface, so reuse the # Linux release binding while the windows-gnullvm archive build is still # experimental. actual = ":src_binding_release_x86_64_unknown_linux_gnu_152_2_0_release", ) alias( name = "src_binding_release_aarch64_pc_windows_gnullvm_152_2_0_release", actual = ":src_binding_release_aarch64_unknown_linux_gnu_152_2_0_release", ) # Published files contain both pointer compression and the in-process sandbox. # Use the source pair together whenever those options differ or a caller needs # custom V8 C++ flags. The main-repo flag is shared with the @v8_targets copy # of this BUILD file used by rules_rs. config_setting( name = "use_rusty_v8_prebuilts", flag_values = { "@//:rusty_v8_from_source": "False", "@v8//:v8_enable_pointer_compression": "True", "@v8//:v8_enable_sandbox": "True", }, ) alias( name = "rusty_v8_archive_for_target", actual = select({ ":use_rusty_v8_prebuilts": ":rusty_v8_prebuilt_archive_for_target", "//conditions:default": ":rusty_v8_source_archive_for_target", }), ) alias( name = "rusty_v8_prebuilt_archive_for_target", actual = select({ "@rules_rs//rs/platforms/config:aarch64-pc-windows-msvc": ":v8_152_2_0_aarch64_pc_windows_msvc", "@rules_rs//rs/platforms/config:x86_64-pc-windows-msvc": ":v8_152_2_0_x86_64_pc_windows_msvc", "@rules_rs//rs/platforms/config:aarch64-apple-darwin": "@rusty_v8_152_2_0_aarch64_apple_darwin_archive//file", "@rules_rs//rs/platforms/config:aarch64-unknown-linux-gnu": ":v8_152_2_0_aarch64_unknown_linux_gnu_prebuilt", "@rules_rs//rs/platforms/config:x86_64-apple-darwin": "@rusty_v8_152_2_0_x86_64_apple_darwin_archive//file", "@rules_rs//rs/platforms/config:x86_64-unknown-linux-gnu": ":v8_152_2_0_x86_64_unknown_linux_gnu_prebuilt", ":platform_aarch64_unknown_linux_musl": ":v8_152_2_0_aarch64_unknown_linux_musl_prebuilt", ":platform_x86_64_unknown_linux_musl": ":v8_152_2_0_x86_64_unknown_linux_musl_prebuilt", "//conditions:default": ":rusty_v8_source_archive_for_target", }), ) # A Linux Codex release archive carries Chromium's namespaced libc++ runtime. # Bazel also links its own libc++. Both keep their exception classes in std::, # so prefer the toolchain definitions of just those shared ABI entry points. # Inputs remain checksum-verified and immutable; only the Bazel output changes. [ genrule( name = "v8_152_2_0_%s_unknown_linux_%s_prebuilt" % (arch, libc), srcs = [ ":gnu_libcxx_shared_exception_symbols.txt", "@rusty_v8_152_2_0_%s_unknown_linux_%s_archive//file" % (arch, libc), ], outs = ["libv8_152_2_0_%s_unknown_linux_%s_prebuilt.a" % (arch, libc)], cmd = """ gzip -dc "$(location @rusty_v8_152_2_0_%s_unknown_linux_%s_archive//file)" > "$@.unadjusted" $(location @llvm//tools:llvm-objcopy) \ --weaken-symbols="$(location :gnu_libcxx_shared_exception_symbols.txt)" \ "$@.unadjusted" "$@" rm "$@.unadjusted" """ % (arch, libc), tools = ["@llvm//tools:llvm-objcopy"], ) for arch in [ "aarch64", "x86_64", ] for libc in [ "gnu", "musl", ] ] alias( name = "rusty_v8_source_archive_for_target", actual = select({ "@rules_rs//rs/platforms/config:aarch64-apple-darwin": ":v8_152_2_0_aarch64_apple_darwin_bazel", "@rules_rs//rs/platforms/config:aarch64-pc-windows-gnullvm": ":v8_152_2_0_aarch64_pc_windows_gnullvm", "@rules_rs//rs/platforms/config:aarch64-pc-windows-msvc": ":v8_152_2_0_aarch64_pc_windows_msvc", "@rules_rs//rs/platforms/config:aarch64-unknown-linux-gnu": ":v8_152_2_0_aarch64_unknown_linux_gnu_bazel", # Rust's compiler-builtins archive does not supply V8's __clear_cache. # Use the merged archive containing the ARM64 compiler-rt builtins. ":platform_aarch64_unknown_linux_musl": ":v8_152_2_0_aarch64_unknown_linux_musl_release", "@rules_rs//rs/platforms/config:x86_64-apple-darwin": ":v8_152_2_0_x86_64_apple_darwin_bazel", "@rules_rs//rs/platforms/config:x86_64-pc-windows-gnullvm": ":v8_152_2_0_x86_64_pc_windows_gnullvm", "@rules_rs//rs/platforms/config:x86_64-pc-windows-msvc": ":v8_152_2_0_x86_64_pc_windows_msvc", "@rules_rs//rs/platforms/config:x86_64-unknown-linux-gnu": ":v8_152_2_0_x86_64_unknown_linux_gnu_bazel", ":platform_x86_64_unknown_linux_musl": ":v8_152_2_0_x86_64_unknown_linux_musl_release", "//conditions:default": ":v8_152_2_0_x86_64_unknown_linux_gnu_bazel", }), ) alias( name = "rusty_v8_binding_for_target", actual = select({ ":use_rusty_v8_prebuilts": ":rusty_v8_prebuilt_binding_for_target", "//conditions:default": ":rusty_v8_source_binding_for_target", }), ) alias( name = "rusty_v8_prebuilt_binding_for_target", actual = select({ "@rules_rs//rs/platforms/config:aarch64-pc-windows-msvc": "@rusty_v8_152_2_0_aarch64_pc_windows_msvc_binding//file", "@rules_rs//rs/platforms/config:x86_64-pc-windows-msvc": "@rusty_v8_152_2_0_x86_64_pc_windows_msvc_binding//file", "@rules_rs//rs/platforms/config:aarch64-apple-darwin": "@rusty_v8_152_2_0_aarch64_apple_darwin_binding//file", "@rules_rs//rs/platforms/config:aarch64-unknown-linux-gnu": "@rusty_v8_152_2_0_aarch64_unknown_linux_gnu_binding//file", "@rules_rs//rs/platforms/config:x86_64-apple-darwin": "@rusty_v8_152_2_0_x86_64_apple_darwin_binding//file", "@rules_rs//rs/platforms/config:x86_64-unknown-linux-gnu": "@rusty_v8_152_2_0_x86_64_unknown_linux_gnu_binding//file", ":platform_aarch64_unknown_linux_musl": "@rusty_v8_152_2_0_aarch64_unknown_linux_musl_binding//file", ":platform_x86_64_unknown_linux_musl": "@rusty_v8_152_2_0_x86_64_unknown_linux_musl_binding//file", "//conditions:default": ":rusty_v8_source_binding_for_target", }), ) alias( name = "rusty_v8_source_binding_for_target", actual = select({ "@rules_rs//rs/platforms/config:aarch64-apple-darwin": ":src_binding_release_aarch64_apple_darwin_152_2_0_release", "@rules_rs//rs/platforms/config:aarch64-pc-windows-gnullvm": ":src_binding_release_aarch64_pc_windows_gnullvm_152_2_0_release", "@rules_rs//rs/platforms/config:aarch64-pc-windows-msvc": ":src_binding_release_aarch64_pc_windows_msvc_152_2_0_release", "@rules_rs//rs/platforms/config:aarch64-unknown-linux-gnu": ":src_binding_release_aarch64_unknown_linux_gnu_152_2_0_release", ":platform_aarch64_unknown_linux_musl": ":src_binding_release_aarch64_unknown_linux_musl_152_2_0_release", "@rules_rs//rs/platforms/config:x86_64-apple-darwin": ":src_binding_release_x86_64_apple_darwin_152_2_0_release", "@rules_rs//rs/platforms/config:x86_64-pc-windows-gnullvm": ":src_binding_release_x86_64_pc_windows_gnullvm_152_2_0_release", "@rules_rs//rs/platforms/config:x86_64-pc-windows-msvc": ":src_binding_release_x86_64_pc_windows_msvc_152_2_0_release", "@rules_rs//rs/platforms/config:x86_64-unknown-linux-gnu": ":src_binding_release_x86_64_unknown_linux_gnu_152_2_0_release", ":platform_x86_64_unknown_linux_musl": ":src_binding_release_x86_64_unknown_linux_musl_152_2_0_release", "//conditions:default": ":src_binding_release_x86_64_unknown_linux_gnu_152_2_0_release", }), ) V8_COPTS = ["-std=c++20"] V8_CUSTOM_LIBCXX_COPTS = select({ ":use_rusty_v8_custom_libcxx": [ "-nostdinc++", "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS", "-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE", "-D_LIBCPP_INSTRUMENTED_WITH_ASAN=0", "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS", ], "//conditions:default": [], }) V8_STATIC_LIBRARY_FEATURES = [ "-symbol_check", "-validate-static-library", ] alias( name = "rusty_v8_llvm_libc_headers", actual = "@rusty_v8_llvm_libc//:v8_headers", ) cc_library( name = "rusty_v8_custom_libcxx_headers", defines = select({ ":platform_aarch64_unknown_linux_musl": ["ANDROID_HOST_MUSL"], ":platform_x86_64_unknown_linux_musl": ["ANDROID_HOST_MUSL"], "//conditions:default": [], }), visibility = ["//visibility:public"], deps = [ "@rusty_v8_libcxx//:headers", "@rusty_v8_libcxxabi//:headers", ], ) cc_library( name = "rusty_v8_custom_libcxx_runtime", visibility = ["//visibility:public"], deps = [ "@rusty_v8_libcxx//:libcxx", "@rusty_v8_libcxxabi//:libcxxabi", ], ) genrule( name = "binding_cc_152_2_0", srcs = ["@v8_crate_152_2_0//:binding_cc"], outs = ["binding_152_2_0.cc"], cmd = " ".join([ "sed", "-e '/#include \"v8\\/src\\/flags\\/flags.h\"/d'", "-e 's|\"v8/src/libplatform/default-platform.h\"|\"src/libplatform/default-platform.h\"|'", "-e 's|#include \"support.h\"|#include \"support_152_2_0.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_152_2_0//:binding_cc)", ">", '"$@"', ]), ) genrule( name = "crdtp_binding_cc_152_2_0", srcs = ["@v8_crate_152_2_0//:crdtp_binding_cc"], outs = ["crdtp_binding_152_2_0.cc"], cmd = " ".join([ "sed", "-e 's|#include \"support.h\"|#include \"support_152_2_0.h\"|'", "-e 's|\"v8/third_party/inspector_protocol/|\"third_party/inspector_protocol/|g'", "$(location @v8_crate_152_2_0//:crdtp_binding_cc)", ">", '"$@"', ]), ) copy_file( name = "support_h_152_2_0", src = "@v8_crate_152_2_0//:support_h", out = "support_152_2_0.h", ) cc_library( name = "v8_152_2_0_binding", srcs = [ ":binding_cc_152_2_0", ":crdtp_binding_cc_152_2_0", ], hdrs = [":support_h_152_2_0"], copts = V8_COPTS + V8_CUSTOM_LIBCXX_COPTS, deps = [ "@v8//:core_lib_icu", "@v8//:rusty_v8_crdtp_headers", "@v8//:rusty_v8_internal_headers", ] + select({ ":use_rusty_v8_custom_libcxx": [ ":rusty_v8_custom_libcxx_headers", ], "//conditions:default": [], }), ) cc_static_library( name = "v8_152_2_0_aarch64_apple_darwin_bazel", features = V8_STATIC_LIBRARY_FEATURES, deps = [ ":rusty_v8_custom_libcxx_runtime", ":v8_152_2_0_binding", ], ) cc_static_library( name = "v8_152_2_0_aarch64_unknown_linux_gnu_bazel", features = V8_STATIC_LIBRARY_FEATURES, deps = [ ":rusty_v8_custom_libcxx_runtime", ":v8_152_2_0_binding", ], ) cc_static_library( name = "v8_152_2_0_aarch64_pc_windows_gnullvm_bazel", features = V8_STATIC_LIBRARY_FEATURES, deps = [":v8_152_2_0_binding"], ) cc_static_library( name = "v8_152_2_0_aarch64_unknown_linux_musl_release_base", features = V8_STATIC_LIBRARY_FEATURES, deps = [ ":rusty_v8_custom_libcxx_runtime", ":v8_152_2_0_binding", ], ) genrule( name = "v8_152_2_0_aarch64_unknown_linux_musl_release", srcs = [ ":v8_152_2_0_aarch64_unknown_linux_musl_release_base", "@llvm//runtimes/compiler-rt:clang_rt.builtins.static", ], outs = ["libv8_152_2_0_aarch64_unknown_linux_musl.a"], cmd = """ cat > "$(@D)/merge.mri" <<'EOF' create $@ addlib $(location :v8_152_2_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) "$@" """, tools = [ "@llvm//tools:llvm-ar", "@llvm//tools:llvm-ranlib", ], ) cc_static_library( name = "v8_152_2_0_x86_64_apple_darwin_bazel", features = V8_STATIC_LIBRARY_FEATURES, deps = [ ":rusty_v8_custom_libcxx_runtime", ":v8_152_2_0_binding", ], ) cc_static_library( name = "v8_152_2_0_x86_64_unknown_linux_gnu_bazel", features = V8_STATIC_LIBRARY_FEATURES, deps = [ ":rusty_v8_custom_libcxx_runtime", ":v8_152_2_0_binding", ], ) cc_static_library( name = "v8_152_2_0_x86_64_pc_windows_gnullvm_bazel", features = V8_STATIC_LIBRARY_FEATURES, deps = [":v8_152_2_0_binding"], ) cc_static_library( name = "v8_152_2_0_x86_64_unknown_linux_musl_release", features = V8_STATIC_LIBRARY_FEATURES, deps = [ ":rusty_v8_custom_libcxx_runtime", ":v8_152_2_0_binding", ], ) filegroup( name = "src_binding_release_aarch64_apple_darwin_152_2_0_release", srcs = ["@v8_crate_152_2_0//:src_binding_release_aarch64_apple_darwin"], ) filegroup( name = "src_binding_release_x86_64_apple_darwin_152_2_0_release", srcs = ["@v8_crate_152_2_0//:src_binding_release_x86_64_apple_darwin"], ) filegroup( name = "src_binding_release_aarch64_unknown_linux_gnu_152_2_0_release", srcs = ["@v8_crate_152_2_0//:src_binding_release_aarch64_unknown_linux_gnu"], ) filegroup( name = "src_binding_release_x86_64_unknown_linux_gnu_152_2_0_release", srcs = ["@v8_crate_152_2_0//:src_binding_release_x86_64_unknown_linux_gnu"], ) filegroup( name = "src_binding_release_aarch64_unknown_linux_musl_152_2_0_release", srcs = ["@v8_crate_152_2_0//:src_binding_release_aarch64_unknown_linux_gnu"], ) filegroup( name = "src_binding_release_x86_64_unknown_linux_musl_152_2_0_release", srcs = ["@v8_crate_152_2_0//:src_binding_release_x86_64_unknown_linux_gnu"], ) alias( name = "src_binding_release_aarch64_pc_windows_msvc_152_2_0_release", actual = "@rusty_v8_152_2_0_aarch64_pc_windows_msvc_binding//file", ) alias( name = "src_binding_release_x86_64_pc_windows_msvc_152_2_0_release", actual = "@rusty_v8_152_2_0_x86_64_pc_windows_msvc_binding//file", ) filegroup( name = "rusty_v8_release_pair_x86_64_apple_darwin", srcs = [ ":src_binding_release_x86_64_apple_darwin_152_2_0_release", ":v8_152_2_0_x86_64_apple_darwin_bazel", ], ) filegroup( name = "rusty_v8_release_pair_aarch64_apple_darwin", srcs = [ ":src_binding_release_aarch64_apple_darwin_152_2_0_release", ":v8_152_2_0_aarch64_apple_darwin_bazel", ], ) filegroup( name = "rusty_v8_release_pair_x86_64_unknown_linux_gnu", srcs = [ ":src_binding_release_x86_64_unknown_linux_gnu_152_2_0_release", ":v8_152_2_0_x86_64_unknown_linux_gnu_bazel", ], ) filegroup( name = "rusty_v8_release_pair_aarch64_unknown_linux_gnu", srcs = [ ":src_binding_release_aarch64_unknown_linux_gnu_152_2_0_release", ":v8_152_2_0_aarch64_unknown_linux_gnu_bazel", ], ) filegroup( name = "rusty_v8_release_pair_x86_64_unknown_linux_musl", srcs = [ ":src_binding_release_x86_64_unknown_linux_musl_152_2_0_release", ":v8_152_2_0_x86_64_unknown_linux_musl_release", ], ) filegroup( name = "rusty_v8_release_pair_aarch64_unknown_linux_musl", srcs = [ ":src_binding_release_aarch64_unknown_linux_musl_152_2_0_release", ":v8_152_2_0_aarch64_unknown_linux_musl_release", ], ) filegroup( name = "rusty_v8_release_pair_x86_64_pc_windows_msvc", srcs = [ ":src_binding_release_x86_64_pc_windows_msvc_152_2_0_release", ":v8_152_2_0_x86_64_pc_windows_msvc", ], ) filegroup( name = "rusty_v8_release_pair_aarch64_pc_windows_msvc", srcs = [ ":src_binding_release_aarch64_pc_windows_msvc_152_2_0_release", ":v8_152_2_0_aarch64_pc_windows_msvc", ], ) filegroup( name = "rusty_v8_sandbox_release_pair_x86_64_apple_darwin", srcs = [ ":src_binding_release_x86_64_apple_darwin_152_2_0_release", ":v8_152_2_0_x86_64_apple_darwin_bazel", ], ) filegroup( name = "rusty_v8_sandbox_release_pair_aarch64_apple_darwin", srcs = [ ":src_binding_release_aarch64_apple_darwin_152_2_0_release", ":v8_152_2_0_aarch64_apple_darwin_bazel", ], ) filegroup( name = "rusty_v8_sandbox_release_pair_x86_64_unknown_linux_gnu", srcs = [ ":src_binding_release_x86_64_unknown_linux_gnu_152_2_0_release", ":v8_152_2_0_x86_64_unknown_linux_gnu_bazel", ], ) filegroup( name = "rusty_v8_sandbox_release_pair_aarch64_unknown_linux_gnu", srcs = [ ":src_binding_release_aarch64_unknown_linux_gnu_152_2_0_release", ":v8_152_2_0_aarch64_unknown_linux_gnu_bazel", ], ) filegroup( name = "rusty_v8_sandbox_release_pair_x86_64_unknown_linux_musl", srcs = [ ":src_binding_release_x86_64_unknown_linux_musl_152_2_0_release", ":v8_152_2_0_x86_64_unknown_linux_musl_release", ], ) filegroup( name = "rusty_v8_sandbox_release_pair_aarch64_unknown_linux_musl", srcs = [ ":src_binding_release_aarch64_unknown_linux_musl_152_2_0_release", ":v8_152_2_0_aarch64_unknown_linux_musl_release", ], )