Fix for x86_64 build fail
[platform/upstream/connectedhomeip.git] / third_party / pigweed / repo / pw_thread_threadx / 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 import("$dir_pw_thread/backend.gni")
21
22 config("public_include_path") {
23   include_dirs = [ "public" ]
24   visibility = [ ":*" ]
25 }
26
27 config("backend_config") {
28   include_dirs = [ "public_overrides" ]
29   visibility = [ ":*" ]
30 }
31
32 # This target provides the backend for pw::thread::Id.
33 pw_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/threadx",
42   ]
43   public = [
44     "public/pw_thread_threadx/id_inline.h",
45     "public/pw_thread_threadx/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
52 if (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_threadx/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_threadx:system_clock",
68       "$dir_pw_third_party/threadx",
69       "$dir_pw_thread:id",
70     ]
71     assert(
72         pw_thread_OVERRIDE_SYSTEM_CLOCK_BACKEND_CHECK ||
73             pw_chrono_SYSTEM_CLOCK_BACKEND ==
74                 "$dir_pw_chrono_threadx:system_clock",
75         "The ThreadX pw::thread::sleep_{for,until} backend only works with " +
76             "the ThreadX pw::chrono::SystemClock backend.")
77   }
78 }
79
80 # This target provides the backend for pw::thread::yield.
81 pw_source_set("yield") {
82   public_configs = [
83     ":public_include_path",
84     ":backend_config",
85   ]
86   public = [
87     "public/pw_thread_threadx/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/threadx",
93     "$dir_pw_thread:id",
94   ]
95   deps = [ "$dir_pw_thread:yield.facade" ]
96 }
97
98 pw_doc_group("docs") {
99   sources = [ "docs.rst" ]
100 }