1*61c4878aSAndroid Build Coastguard Worker# Copyright 2020 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker# 3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker# the License at 6*61c4878aSAndroid Build Coastguard Worker# 7*61c4878aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker# 9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker# the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerimport("//build_overrides/pigweed.gni") 16*61c4878aSAndroid Build Coastguard Worker 17*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/error.gni") 18*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_build/target_types.gni") 19*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_chrono/backend.gni") 20*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_docgen/docs.gni") 21*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_sync/backend.gni") 22*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_thread/backend.gni") 23*61c4878aSAndroid Build Coastguard Workerimport("$dir_pw_unit_test/test.gni") 24*61c4878aSAndroid Build Coastguard Worker 25*61c4878aSAndroid Build Coastguard Workerconfig("public_include_path") { 26*61c4878aSAndroid Build Coastguard Worker include_dirs = [ "public" ] 27*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 28*61c4878aSAndroid Build Coastguard Worker} 29*61c4878aSAndroid Build Coastguard Worker 30*61c4878aSAndroid Build Coastguard Workerconfig("backend_config") { 31*61c4878aSAndroid Build Coastguard Worker include_dirs = [ "public_overrides" ] 32*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 33*61c4878aSAndroid Build Coastguard Worker} 34*61c4878aSAndroid Build Coastguard Worker 35*61c4878aSAndroid Build Coastguard Workerpw_build_assert("check_system_clock_backend") { 36*61c4878aSAndroid Build Coastguard Worker condition = 37*61c4878aSAndroid Build Coastguard Worker pw_chrono_SYSTEM_CLOCK_BACKEND == "" || 38*61c4878aSAndroid Build Coastguard Worker pw_chrono_SYSTEM_CLOCK_BACKEND == "$dir_pw_chrono_stl:system_clock" 39*61c4878aSAndroid Build Coastguard Worker message = "The STL pw_sync backends only work with the STL " + 40*61c4878aSAndroid Build Coastguard Worker "pw::chrono::SystemClock backend." 41*61c4878aSAndroid Build Coastguard Worker visibility = [ ":*" ] 42*61c4878aSAndroid Build Coastguard Worker} 43*61c4878aSAndroid Build Coastguard Worker 44*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::BinarySemaphore. 45*61c4878aSAndroid Build Coastguard Workerpw_source_set("binary_semaphore_backend") { 46*61c4878aSAndroid Build Coastguard Worker public_configs = [ 47*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 48*61c4878aSAndroid Build Coastguard Worker ":backend_config", 49*61c4878aSAndroid Build Coastguard Worker ] 50*61c4878aSAndroid Build Coastguard Worker public = [ 51*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/binary_semaphore_inline.h", 52*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/binary_semaphore_native.h", 53*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/binary_semaphore_inline.h", 54*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/binary_semaphore_native.h", 55*61c4878aSAndroid Build Coastguard Worker ] 56*61c4878aSAndroid Build Coastguard Worker sources = [ "binary_semaphore.cc" ] 57*61c4878aSAndroid Build Coastguard Worker deps = [ 58*61c4878aSAndroid Build Coastguard Worker ":check_system_clock_backend", 59*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert", 60*61c4878aSAndroid Build Coastguard Worker "$dir_pw_chrono:system_clock", 61*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:binary_semaphore.facade", 62*61c4878aSAndroid Build Coastguard Worker ] 63*61c4878aSAndroid Build Coastguard Worker} 64*61c4878aSAndroid Build Coastguard Worker 65*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::CountingSemaphore. 66*61c4878aSAndroid Build Coastguard Workerpw_source_set("counting_semaphore_backend") { 67*61c4878aSAndroid Build Coastguard Worker public_configs = [ 68*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 69*61c4878aSAndroid Build Coastguard Worker ":backend_config", 70*61c4878aSAndroid Build Coastguard Worker ] 71*61c4878aSAndroid Build Coastguard Worker public = [ 72*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/counting_semaphore_inline.h", 73*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/counting_semaphore_native.h", 74*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/counting_semaphore_inline.h", 75*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/counting_semaphore_native.h", 76*61c4878aSAndroid Build Coastguard Worker ] 77*61c4878aSAndroid Build Coastguard Worker sources = [ "counting_semaphore.cc" ] 78*61c4878aSAndroid Build Coastguard Worker deps = [ 79*61c4878aSAndroid Build Coastguard Worker ":check_system_clock_backend", 80*61c4878aSAndroid Build Coastguard Worker "$dir_pw_assert", 81*61c4878aSAndroid Build Coastguard Worker "$dir_pw_chrono:system_clock", 82*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:counting_semaphore.facade", 83*61c4878aSAndroid Build Coastguard Worker ] 84*61c4878aSAndroid Build Coastguard Worker} 85*61c4878aSAndroid Build Coastguard Worker 86*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::Mutex. 87*61c4878aSAndroid Build Coastguard Workerpw_source_set("mutex_backend") { 88*61c4878aSAndroid Build Coastguard Worker public_configs = [ 89*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 90*61c4878aSAndroid Build Coastguard Worker ":backend_config", 91*61c4878aSAndroid Build Coastguard Worker ] 92*61c4878aSAndroid Build Coastguard Worker public = [ 93*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/mutex_inline.h", 94*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/mutex_native.h", 95*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/mutex_inline.h", 96*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/mutex_native.h", 97*61c4878aSAndroid Build Coastguard Worker ] 98*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_sync:mutex.facade" ] 99*61c4878aSAndroid Build Coastguard Worker deps = [ dir_pw_assert ] 100*61c4878aSAndroid Build Coastguard Worker 101*61c4878aSAndroid Build Coastguard Worker sources = [ "mutex.cc" ] 102*61c4878aSAndroid Build Coastguard Worker} 103*61c4878aSAndroid Build Coastguard Worker 104*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::TimedMutex. 105*61c4878aSAndroid Build Coastguard Workerpw_source_set("timed_mutex_backend") { 106*61c4878aSAndroid Build Coastguard Worker public_configs = [ 107*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 108*61c4878aSAndroid Build Coastguard Worker ":backend_config", 109*61c4878aSAndroid Build Coastguard Worker ] 110*61c4878aSAndroid Build Coastguard Worker public = [ 111*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:timed_mutex.facade", 112*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/timed_mutex_inline.h", 113*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/timed_mutex_inline.h", 114*61c4878aSAndroid Build Coastguard Worker ] 115*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_chrono:system_clock" ] 116*61c4878aSAndroid Build Coastguard Worker deps = [ ":check_system_clock_backend" ] 117*61c4878aSAndroid Build Coastguard Worker} 118*61c4878aSAndroid Build Coastguard Worker 119*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::RecursiveMutex. 120*61c4878aSAndroid Build Coastguard Workerpw_source_set("recursive_mutex_backend") { 121*61c4878aSAndroid Build Coastguard Worker public_configs = [ 122*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 123*61c4878aSAndroid Build Coastguard Worker ":backend_config", 124*61c4878aSAndroid Build Coastguard Worker ] 125*61c4878aSAndroid Build Coastguard Worker public = [ 126*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/recursive_mutex_inline.h", 127*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/recursive_mutex_native.h", 128*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/recursive_mutex_inline.h", 129*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/recursive_mutex_native.h", 130*61c4878aSAndroid Build Coastguard Worker ] 131*61c4878aSAndroid Build Coastguard Worker public_deps = [ 132*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:recursive_mutex.facade", 133*61c4878aSAndroid Build Coastguard Worker dir_pw_assert, 134*61c4878aSAndroid Build Coastguard Worker ] 135*61c4878aSAndroid Build Coastguard Worker} 136*61c4878aSAndroid Build Coastguard Worker 137*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::InterruptSpinLock. 138*61c4878aSAndroid Build Coastguard Workerpw_source_set("interrupt_spin_lock") { 139*61c4878aSAndroid Build Coastguard Worker public_configs = [ 140*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 141*61c4878aSAndroid Build Coastguard Worker ":backend_config", 142*61c4878aSAndroid Build Coastguard Worker ] 143*61c4878aSAndroid Build Coastguard Worker public = [ 144*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/interrupt_spin_lock_inline.h", 145*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/interrupt_spin_lock_native.h", 146*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/interrupt_spin_lock_inline.h", 147*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/interrupt_spin_lock_native.h", 148*61c4878aSAndroid Build Coastguard Worker ] 149*61c4878aSAndroid Build Coastguard Worker public_deps = [ 150*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:interrupt_spin_lock.facade", 151*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:yield_core", 152*61c4878aSAndroid Build Coastguard Worker ] 153*61c4878aSAndroid Build Coastguard Worker} 154*61c4878aSAndroid Build Coastguard Worker 155*61c4878aSAndroid Build Coastguard Worker# This target provides the backend for pw::sync::ConditionVariable. 156*61c4878aSAndroid Build Coastguard Workerpw_source_set("condition_variable_backend") { 157*61c4878aSAndroid Build Coastguard Worker allow_circular_includes_from = [ "$dir_pw_sync:condition_variable.facade" ] 158*61c4878aSAndroid Build Coastguard Worker public_configs = [ 159*61c4878aSAndroid Build Coastguard Worker ":public_include_path", 160*61c4878aSAndroid Build Coastguard Worker ":backend_config", 161*61c4878aSAndroid Build Coastguard Worker ] 162*61c4878aSAndroid Build Coastguard Worker public = [ 163*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/condition_variable_inline.h", 164*61c4878aSAndroid Build Coastguard Worker "public/pw_sync_stl/condition_variable_native.h", 165*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/condition_variable_inline.h", 166*61c4878aSAndroid Build Coastguard Worker "public_overrides/pw_sync_backend/condition_variable_native.h", 167*61c4878aSAndroid Build Coastguard Worker ] 168*61c4878aSAndroid Build Coastguard Worker public_deps = [ "$dir_pw_sync:condition_variable.facade" ] 169*61c4878aSAndroid Build Coastguard Worker} 170*61c4878aSAndroid Build Coastguard Worker 171*61c4878aSAndroid Build Coastguard Workerpw_test("condition_variable_test") { 172*61c4878aSAndroid Build Coastguard Worker enable_if = pw_thread_THREAD_BACKEND == "$dir_pw_thread_stl:thread" && 173*61c4878aSAndroid Build Coastguard Worker pw_sync_CONDITION_VARIABLE_BACKEND == 174*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync_stl:condition_variable" 175*61c4878aSAndroid Build Coastguard Worker deps = [ 176*61c4878aSAndroid Build Coastguard Worker "$dir_pw_sync:condition_variable_test", 177*61c4878aSAndroid Build Coastguard Worker "$dir_pw_thread_stl:non_portable_test_thread_options", 178*61c4878aSAndroid Build Coastguard Worker ] 179*61c4878aSAndroid Build Coastguard Worker} 180*61c4878aSAndroid Build Coastguard Worker 181*61c4878aSAndroid Build Coastguard Workerpw_doc_group("docs") { 182*61c4878aSAndroid Build Coastguard Worker sources = [ "docs.rst" ] 183*61c4878aSAndroid Build Coastguard Worker} 184*61c4878aSAndroid Build Coastguard Worker 185*61c4878aSAndroid Build Coastguard Workerpw_test_group("tests") { 186*61c4878aSAndroid Build Coastguard Worker tests = [ ":condition_variable_test" ] 187*61c4878aSAndroid Build Coastguard Worker} 188