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 15import("//build_overrides/pigweed.gni") 16 17import("$dir_pw_build/target_types.gni") 18import("$dir_pw_chrono/backend.gni") 19import("$dir_pw_docgen/docs.gni") 20import("$dir_pw_thread/backend.gni") 21 22config("public_include_path") { 23 include_dirs = [ "public" ] 24 visibility = [ ":*" ] 25} 26 27config("backend_config") { 28 include_dirs = [ "public_overrides" ] 29 visibility = [ ":*" ] 30} 31 32# This target provides the backend for pw::thread::Id. 33pw_source_set("id") { 34 public_configs = [ 35 ":public_include_path", 36 ":backend_config", 37 ] 38 public_deps = [ 39 "$dir_pw_assert", 40 "$dir_pw_interrupt:context", 41 "$dir_pw_third_party/embos", 42 ] 43 public = [ 44 "public/pw_thread_embos/id_inline.h", 45 "public/pw_thread_embos/id_native.h", 46 "public_overrides/pw_thread_backend/id_inline.h", 47 "public_overrides/pw_thread_backend/id_native.h", 48 ] 49 deps = [ "$dir_pw_thread:id.facade" ] 50} 51 52if (pw_chrono_SYSTEM_CLOCK_BACKEND != "" && pw_thread_SLEEP_BACKEND != "") { 53 # This target provides the backend for pw::thread::sleep_{for,until}. 54 pw_source_set("sleep") { 55 public_configs = [ 56 ":public_include_path", 57 ":backend_config", 58 ] 59 public = [ 60 "public/pw_thread_embos/sleep_inline.h", 61 "public_overrides/pw_thread_backend/sleep_inline.h", 62 ] 63 public_deps = [ "$dir_pw_chrono:system_clock" ] 64 sources = [ "sleep.cc" ] 65 deps = [ 66 "$dir_pw_assert", 67 "$dir_pw_chrono_embos:system_clock", 68 "$dir_pw_third_party/embos", 69 "$dir_pw_thread:id", 70 "$dir_pw_thread:sleep.facade", 71 ] 72 assert(pw_thread_OVERRIDE_SYSTEM_CLOCK_BACKEND_CHECK || 73 pw_chrono_SYSTEM_CLOCK_BACKEND == 74 "$dir_pw_chrono_embos:system_clock", 75 "The embOS pw::thread::sleep_{for,until} backend only works with " + 76 "the embOS pw::chrono::SystemClock backend.") 77 } 78} 79 80# This target provides the backend for pw::thread::yield. 81pw_source_set("yield") { 82 public_configs = [ 83 ":public_include_path", 84 ":backend_config", 85 ] 86 public = [ 87 "public/pw_thread_embos/yield_inline.h", 88 "public_overrides/pw_thread_backend/yield_inline.h", 89 ] 90 public_deps = [ 91 "$dir_pw_assert", 92 "$dir_pw_third_party/embos", 93 "$dir_pw_thread:id", 94 ] 95 deps = [ "$dir_pw_thread:yield.facade" ] 96} 97 98pw_doc_group("docs") { 99 sources = [ "docs.rst" ] 100} 101