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