Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / pigweed / repo / pw_sync_freertos / BUILD.gn
1 # Copyright 2020 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
15 import("//build_overrides/pigweed.gni")
16
17 import("$dir_pw_build/target_types.gni")
18 import("$dir_pw_chrono/backend.gni")
19 import("$dir_pw_docgen/docs.gni")
20
21 config("public_include_path") {
22   include_dirs = [ "public" ]
23   visibility = [ ":*" ]
24 }
25
26 config("backend_config") {
27   include_dirs = [ "public_overrides" ]
28   visibility = [ ":*" ]
29 }
30
31 # This target provides the backend for pw::sync::BinarySemaphore.
32 pw_source_set("binary_semaphore") {
33   public_configs = [
34     ":public_include_path",
35     ":backend_config",
36   ]
37   public = [
38     "public/pw_sync_freertos/binary_semaphore_inline.h",
39     "public/pw_sync_freertos/binary_semaphore_native.h",
40     "public_overrides/pw_sync_backend/binary_semaphore_inline.h",
41     "public_overrides/pw_sync_backend/binary_semaphore_native.h",
42   ]
43   public_deps = [
44     "$dir_pw_assert",
45     "$dir_pw_chrono:system_clock",
46     "$dir_pw_chrono_freertos:system_clock",
47     "$dir_pw_interrupt:context",
48     "$dir_pw_third_party/freertos",
49   ]
50   sources = [ "binary_semaphore.cc" ]
51   deps = [ "$dir_pw_sync:binary_semaphore.facade" ]
52   assert(pw_chrono_SYSTEM_CLOCK_BACKEND == "" ||
53              pw_chrono_SYSTEM_CLOCK_BACKEND ==
54                  "$dir_pw_chrono_freertos:system_clock",
55          "The FreeRTOS pw::sync::BinarySemaphore backend only works with the " +
56              "FreeRTOS pw::chrono::SystemClock backend.")
57 }
58
59 # This target provides the backend for pw::sync::CountingSemaphore.
60 pw_source_set("counting_semaphore") {
61   public_configs = [
62     ":public_include_path",
63     ":backend_config",
64   ]
65   public = [
66     "public/pw_sync_freertos/counting_semaphore_inline.h",
67     "public/pw_sync_freertos/counting_semaphore_native.h",
68     "public_overrides/pw_sync_backend/counting_semaphore_inline.h",
69     "public_overrides/pw_sync_backend/counting_semaphore_native.h",
70   ]
71   public_deps = [
72     "$dir_pw_assert",
73     "$dir_pw_chrono:system_clock",
74     "$dir_pw_chrono_freertos:system_clock",
75     "$dir_pw_interrupt:context",
76     "$dir_pw_third_party/freertos",
77   ]
78   sources = [ "counting_semaphore.cc" ]
79   deps = [ "$dir_pw_sync:counting_semaphore.facade" ]
80   assert(pw_chrono_SYSTEM_CLOCK_BACKEND == "" ||
81              pw_chrono_SYSTEM_CLOCK_BACKEND ==
82                  "$dir_pw_chrono_freertos:system_clock",
83          "The FreeRTOS pw::sync::CountingSemaphore backend only works with " +
84              "the FreeRTOS pw::chrono::SystemClock backend.")
85 }
86
87 # This target provides the backend for pw::sync::Mutex.
88 pw_source_set("mutex") {
89   public_configs = [
90     ":public_include_path",
91     ":backend_config",
92   ]
93   public = [
94     "public/pw_sync_freertos/mutex_inline.h",
95     "public/pw_sync_freertos/mutex_native.h",
96     "public_overrides/pw_sync_backend/mutex_inline.h",
97     "public_overrides/pw_sync_backend/mutex_native.h",
98   ]
99   public_deps = [
100     "$dir_pw_assert",
101     "$dir_pw_chrono:system_clock",
102     "$dir_pw_chrono_freertos:system_clock",
103     "$dir_pw_interrupt:context",
104     "$dir_pw_third_party/freertos",
105   ]
106   sources = [ "mutex.cc" ]
107   deps = [ "$dir_pw_sync:mutex.facade" ]
108   assert(pw_chrono_SYSTEM_CLOCK_BACKEND == "" ||
109              pw_chrono_SYSTEM_CLOCK_BACKEND ==
110                  "$dir_pw_chrono_freertos:system_clock",
111          "The FreeRTOS pw::sync::Mutex backend only works with the FreeRTOS " +
112              "pw::chrono::SystemClock backend.")
113 }
114
115 # This target provides the backend for pw::sync::SpinLock.
116 pw_source_set("spin_lock") {
117   public_configs = [
118     ":public_include_path",
119     ":backend_config",
120   ]
121   public = [
122     "public/pw_sync_freertos/spin_lock_inline.h",
123     "public/pw_sync_freertos/spin_lock_native.h",
124     "public_overrides/pw_sync_backend/spin_lock_inline.h",
125     "public_overrides/pw_sync_backend/spin_lock_native.h",
126   ]
127   public_deps = [ "$dir_pw_third_party/freertos" ]
128   sources = [ "spin_lock.cc" ]
129   deps = [
130     "$dir_pw_assert",
131     "$dir_pw_interrupt:context",
132     "$dir_pw_sync:spin_lock.facade",
133     "$dir_pw_third_party/freertos",
134   ]
135 }
136
137 pw_doc_group("docs") {
138   sources = [ "docs.rst" ]
139 }