xref: /aosp_15_r20/external/pigweed/docs/get_started/zephyr.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr:
2*61c4878aSAndroid Build Coastguard Worker
3*61c4878aSAndroid Build Coastguard Worker=================
4*61c4878aSAndroid Build Coastguard WorkerZephyr quickstart
5*61c4878aSAndroid Build Coastguard Worker=================
6*61c4878aSAndroid Build Coastguard Worker.. _Zephyr: https://zephyrproject.org/
7*61c4878aSAndroid Build Coastguard Worker.. _native_sim: https://docs.zephyrproject.org/latest/boards/native/native_sim/doc/index.html
8*61c4878aSAndroid Build Coastguard Worker.. _GPIO Driver API: https://docs.zephyrproject.org/latest/doxygen/html/group__devicetree-gpio.html
9*61c4878aSAndroid Build Coastguard Worker
10*61c4878aSAndroid Build Coastguard WorkerThis tutorial shows you how to set up a new C++-based `Zephyr`_ project that's
11*61c4878aSAndroid Build Coastguard Workerready to use Pigweed. You'll learn how to build and run the project's app on
12*61c4878aSAndroid Build Coastguard Worker`native_sim`_ as well as a physical Raspberry Pi Pico. The app uses
13*61c4878aSAndroid Build Coastguard Worker:ref:`module-pw_log` and :ref:`module-pw_string` to log messages and
14*61c4878aSAndroid Build Coastguard WorkerZephyr's `GPIO Driver API`_ to blink an LED.
15*61c4878aSAndroid Build Coastguard Worker
16*61c4878aSAndroid Build Coastguard Worker.. figure:: https://storage.googleapis.com/pigweed-media/zephyr-quickstart-pw_ide.png
17*61c4878aSAndroid Build Coastguard Worker   :alt: Editing the Zephyr quickstart project in VS Code
18*61c4878aSAndroid Build Coastguard Worker
19*61c4878aSAndroid Build Coastguard Worker   The project's :ref:`module-pw_ide` integration provides code intelligence
20*61c4878aSAndroid Build Coastguard Worker   and easy target swapping in VS Code
21*61c4878aSAndroid Build Coastguard Worker
22*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr-prereqs:
23*61c4878aSAndroid Build Coastguard Worker
24*61c4878aSAndroid Build Coastguard Worker-------------
25*61c4878aSAndroid Build Coastguard WorkerPrerequisites
26*61c4878aSAndroid Build Coastguard Worker-------------
27*61c4878aSAndroid Build Coastguard Worker* **Disk space**: After setting everything up, the project takes ~19GB of space.
28*61c4878aSAndroid Build Coastguard Worker  The project clones the Zephyr and Pigweed repos as well as their dependencies.
29*61c4878aSAndroid Build Coastguard Worker  It also downloads toolchains and sets up a hermetic development environment.
30*61c4878aSAndroid Build Coastguard Worker* **Operating systems**: This tutorial has only been validated on Debian-based
31*61c4878aSAndroid Build Coastguard Worker  Linux and macOS. Windows support is a work in progress.
32*61c4878aSAndroid Build Coastguard Worker
33*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr-setup:
34*61c4878aSAndroid Build Coastguard Worker
35*61c4878aSAndroid Build Coastguard Worker-----
36*61c4878aSAndroid Build Coastguard WorkerSetup
37*61c4878aSAndroid Build Coastguard Worker-----
38*61c4878aSAndroid Build Coastguard Worker#. Complete Pigweed's :ref:`First-time setup <docs-first-time-setup-guide>`
39*61c4878aSAndroid Build Coastguard Worker   process.
40*61c4878aSAndroid Build Coastguard Worker
41*61c4878aSAndroid Build Coastguard Worker#. Clone the starter repo.
42*61c4878aSAndroid Build Coastguard Worker
43*61c4878aSAndroid Build Coastguard Worker   .. tab-set::
44*61c4878aSAndroid Build Coastguard Worker
45*61c4878aSAndroid Build Coastguard Worker      .. tab-item:: Linux
46*61c4878aSAndroid Build Coastguard Worker         :sync: lin
47*61c4878aSAndroid Build Coastguard Worker
48*61c4878aSAndroid Build Coastguard Worker         .. code-block:: console
49*61c4878aSAndroid Build Coastguard Worker
50*61c4878aSAndroid Build Coastguard Worker            git clone --recursive \
51*61c4878aSAndroid Build Coastguard Worker              https://pigweed.googlesource.com/pigweed/quickstart/zephyr \
52*61c4878aSAndroid Build Coastguard Worker              zephyr-quickstart
53*61c4878aSAndroid Build Coastguard Worker
54*61c4878aSAndroid Build Coastguard Worker      .. tab-item:: macOS
55*61c4878aSAndroid Build Coastguard Worker         :sync: mac
56*61c4878aSAndroid Build Coastguard Worker
57*61c4878aSAndroid Build Coastguard Worker         .. code-block:: console
58*61c4878aSAndroid Build Coastguard Worker
59*61c4878aSAndroid Build Coastguard Worker            git clone --recursive \
60*61c4878aSAndroid Build Coastguard Worker              https://pigweed.googlesource.com/pigweed/quickstart/zephyr \
61*61c4878aSAndroid Build Coastguard Worker              zephyr-quickstart
62*61c4878aSAndroid Build Coastguard Worker
63*61c4878aSAndroid Build Coastguard Worker   .. _main Pigweed: https://pigweed.googlesource.com/pigweed/pigweed/
64*61c4878aSAndroid Build Coastguard Worker   .. _main Zephyr: https://github.com/zephyrproject-rtos/zephyr
65*61c4878aSAndroid Build Coastguard Worker
66*61c4878aSAndroid Build Coastguard Worker   This command downloads the `main Pigweed`_ and `main Zephyr`_ repos
67*61c4878aSAndroid Build Coastguard Worker   as Git submodules.
68*61c4878aSAndroid Build Coastguard Worker
69*61c4878aSAndroid Build Coastguard Worker#. Change your working directory to the quickstart repo.
70*61c4878aSAndroid Build Coastguard Worker
71*61c4878aSAndroid Build Coastguard Worker   .. tab-set::
72*61c4878aSAndroid Build Coastguard Worker
73*61c4878aSAndroid Build Coastguard Worker      .. tab-item:: Linux
74*61c4878aSAndroid Build Coastguard Worker         :sync: lin
75*61c4878aSAndroid Build Coastguard Worker
76*61c4878aSAndroid Build Coastguard Worker         .. code-block:: console
77*61c4878aSAndroid Build Coastguard Worker
78*61c4878aSAndroid Build Coastguard Worker            cd zephyr-quickstart
79*61c4878aSAndroid Build Coastguard Worker
80*61c4878aSAndroid Build Coastguard Worker      .. tab-item:: macOS
81*61c4878aSAndroid Build Coastguard Worker         :sync: mac
82*61c4878aSAndroid Build Coastguard Worker
83*61c4878aSAndroid Build Coastguard Worker         .. code-block:: console
84*61c4878aSAndroid Build Coastguard Worker
85*61c4878aSAndroid Build Coastguard Worker            cd zephyr-quickstart
86*61c4878aSAndroid Build Coastguard Worker
87*61c4878aSAndroid Build Coastguard Worker#. Bootstrap the repo.
88*61c4878aSAndroid Build Coastguard Worker
89*61c4878aSAndroid Build Coastguard Worker   .. tab-set::
90*61c4878aSAndroid Build Coastguard Worker
91*61c4878aSAndroid Build Coastguard Worker      .. tab-item:: Linux
92*61c4878aSAndroid Build Coastguard Worker         :sync: lin
93*61c4878aSAndroid Build Coastguard Worker
94*61c4878aSAndroid Build Coastguard Worker         .. code-block:: console
95*61c4878aSAndroid Build Coastguard Worker
96*61c4878aSAndroid Build Coastguard Worker            source bootstrap.sh
97*61c4878aSAndroid Build Coastguard Worker
98*61c4878aSAndroid Build Coastguard Worker      .. tab-item:: macOS
99*61c4878aSAndroid Build Coastguard Worker         :sync: mac
100*61c4878aSAndroid Build Coastguard Worker
101*61c4878aSAndroid Build Coastguard Worker         .. code-block:: console
102*61c4878aSAndroid Build Coastguard Worker
103*61c4878aSAndroid Build Coastguard Worker            source bootstrap.sh
104*61c4878aSAndroid Build Coastguard Worker
105*61c4878aSAndroid Build Coastguard Worker   Pigweed's bootstrap workflow creates a hermetic development environment
106*61c4878aSAndroid Build Coastguard Worker   for you, including toolchain setup!
107*61c4878aSAndroid Build Coastguard Worker
108*61c4878aSAndroid Build Coastguard Worker   .. tip::
109*61c4878aSAndroid Build Coastguard Worker
110*61c4878aSAndroid Build Coastguard Worker      For subsequent development sessions, activate your development environment
111*61c4878aSAndroid Build Coastguard Worker      with the following command:
112*61c4878aSAndroid Build Coastguard Worker
113*61c4878aSAndroid Build Coastguard Worker      .. tab-set::
114*61c4878aSAndroid Build Coastguard Worker
115*61c4878aSAndroid Build Coastguard Worker         .. tab-item:: Linux
116*61c4878aSAndroid Build Coastguard Worker            :sync: lin
117*61c4878aSAndroid Build Coastguard Worker
118*61c4878aSAndroid Build Coastguard Worker            .. code-block:: console
119*61c4878aSAndroid Build Coastguard Worker
120*61c4878aSAndroid Build Coastguard Worker               source activate.sh
121*61c4878aSAndroid Build Coastguard Worker
122*61c4878aSAndroid Build Coastguard Worker         .. tab-item:: macOS
123*61c4878aSAndroid Build Coastguard Worker            :sync: mac
124*61c4878aSAndroid Build Coastguard Worker
125*61c4878aSAndroid Build Coastguard Worker            .. code-block:: console
126*61c4878aSAndroid Build Coastguard Worker
127*61c4878aSAndroid Build Coastguard Worker               source activate.sh
128*61c4878aSAndroid Build Coastguard Worker
129*61c4878aSAndroid Build Coastguard Worker      The activate script is faster than the bootstrap script. You only need to
130*61c4878aSAndroid Build Coastguard Worker      run the bootstrap script after updating your Zephyr or Pigweed submodules.
131*61c4878aSAndroid Build Coastguard Worker
132*61c4878aSAndroid Build Coastguard Worker   .. _West: https://docs.zephyrproject.org/latest/develop/west/index.html
133*61c4878aSAndroid Build Coastguard Worker
134*61c4878aSAndroid Build Coastguard Worker#. Initialize your `West`_ workspace using the manifest that came with the
135*61c4878aSAndroid Build Coastguard Worker   starter repo.
136*61c4878aSAndroid Build Coastguard Worker
137*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
138*61c4878aSAndroid Build Coastguard Worker
139*61c4878aSAndroid Build Coastguard Worker      west init -l manifest
140*61c4878aSAndroid Build Coastguard Worker
141*61c4878aSAndroid Build Coastguard Worker#. Update your West workspace.
142*61c4878aSAndroid Build Coastguard Worker
143*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
144*61c4878aSAndroid Build Coastguard Worker
145*61c4878aSAndroid Build Coastguard Worker      west update
146*61c4878aSAndroid Build Coastguard Worker
147*61c4878aSAndroid Build Coastguard Worker#. (Optional) Initialize :ref:`module-pw_ide` if you plan on working in
148*61c4878aSAndroid Build Coastguard Worker   VS Code. ``pw_ide`` provides code intelligence features and makes it
149*61c4878aSAndroid Build Coastguard Worker   easy to swap targets.
150*61c4878aSAndroid Build Coastguard Worker
151*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
152*61c4878aSAndroid Build Coastguard Worker
153*61c4878aSAndroid Build Coastguard Worker      pw ide sync
154*61c4878aSAndroid Build Coastguard Worker
155*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr-build:
156*61c4878aSAndroid Build Coastguard Worker
157*61c4878aSAndroid Build Coastguard Worker---------------------
158*61c4878aSAndroid Build Coastguard WorkerBuild and run the app
159*61c4878aSAndroid Build Coastguard Worker---------------------
160*61c4878aSAndroid Build Coastguard Worker
161*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr-build-native_sim:
162*61c4878aSAndroid Build Coastguard Worker
163*61c4878aSAndroid Build Coastguard WorkerNative simulator
164*61c4878aSAndroid Build Coastguard Worker================
165*61c4878aSAndroid Build Coastguard Worker#. Build the quickstart app for `native_sim`_ and run it:
166*61c4878aSAndroid Build Coastguard Worker
167*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
168*61c4878aSAndroid Build Coastguard Worker
169*61c4878aSAndroid Build Coastguard Worker      export ZEPHYR_TOOLCHAIN_VARIANT=llvm &&
170*61c4878aSAndroid Build Coastguard Worker        west build -p -b native_sim app -t run
171*61c4878aSAndroid Build Coastguard Worker
172*61c4878aSAndroid Build Coastguard Worker   You should see the app successfully build and then log messages to
173*61c4878aSAndroid Build Coastguard Worker   ``stdout``:
174*61c4878aSAndroid Build Coastguard Worker
175*61c4878aSAndroid Build Coastguard Worker   .. code-block:: none
176*61c4878aSAndroid Build Coastguard Worker
177*61c4878aSAndroid Build Coastguard Worker      [00:00:00.000,000] <inf> pigweed:  Hello, world!
178*61c4878aSAndroid Build Coastguard Worker      [00:00:00.000,000] <inf> pigweed:  LED state: OFF
179*61c4878aSAndroid Build Coastguard Worker      [00:00:01.010,000] <inf> pigweed:  LED state: ON
180*61c4878aSAndroid Build Coastguard Worker      [00:00:02.020,000] <inf> pigweed:  LED state: OFF
181*61c4878aSAndroid Build Coastguard Worker      [00:00:03.030,000] <inf> pigweed:  LED state: ON
182*61c4878aSAndroid Build Coastguard Worker      [00:00:04.040,000] <inf> pigweed:  LED state: OFF
183*61c4878aSAndroid Build Coastguard Worker
184*61c4878aSAndroid Build Coastguard Worker   .. important::
185*61c4878aSAndroid Build Coastguard Worker
186*61c4878aSAndroid Build Coastguard Worker      When building for ``native_sim`` make sure that
187*61c4878aSAndroid Build Coastguard Worker      ``ZEPHYR_TOOLCHAIN_VARIANT`` is set to ``llvm``.
188*61c4878aSAndroid Build Coastguard Worker      See :ref:`docs-quickstart-zephyr-troubleshooting-envvar`.
189*61c4878aSAndroid Build Coastguard Worker
190*61c4878aSAndroid Build Coastguard Worker#. (Optional) Build and run an upstream Zephyr sample app:
191*61c4878aSAndroid Build Coastguard Worker
192*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
193*61c4878aSAndroid Build Coastguard Worker
194*61c4878aSAndroid Build Coastguard Worker      west build -p -b native_sim third_party/zephyr/samples/basic/blinky -t run
195*61c4878aSAndroid Build Coastguard Worker
196*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr-build-pico:
197*61c4878aSAndroid Build Coastguard Worker
198*61c4878aSAndroid Build Coastguard WorkerRaspberry Pi Pico
199*61c4878aSAndroid Build Coastguard Worker=================
200*61c4878aSAndroid Build Coastguard Worker.. _Raspberry Pi Pico: https://docs.zephyrproject.org/latest/boards/raspberrypi/rpi_pico/doc/index.html
201*61c4878aSAndroid Build Coastguard Worker.. _Pico SDK: https://github.com/raspberrypi/pico-sdk
202*61c4878aSAndroid Build Coastguard Worker.. _picotool: https://github.com/raspberrypi/picotool
203*61c4878aSAndroid Build Coastguard Worker
204*61c4878aSAndroid Build Coastguard Worker#. Build the quickstart app for `Raspberry Pi Pico`_:
205*61c4878aSAndroid Build Coastguard Worker
206*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
207*61c4878aSAndroid Build Coastguard Worker
208*61c4878aSAndroid Build Coastguard Worker      export ZEPHYR_TOOLCHAIN_VARIANT=zephyr &&
209*61c4878aSAndroid Build Coastguard Worker        west build -p -b rpi_pico app
210*61c4878aSAndroid Build Coastguard Worker
211*61c4878aSAndroid Build Coastguard Worker   .. important::
212*61c4878aSAndroid Build Coastguard Worker
213*61c4878aSAndroid Build Coastguard Worker      When building for physical boards make sure that
214*61c4878aSAndroid Build Coastguard Worker      ``ZEPHYR_TOOLCHAIN_VARIANT`` is set to ``zephyr``.
215*61c4878aSAndroid Build Coastguard Worker      See :ref:`docs-quickstart-zephyr-troubleshooting-envvar`.
216*61c4878aSAndroid Build Coastguard Worker
217*61c4878aSAndroid Build Coastguard Worker#. Install the `Pico SDK`_ and `picotool`_ so that you can easily
218*61c4878aSAndroid Build Coastguard Worker   flash the quickstart app onto your Pico over USB without needing to
219*61c4878aSAndroid Build Coastguard Worker   manually put your Pico board into ``BOOTSEL`` mode:
220*61c4878aSAndroid Build Coastguard Worker
221*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
222*61c4878aSAndroid Build Coastguard Worker
223*61c4878aSAndroid Build Coastguard Worker      pw package install pico_sdk
224*61c4878aSAndroid Build Coastguard Worker      pw package install picotool
225*61c4878aSAndroid Build Coastguard Worker
226*61c4878aSAndroid Build Coastguard Worker#. Add the following rules to ``/etc/udev/rules.d/49-pico.rules`` or
227*61c4878aSAndroid Build Coastguard Worker   ``/usr/lib/udev/rules.d/49-pico.rules``. Create the file if it doesn't exist.
228*61c4878aSAndroid Build Coastguard Worker
229*61c4878aSAndroid Build Coastguard Worker   .. literalinclude:: /targets/rp2040/49-pico.rules
230*61c4878aSAndroid Build Coastguard Worker      :language: linuxconfig
231*61c4878aSAndroid Build Coastguard Worker      :start-at: # Raspberry
232*61c4878aSAndroid Build Coastguard Worker
233*61c4878aSAndroid Build Coastguard Worker#. Apply the rules:
234*61c4878aSAndroid Build Coastguard Worker
235*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
236*61c4878aSAndroid Build Coastguard Worker
237*61c4878aSAndroid Build Coastguard Worker      sudo udevadm control --reload-rules
238*61c4878aSAndroid Build Coastguard Worker      sudo udevadm trigger
239*61c4878aSAndroid Build Coastguard Worker
240*61c4878aSAndroid Build Coastguard Worker#. Flash the app onto your board:
241*61c4878aSAndroid Build Coastguard Worker
242*61c4878aSAndroid Build Coastguard Worker   .. code-block:: console
243*61c4878aSAndroid Build Coastguard Worker
244*61c4878aSAndroid Build Coastguard Worker      picotool reboot -f -u &&
245*61c4878aSAndroid Build Coastguard Worker        sleep 3 &&
246*61c4878aSAndroid Build Coastguard Worker        picotool load -x ./build/zephyr/zephyr.elf
247*61c4878aSAndroid Build Coastguard Worker
248*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr-troubleshooting:
249*61c4878aSAndroid Build Coastguard Worker
250*61c4878aSAndroid Build Coastguard Worker---------------
251*61c4878aSAndroid Build Coastguard WorkerTroubleshooting
252*61c4878aSAndroid Build Coastguard Worker---------------
253*61c4878aSAndroid Build Coastguard Worker
254*61c4878aSAndroid Build Coastguard Worker.. _docs-quickstart-zephyr-troubleshooting-envvar:
255*61c4878aSAndroid Build Coastguard Worker
256*61c4878aSAndroid Build Coastguard Worker``fatal error: bits/c++config.h: No such file or directory``
257*61c4878aSAndroid Build Coastguard Worker============================================================
258*61c4878aSAndroid Build Coastguard WorkerIf you see a compilation error about not being able to find
259*61c4878aSAndroid Build Coastguard Worker``<bits/c++config.h>``, make sure that your ``ZEPHYR_TOOLCHAIN_VARIANT``
260*61c4878aSAndroid Build Coastguard Workerenvironment variable is correctly set:
261*61c4878aSAndroid Build Coastguard Worker
262*61c4878aSAndroid Build Coastguard Worker* Set it to ``llvm`` when building for ``native_sim``.
263*61c4878aSAndroid Build Coastguard Worker* Set it to ``zephyr`` when building for physical boards.
264*61c4878aSAndroid Build Coastguard Worker
265*61c4878aSAndroid Build Coastguard WorkerHere's an example of the error:
266*61c4878aSAndroid Build Coastguard Worker
267*61c4878aSAndroid Build Coastguard Worker.. code-block:: console
268*61c4878aSAndroid Build Coastguard Worker
269*61c4878aSAndroid Build Coastguard Worker   ...
270*61c4878aSAndroid Build Coastguard Worker   [2/109] Generating include/generated/version.h
271*61c4878aSAndroid Build Coastguard Worker   -- Zephyr version: 3.6.99 (~/zephyr-quickstart/third_party/zephyr), build: v3.6.0-1976-g8a88cd4805b0
272*61c4878aSAndroid Build Coastguard Worker   [10/109] Building CXX object modules/pigweed/pw_string/CMakeFiles/pw_string.to_string.dir/type_to_string.cc.obj
273*61c4878aSAndroid Build Coastguard Worker   FAILED: modules/pigweed/pw_string/CMakeFiles/pw_string.to_string.dir/type_to_string.cc.obj
274*61c4878aSAndroid Build Coastguard Worker   ccache /usr/bin/g++
275*61c4878aSAndroid Build Coastguard Worker   ...
276*61c4878aSAndroid Build Coastguard Worker   -c ~/zephyr-quickstart/third_party/pigweed/pw_string/type_to_string.cc
277*61c4878aSAndroid Build Coastguard Worker   In file included from ~/zephyr-quickstart/third_party/pigweed/pw_string/public/pw_string/type_to_string.h:20,
278*61c4878aSAndroid Build Coastguard Worker                    from ~/zephyr-quickstart/third_party/pigweed/pw_string/type_to_string.cc:15:
279*61c4878aSAndroid Build Coastguard Worker   /usr/include/c++/13/cstdint:38:10: fatal error: bits/c++config.h: No such file or directory
280*61c4878aSAndroid Build Coastguard Worker      38 | #include <bits/c++config.h>
281*61c4878aSAndroid Build Coastguard Worker         |          ^~~~~~~~~~~~~~~~~~
282*61c4878aSAndroid Build Coastguard Worker   compilation terminated.
283*61c4878aSAndroid Build Coastguard Worker   ...
284*61c4878aSAndroid Build Coastguard Worker   [12/109] Building CXX object modules/pigweed/pw_string/CMakeFiles/pw_string.builder.dir/string_builder.cc.obj
285*61c4878aSAndroid Build Coastguard Worker   FAILED: modules/pigweed/pw_string/CMakeFiles/pw_string.builder.dir/string_builder.cc.obj
286*61c4878aSAndroid Build Coastguard Worker   ccache /usr/bin/g++
287*61c4878aSAndroid Build Coastguard Worker   ...
288*61c4878aSAndroid Build Coastguard Worker   -c ~/zephyr-quickstart/third_party/pigweed/pw_string/string_builder.cc
289*61c4878aSAndroid Build Coastguard Worker   In file included from /usr/include/c++/13/algorithm:60,
290*61c4878aSAndroid Build Coastguard Worker                    from ~/zephyr-quickstart/third_party/pigweed/pw_string/public/pw_string/string_builder.h:21,
291*61c4878aSAndroid Build Coastguard Worker                    from ~/zephyr-quickstart/third_party/pigweed/pw_string/string_builder.cc:15:
292*61c4878aSAndroid Build Coastguard Worker   /usr/include/c++/13/bits/stl_algobase.h:59:10: fatal error: bits/c++config.h: No such file or directory
293*61c4878aSAndroid Build Coastguard Worker      59 | #include <bits/c++config.h>
294*61c4878aSAndroid Build Coastguard Worker         |          ^~~~~~~~~~~~~~~~~~
295*61c4878aSAndroid Build Coastguard Worker   compilation terminated.
296*61c4878aSAndroid Build Coastguard Worker   [15/109] Building C object zephyr/CMakeFiles/offsets.dir/arch/posix/core/offsets/offsets.c.obj
297*61c4878aSAndroid Build Coastguard Worker   ninja: build stopped: subcommand failed.
298*61c4878aSAndroid Build Coastguard Worker   FATAL ERROR: command exited with status 1: ~/zephyr-quickstart/environment/cipd/packages/cmake/bin/cmake
299*61c4878aSAndroid Build Coastguard Worker     --build ~/zephyr-quickstart/build --target run
300