# Deprecated. Do not use. Use targets in @platforms//cpu and @platforms//os.
# This package will be removed by
# --incompatible_use_platforms_repo_for_constraints. See
# https://github.com/bazelbuild/bazel/issues/8622 for details.
package(
    default_visibility = ["//visibility:public"],
)

alias(
    name = "cpu",
    actual = "@platforms//cpu:cpu",
)

alias(
    name = "x86_32",
    actual = "@platforms//cpu:x86_32",
)

alias(
    name = "x86_64",
    actual = "@platforms//cpu:x86_64",
)

alias(
    name = "ppc",
    actual = "@platforms//cpu:ppc",
)

alias(
    name = "arm",
    actual = "@platforms//cpu:arm",
)

alias(
    name = "aarch64",
    actual = "@platforms//cpu:aarch64",
)

alias(
    name = "s390x",
    actual = "@platforms//cpu:s390x",
)

alias(
    name = "mips64",
    actual = "@platforms//cpu:mips64",
)

alias(
    name = "riscv64",
    actual = "@platforms//cpu:riscv64",
)

alias(
    name = "os",
    actual = "@platforms//os:os",
)

alias(
    name = "osx",
    actual = "@platforms//os:osx",
)

alias(
    name = "ios",
    actual = "@platforms//os:ios",
)

alias(
    name = "freebsd",
    actual = "@platforms//os:freebsd",
)

alias(
    name = "openbsd",
    actual = "@platforms//os:openbsd",
)

alias(
    name = "android",
    actual = "@platforms//os:android",
)

alias(
    name = "linux",
    actual = "@platforms//os:linux",
)

alias(
    name = "windows",
    actual = "@platforms//os:windows",
)

# A default platform with nothing defined.
platform(name = "default_platform")

# A default platform referring to the host system. This only exists for
# internal build configurations, and so shouldn't be accessed by other packages.
platform(
    name = "host_platform",
    constraint_values = [
    ],
    cpu_constraints = [
        "@platforms//cpu:x86_32",
        "@platforms//cpu:x86_64",
        "@platforms//cpu:ppc",
        "@platforms//cpu:arm",
        "@platforms//cpu:aarch64",
        "@platforms//cpu:s390x",
        "@platforms//cpu:mips64",
        "@platforms//cpu:riscv64",
    ],
    host_platform = True,
    os_constraints = [
        "@platforms//os:osx",
        "@platforms//os:freebsd",
        "@platforms//os:openbsd",
        "@platforms//os:linux",
        "@platforms//os:windows",
    ],
)

platform(
    name = "target_platform",
    constraint_values = [
    ],
    cpu_constraints = [
        "@platforms//cpu:x86_32",
        "@platforms//cpu:x86_64",
        "@platforms//cpu:ppc",
        "@platforms//cpu:arm",
        "@platforms//cpu:aarch64",
        "@platforms//cpu:s390x",
        "@platforms//cpu:mips64",
        "@platforms//cpu:riscv64",
    ],
    os_constraints = [
        "@platforms//os:osx",
        "@platforms//os:freebsd",
        "@platforms//os:openbsd",
        "@platforms//os:linux",
        "@platforms//os:windows",
    ],
    target_platform = True,
)
