1# Copyright 2022 The Pigweed Authors 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4# use this file except in compliance with the License. You may obtain a copy of 5# the License at 6# 7# https://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12# License for the specific language governing permissions and limitations under 13# the License. 14 15load("@rules_cc//cc:cc_library.bzl", "cc_library") 16load("@rules_python//sphinxdocs:sphinx_docs_library.bzl", "sphinx_docs_library") 17load("//pw_build:compatibility.bzl", "incompatible_with_mcu") 18load("//pw_unit_test:pw_cc_test.bzl", "pw_cc_test") 19 20package( 21 default_visibility = ["//visibility:public"], 22 features = ["-layering_check"], 23) 24 25licenses(["notice"]) 26 27cc_library( 28 name = "pw_intrusive_ptr", 29 srcs = ["ref_counted_base.cc"], 30 hdrs = [ 31 "public/pw_intrusive_ptr/internal/ref_counted_base.h", 32 "public/pw_intrusive_ptr/intrusive_ptr.h", 33 "public/pw_intrusive_ptr/ref_counted.h", 34 ], 35 implementation_deps = ["//pw_assert:check"], 36 strip_include_prefix = "public", 37 deps = [":pw_recyclable"], 38) 39 40cc_library( 41 name = "pw_recyclable", 42 hdrs = [ 43 "public/pw_intrusive_ptr/recyclable.h", 44 ], 45 strip_include_prefix = "public", 46) 47 48pw_cc_test( 49 name = "intrusive_ptr_test", 50 srcs = [ 51 "intrusive_ptr_test.cc", 52 ], 53 # TODO: b/260624583 - Fix this for rp2040 54 target_compatible_with = select({ 55 "//pw_build/constraints/chipset:rp2040": ["@platforms//:incompatible"], 56 "//conditions:default": [], 57 }), 58 deps = [":pw_intrusive_ptr"], 59) 60 61pw_cc_test( 62 name = "recyclable_test", 63 srcs = [ 64 "recyclable_test.cc", 65 ], 66 # TODO: b/260624583 - Fix this for rp2040 67 target_compatible_with = select({ 68 "//pw_build/constraints/chipset:rp2040": ["@platforms//:incompatible"], 69 "//conditions:default": [], 70 }), 71 deps = [":pw_intrusive_ptr"], 72) 73 74sphinx_docs_library( 75 name = "docs", 76 srcs = [ 77 "docs.rst", 78 ], 79 prefix = "pw_intrusive_ptr/", 80 target_compatible_with = incompatible_with_mcu(), 81) 82