1# Copyright 2021 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( 16 "//pw_build:pigweed.bzl", 17 "pw_cc_library", 18 "pw_cc_test", 19) 20 21package(default_visibility = ["//visibility:public"]) 22 23licenses(["notice"]) # Apache License 2.0 24 25pw_cc_library( 26 name = "id_headers", 27 hdrs = [ 28 "public/pw_thread_threadx/id_inline.h", 29 "public/pw_thread_threadx/id_native.h", 30 "public_overrides/pw_thread_backend/id_inline.h", 31 "public_overrides/pw_thread_backend/id_native.h", 32 ], 33 includes = [ 34 "public", 35 "public_overrides", 36 ], 37) 38 39pw_cc_library( 40 name = "id", 41 deps = [ 42 ":id_headers", 43 "//pw_thread:id_facade", 44 ], 45 # TODO(pwbug/317): This should depend on ThreadX but our third parties 46 # currently do not have Bazel support. 47) 48 49# This target provides the ThreadX specific headers needs for thread creation. 50pw_cc_library( 51 name = "thread_headers", 52 hdrs = [ 53 "public/pw_thread_threadx/context.h", 54 "public/pw_thread_threadx/options.h", 55 "public/pw_thread_threadx/config.h", 56 "public/pw_thread_threadx/thread_inline.h", 57 "public/pw_thread_threadx/thread_native.h", 58 "public_overrides/pw_thread_backend/thread_inline.h", 59 "public_overrides/pw_thread_backend/thread_native.h", 60 ], 61 includes = [ 62 "public", 63 "public_overrides", 64 ], 65 deps = [ 66 "//pw_assert", 67 ":id", 68 "//pw_thread:thread_headers", 69 ], 70 # TODO(pwbug/317): This should depend on ThreadX but our third parties 71 # currently do not have Bazel support. 72) 73 74pw_cc_library( 75 name = "thread", 76 srcs = [ 77 "thread.cc", 78 ], 79 deps = [ 80 "//pw_assert", 81 ":id", 82 ":thread_headers", 83 ], 84 # TODO(pwbug/317): This should depend on ThreadX but our third parties 85 # currently do not have Bazel support. 86) 87 88pw_cc_library( 89 name = "test_threads", 90 deps = [ 91 "//pw_thread:thread_facade", 92 "//pw_thread:test_threads_header", 93 "//pw_chrono:system_clock", 94 "//pw_thread:sleep", 95 ], 96 srcs = [ 97 "test_threads.cc", 98 ] 99) 100 101pw_cc_test( 102 name = "thread_backend_test", 103 deps = [ 104 "//pw_thread:thread_facade_test", 105 ":test_threads", 106 ] 107) 108 109pw_cc_library( 110 name = "sleep_headers", 111 hdrs = [ 112 "public/pw_thread_threadx/sleep_inline.h", 113 "public_overrides/pw_thread_backend/sleep_inline.h", 114 ], 115 includes = [ 116 "public", 117 "public_overrides", 118 ], 119 deps = [ 120 "//pw_chrono:system_clock", 121 ], 122) 123 124pw_cc_library( 125 name = "sleep", 126 srcs = [ 127 "sleep.cc", 128 ], 129 deps = [ 130 ":sleep_headers", 131 "//pw_chrono_threadx:system_clock_headers", 132 "//pw_assert", 133 "//pw_chrono:system_clock", 134 "//pw_thread:sleep_facade", 135 ], 136 # TODO(pwbug/317): This should depend on ThreadX but our third parties 137 # currently do not have Bazel support. 138) 139 140pw_cc_library( 141 name = "yield_headers", 142 hdrs = [ 143 "public/pw_thread_threadx/yield_inline.h", 144 "public_overrides/pw_thread_backend/yield_inline.h", 145 ], 146 includes = [ 147 "public", 148 "public_overrides", 149 ], 150 # TODO(pwbug/317): This should depend on ThreadX but our third parties 151 # currently do not have Bazel support. 152) 153 154pw_cc_library( 155 name = "yield", 156 deps = [ 157 ":yield_headers", 158 "//pw_thread:yield_facade", 159 ], 160) 161