@ 261106.3
current
module(
    name = "v8",
    version = "0.0.0",
)

bazel_dep(name = "bazel_skylib", version = "1.8.2")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "rules_python", version = "1.7.0")
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "abseil-cpp", version = "20250814.1")
bazel_dep(name = "highway", version = "1.2.0")

pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip")
pip.parse(
    hub_name = "v8_python_deps",
    python_version = "3.11",
    requirements_lock = "//:bazel/requirements.txt",
    extra_pip_args = [
        "--require-hashes",
        "--index-url=https://pypi.org/simple",
    ],
)
use_repo(pip, "v8_python_deps")

# Define the local LLVM toolchain repository
llvm_toolchain_repository = use_repo_rule("//bazel/toolchain:llvm_repository.bzl", "llvm_toolchain_repository")

llvm_toolchain_repository(
    name = "llvm_toolchain",
    path = "third_party/llvm-build/Release+Asserts",
    config_file_content = """
load("@rules_cc//cc:defs.bzl", "CcToolchainConfigInfo", "cc_common")
load("@bazel_tools//tools/cpp:cc_toolchain_config_lib.bzl", "feature", "flag_group", "flag_set", "tool_path")

def _impl(ctx):
    tool_paths = [
        tool_path(name = "gcc", path = "bin/clang"),
        tool_path(name = "ld", path = "bin/lld"),
        tool_path(name = "ar", path = "bin/llvm-ar"),
        tool_path(name = "cpp", path = "bin/clang++"),
        tool_path(name = "gcov", path = "/bin/false"),
        tool_path(name = "nm", path = "bin/llvm-nm"),
        tool_path(name = "objdump", path = "bin/llvm-objdump"),
        tool_path(name = "strip", path = "bin/llvm-strip"),
    ]

    features = [
        feature(
            name = "default_compile_flags",
            enabled = True,
            flag_sets = [
                flag_set(
                    actions = [
                        "c-compile",
                        "c++-compile",
                        "c++-header-parsing",
                        "c++-module-compile",
                        "c++-module-codegen",
                        "linkstamp-compile",
                        "assemble",
                        "preprocess-assemble",
                    ],
                    flag_groups = [
                        flag_group(
                            flags = [
                                "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot",
                                "-nostdinc++",
                                "-isystem",
                                "{WORKSPACE_ROOT}/buildtools/third_party/libc++",
                                "-isystem",
                                "{WORKSPACE_ROOT}/third_party/libc++/src/include",
                                "-isystem",
                                "{WORKSPACE_ROOT}/third_party/libc++abi/src/include",
                                "-isystem",
                                "{WORKSPACE_ROOT}/third_party/libc++/src/src",
                                "-isystem",
                                "{WORKSPACE_ROOT}/third_party/llvm-libc/src",
                                "-D_LIBCPP_HARDENING_MODE_DEFAULT=_LIBCPP_HARDENING_MODE_NONE",
                                "-DLIBC_NAMESPACE=__llvm_libc_cr",
                            ],
                        ),
                    ],
                ),
            ],
        ),
        feature(
            name = "default_linker_flags",
            enabled = True,
            flag_sets = [
                flag_set(
                    actions = [
                        "c++-link-executable",
                        "c++-link-dynamic-library",
                        "c++-link-nodeps-dynamic-library",
                    ],
                    flag_groups = [
                        flag_group(
                            flags = [
                                "--sysroot={WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot",
                                "-fuse-ld=lld",
                                "-lm",
                                "-lpthread",
                            ],
                        ),
                    ],
                ),
            ],
        ),
    ]

    return cc_common.create_cc_toolchain_config_info(
        ctx = ctx,
        toolchain_identifier = "local_clang",
        features = features,
        cxx_builtin_include_directories = [
            "{WORKSPACE_ROOT}/buildtools/third_party/libc++",
            "{WORKSPACE_ROOT}/third_party/libc++/src/include",
            "{WORKSPACE_ROOT}/third_party/libc++abi/src/include",
            "{WORKSPACE_ROOT}/third_party/libc++/src/src",
            "{WORKSPACE_ROOT}/third_party/llvm-libc/src",
            "{WORKSPACE_ROOT}/third_party/llvm-build/Release+Asserts/lib/clang/24/include",
            "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/include",
            "{WORKSPACE_ROOT}/build/linux/debian_bullseye_amd64-sysroot/usr/local/include",
        ],
        host_system_name = "local",
        target_system_name = "local",
        target_cpu = "k8",
        target_libc = "unknown",
        compiler = "clang",
        abi_version = "unknown",
        abi_libc_version = "unknown",
        tool_paths = tool_paths,
    )

cc_toolchain_config = rule(
    implementation = _impl,
    attrs = {},
    provides = [CcToolchainConfigInfo],
)
""",
    build_file_content = """
load("@rules_cc//cc:defs.bzl", "cc_toolchain")
load(":cc_toolchain_config.bzl", "cc_toolchain_config")

package(default_visibility = ["//visibility:public"])

filegroup(
    name = "all_files",
    srcs = glob(["**/*"]),
)

filegroup(name = "empty")

cc_toolchain_config(name = "k8_toolchain_config")

cc_toolchain(
    name = "k8_toolchain",
    all_files = ":all_files",
    ar_files = ":all_files",
    compiler_files = ":all_files",
    dwp_files = ":empty",
    linker_files = ":all_files",
    objcopy_files = ":all_files",
    strip_files = ":all_files",
    supports_param_files = 0,
    toolchain_config = ":k8_toolchain_config",
    toolchain_identifier = "local_clang",
)

toolchain(
    name = "cc_toolchain_k8",
    exec_compatible_with = [
        "@platforms//cpu:x86_64",
        "@platforms//os:linux",
    ],
    target_compatible_with = [
        "@platforms//cpu:x86_64",
        "@platforms//os:linux",
    ],
    toolchain = ":k8_toolchain",
    toolchain_type = "@bazel_tools//tools/cpp:toolchain_type",
)
""",
)

register_toolchains("@llvm_toolchain//:cc_toolchain_k8")

# Define local repository for libc++ from third_party sources
libcxx_repository = use_repo_rule("//bazel/toolchain:libcxx_repository.bzl", "libcxx_repository")

libcxx_repository(
    name = "libcxx",
)

single_version_override(
    module_name = "highway",
    patches = ["//bazel/patches:highway_rules_cc.patch"],
    patch_strip = 1,
)