# Copyright 2022 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

load(
    "//pw_build:pigweed.bzl",
    "pw_cc_test",
)

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

licenses(["notice"])

cc_library(
    name = "no_destructor",
    hdrs = ["public/pw_toolchain/no_destructor.h"],
    includes = ["public"],
)

pw_cc_test(
    name = "no_destructor_test",
    srcs = ["no_destructor_test.cc"],
    deps = [
        ":no_destructor",
        "//pw_unit_test",
    ],
)

cc_library(
    name = "sibling_cast",
    hdrs = ["public/pw_toolchain/internal/sibling_cast.h"],
    includes = ["public"],
    visibility = ["//:__subpackages__"],  # Restrict to Pigweed
    deps = ["//pw_compilation_testing:negative_compilation_testing"],
)

pw_cc_test(
    name = "sibling_cast_test",
    srcs = ["sibling_cast_test.cc"],
    deps = [
        ":sibling_cast",
        "//pw_unit_test",
    ],
)

cc_library(
    name = "wrap_abort",
    srcs = ["wrap_abort.cc"],
    linkopts = ["-Wl,--wrap=abort"],
    deps = ["//pw_assert"],
    alwayslink = 1,
)
