# Copyright 2022 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.

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()

load("@bazel_skylib//lib:versions.bzl", "versions")

versions.check(minimum_bazel_version = "5.1.0")

local_repository(
    name = "rules_fuchsia",
    path = "third_party/sdk-integration/bazel_rules_fuchsia",
)

load(
    "@rules_fuchsia//fuchsia:deps.bzl",
    "fuchsia_clang_repository",
    "fuchsia_sdk_repository",
    "rules_fuchsia_deps",
)

rules_fuchsia_deps()

fuchsia_sdk_repository(
    name = "fuchsia_sdk",
    use_experimental = True,
)

register_toolchains("@fuchsia_sdk//:fuchsia_toolchain_sdk")

fuchsia_clang_repository(
    name = "fuchsia_clang",
)

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

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