• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2022 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
15include($ENV{PW_ROOT}/pw_build/pigweed.cmake)
16include($ENV{PW_ROOT}/pw_system/backend.cmake)
17
18# WARNING: Many of the dependencies in this file are missing and need to be
19# added/updated. This is provided as a starting point, but currently does not
20# work.
21
22pw_add_library(pw_system.config INTERFACE
23  HEADERS
24    public/pw_system/config.h
25  PUBLIC_INCLUDES
26    public
27)
28
29pw_add_library(pw_system.log STATIC
30  PUBLIC_DEPS
31    # TODO(b/246101669): Add CMake support.
32    # pw_log_rpc.log_service
33    # pw_log_rpc.rpc_log_drain_thread
34    pw_multisink
35  PRIVATE_DEPS
36    pw_system.config
37    pw_system.rpc_server
38    # TODO(b/246101669): Add CMake support.
39    # pw_log_rpc.rpc_log_drain
40    pw_sync.lock_annotations
41    pw_sync.mutex
42  HEADERS
43    pw_system_private/log.h
44  SOURCES
45    log.cc
46)
47
48pw_add_library(pw_system.log_backend STATIC
49  PRIVATE_DEPS
50    pw_system.config
51    pw_system.log
52    pw_bytes
53    pw_chrono.system_clock
54    pw_log.facade
55    pw_log.proto_utils
56    pw_log_string.handler.facade
57    pw_log_tokenized.handler
58    pw_log_tokenized.metadata
59    pw_multisink
60    pw_result
61    pw_sync.interrupt_spin_lock
62    pw_sync.lock_annotations
63    pw_tokenizer
64  SOURCES
65    log_backend.cc
66)
67
68pw_add_facade(pw_system.rpc_server INTERFACE
69  BACKEND
70    pw_system.rpc_server_BACKEND
71  HEADERS
72    public/pw_system/rpc_server.h
73  PUBLIC_INCLUDES
74    public
75  PUBLIC_DEPS
76    pw_system.config
77    pw_thread.thread_core
78)
79
80pw_add_library(pw_system.hdlc_rpc_server STATIC
81  PRIVATE_DEPS
82    pw_assert
83    pw_hdlc.pw_rpc
84    pw_hdlc.rpc_channel_output
85    pw_sync.mutex
86    pw_system.config
87    pw_system.io
88    pw_system.rpc_server.facade
89    pw_system.target_io
90    pw_thread.thread_core
91  SOURCES
92    hdlc_rpc_server.cc
93)
94
95pw_add_library(pw_system.io INTERFACE
96  HEADERS
97    public/pw_system/io.h
98  PUBLIC_INCLUDES
99    public
100  PUBLIC_DEPS
101    pw_stream
102)
103
104pw_add_library(pw_system.init STATIC
105  HEADERS
106    public/pw_system/init.h
107  PUBLIC_INCLUDES
108    public
109  SOURCES
110    init.cc
111  PRIVATE_DEPS
112        pw_system.log
113        pw_system.rpc_server
114        pw_rpc.pwpb.echo_service
115        pw_thread.thread
116)
117
118pw_add_library(pw_system.work_queue STATIC
119  HEADERS
120    public/pw_system/work_queue.h
121  PUBLIC_INCLUDES
122    public
123  SOURCES
124    work_queue.cc
125  PRIVATE_DEPS
126    pw_work_queue
127)
128
129pw_add_library(pw_system.target_io STATIC
130  PRIVATE_DEPS
131    pw_system.io
132    pw_stream
133    pw_stream.sys_io_stream
134  SOURCES
135    target_io.cc
136)
137
138pw_add_library(pw_system.target_hooks INTERFACE
139  HEADERS
140    public/pw_system/target_hooks.h
141  PUBLIC_INCLUDES
142    public
143  PUBLIC_DEPS
144    pw_thread.thread
145)
146
147pw_add_library(pw_system.stl_target_hooks STATIC
148  PRIVATE_DEPS
149    pw_thread.sleep
150    pw_thread.thread
151    pw_thread_stl.thread
152
153  SOURCES
154    stl_target_hooks.cc
155)
156
157pw_add_library(pw_system.freertos_target_hooks STATIC
158  SOURCES
159    freertos_target_hooks.cc
160  PRIVATE_DEPS
161    pw_thread.thread
162    pw_thread_freertos.thread
163    # TODO(b/234876414): This should depend on FreeRTOS but our third parties
164    # currently do not have CMake support.
165)
166
167pw_add_library(pw_system.system_example STATIC
168  PRIVATE_DEPS
169    pw_system.init
170    pw_system.io
171    pw_system.target_hooks
172    pw_stream
173    pw_stream.sys_io_stream
174  SOURCES
175    example_user_app_init.cc
176)
177