# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# buildifier: disable=load-on-top

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "bazel_skylib",
    sha256 = "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz",
        "https://github.com/bazelbuild/bazel-skylib/releases/download/1.2.1/bazel-skylib-1.2.1.tar.gz",
    ],
)

load("@bazel_skylib//:workspace.bzl", "bazel_skylib_workspace")

bazel_skylib_workspace()

# Set up a hermetic python toolchain.
local_repository(
    name = "rules_python",
    path = "third_party/rules_python",
)

load("@rules_python//python:repositories.bzl", "py_repositories", "python_register_toolchains")

py_repositories()

local_repository(
    name = "platforms",
    path = "third_party/platforms",
)

load("@platforms//host:extension.bzl", "host_platform_repo")

host_platform_repo(
    name = "host_platform",
)

local_repository(
    name = "rules_cc",
    path = "third_party/rules_cc",
)

local_repository(
    name = "rules_license",
    path = "third_party/rules_license",
)

python_register_toolchains(
    name = "python_3_11",
    python_version = "3.11",
)

local_repository(
    name = "fuchsia_infra",
    path = "third_party/fuchsia-infra-bazel-rules",
)

load("@fuchsia_infra//:workspace.bzl", "fuchsia_infra_workspace")
load("@fuchsia_infra//cipd:defs.bzl", "cipd_repository", "cipd_tool_repository")
load("@fuchsia_infra//shac:shac.bzl", "shac_deps")

fuchsia_infra_workspace()

shac_deps()

cipd_tool_repository(
    name = "cipd_tool",
)

cipd_repository(
    name = "fuchsia_sdk",
    cipd_bin = "@cipd_tool//:cipd",
    ensure_file = "//manifests:bazel_sdk.ensure",
)
cipd_repository(
    name = "rules_fuchsia",
    cipd_bin = "@cipd_tool//:cipd",
    ensure_file = "//manifests:rules_fuchsia.ensure",
)

load("@rules_fuchsia//fuchsia:deps.bzl", "register_fuchsia_sdk_toolchain")

register_fuchsia_sdk_toolchain()

load(
    "@rules_fuchsia//fuchsia:products.bzl",
    "fuchsia_products_repository",
)

fuchsia_products_repository(
    name = "fuchsia_products",
    cipd_bin = "@cipd_tool//:cipd",
    ensure_file = "//manifests:product_bundles.ensure",
)

load(
    "@rules_fuchsia//fuchsia:clang.bzl",
    "fuchsia_clang_repository",
)

fuchsia_clang_repository(
    name = "fuchsia_clang",
    cipd_bin = "@cipd_tool//:cipd",
    cipd_ensure_file = "//manifests:clang.ensure",
)

load("@fuchsia_clang//:defs.bzl", "register_clang_toolchains")

register_clang_toolchains()

load("@fuchsia_infra//infra:host_toolchains.bzl", "configure_fuchsia_clang_host_toolchain")

# Configure a host toolchain for local execution. This is not used to compile
# fuchsia targets but is made available so we don't try to access the host gcc
# which is not available in infrastructure builds. This call must happen after
# you create a fuchsia_clang repository.
configure_fuchsia_clang_host_toolchain(name = "host_clang_toolchain")

# gTest.
local_repository(
    name = "com_google_googletest",
    path = "third_party/googletest",
)

# protobuf
local_repository(
    name = "com_google_protobuf",
    path = "third_party/protobuf",
)

# Platform Artifacts that are used to build products

cipd_repository(
    name = "platform_arm64",
    cipd_bin = "@cipd_tool//:cipd",
    ensure_file = "//manifests:platform_arm64.ensure",
    exports_files = True,
)

cipd_repository(
    name = "platform_x64",
    cipd_bin = "@cipd_tool//:cipd",
    ensure_file = "//manifests:platform_x64.ensure",
    exports_files = True,
)

cipd_repository(
    name = "vim3",
    cipd_bin = "@cipd_tool//:cipd",
    ensure_file = "//manifests:vim3.ensure",
    exports_files = True,
)

cipd_repository(
    name = "x64",
    cipd_bin = "@cipd_tool//:cipd",
    ensure_file = "//manifests:x64.ensure",
    exports_files = True,
)
