# 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",
          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",
                        ],
          sha256 = "f7be3474d42aae265405a592bb7da8e171919d74c16f082a5457840f06054728",
       )
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",
)

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