• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2019 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
15import("//build_overrides/pigweed.gni")
16
17import("$dir_pw_build/python.gni")
18import("$dir_pw_build/python_action.gni")
19import("$dir_pw_docgen/docs.gni")
20
21pw_doc_group("static_assets") {
22  inputs = [
23    "_static/css/pigweed.css",
24    "_static/js/changelog.js",
25    "_static/js/pigweed.js",
26  ]
27}
28
29# Note: These may be useful for downstream projects, which is why they are
30# split out from the overall docgen target below.
31pw_doc_group("core_docs") {
32  inputs = [
33    "$dir_pigweed/.bazelversion",
34    "$dir_pigweed/Kconfig.zephyr",
35    "$dir_pw_async2/examples/coro_blinky_loop.cc",
36    "$dir_pw_async2/examples/count.cc",
37    "$dir_pw_async2/public/pw_async2/coro.h",
38    "$dir_pw_build/pigweed_recommended.bazelrc",
39    "$dir_pw_build/pigweed.bazelrc",
40    "$dir_pw_build/py/gn_tests/BUILD.gn",
41    "$dir_pw_build/py/pw_build/generate_python_wheel_cache.py",
42    "$dir_pw_build/python.gni",
43    "$dir_pw_build/python_gn_args.gni",
44    "_extensions/bug.py",
45    "_extensions/sitemap.py",
46    "layout/layout.html",
47    "run_doxygen.py",
48  ]
49  sources = [
50    "3p/index.rst",
51    "blog/01-kudzu.rst",
52    "blog/02-bazel-feature-flags.rst",
53    "blog/03-pigweed-sdk.rst",
54    "blog/04-fixed-point.rst",
55    "blog/05-coroutines.rst",
56    "blog/06-better-cpp-toolchains.rst",
57    "blog/07-bazelcon-2024.rst",
58    "blog/08-bazel-docgen.rst",
59    "blog/index.rst",
60    "blog/rss.xml",
61    "code_of_conduct.rst",
62    "code_reviews.rst",
63    "community/index.rst",
64    "concepts/index.rst",
65    "contributing/docs/build.rst",
66    "contributing/docs/changelog.rst",
67    "contributing/docs/index.rst",
68    "contributing/docs/modules.rst",
69    "contributing/docs/website.rst",
70    "contributing/index.rst",
71    "embedded_cpp_guide.rst",
72    "facades.rst",
73    "faq.rst",
74    "get_started/bazel.rst",
75    "get_started/bazel_integration.rst",
76    "get_started/first_time_setup.rst",
77    "get_started/github_actions.rst",
78    "get_started/index.rst",
79    "get_started/install_bazel.rst",
80    "get_started/upstream.rst",
81    "get_started/zephyr.rst",
82    "glossary.rst",
83    "infra/bazel_lockfile.rst",
84    "infra/ci_cq_intro.rst",
85    "infra/index.rst",
86    "infra/rollers.rst",
87    "mission.rst",
88    "module_structure.rst",
89    "os/index.rst",
90    "os/zephyr/index.rst",
91    "os/zephyr/kconfig.rst",
92    "overview.rst",
93    "showcases/index.rst",
94    "showcases/sense/index.rst",
95    "showcases/sense/tutorial/automate.rst",
96    "showcases/sense/tutorial/bazel_cloud.rst",
97    "showcases/sense/tutorial/build.rst",
98    "showcases/sense/tutorial/code_intelligence.rst",
99    "showcases/sense/tutorial/crash_handler.rst",
100    "showcases/sense/tutorial/device_tests.rst",
101    "showcases/sense/tutorial/explore.rst",
102    "showcases/sense/tutorial/factory.rst",
103    "showcases/sense/tutorial/flash.rst",
104    "showcases/sense/tutorial/host_sim.rst",
105    "showcases/sense/tutorial/host_tests.rst",
106    "showcases/sense/tutorial/index.rst",
107    "showcases/sense/tutorial/outro.rst",
108    "showcases/sense/tutorial/production.rst",
109    "showcases/sense/tutorial/rpc.rst",
110    "showcases/sense/tutorial/setup.rst",
111    "showcases/sense/tutorial/web.rst",
112    "size_optimizations.rst",
113    "style/bazel.rst",
114    "style/cli.rst",
115    "style/commit_message.rst",
116    "style/cpp.rst",
117    "style/doxygen.rst",
118    "style/protobuf.rst",
119    "style/python.rst",
120    "style/rest.rst",
121    "style/writing.rst",
122    "style_guide.rst",
123  ]
124}
125
126# Documentation for upstream Pigweed targets.
127group("target_docs") {
128  deps = [
129    "$dir_pigweed/targets/android:target_docs",
130    "$dir_pigweed/targets/apollo4:target_docs",
131    "$dir_pigweed/targets/apollo4_pw_system:target_docs",
132    "$dir_pigweed/targets/arduino:target_docs",
133    "$dir_pigweed/targets/docs:target_docs",
134    "$dir_pigweed/targets/emcraft_sf2_som:docs",
135    "$dir_pigweed/targets/host:target_docs",
136    "$dir_pigweed/targets/host_device_simulator:target_docs",
137    "$dir_pigweed/targets/lm3s6965evb_qemu:target_docs",
138    "$dir_pigweed/targets/mimxrt595_evk:target_docs",
139    "$dir_pigweed/targets/mimxrt595_evk_freertos:target_docs",
140    "$dir_pigweed/targets/rp2040:target_docs",
141    "$dir_pigweed/targets/stm32f429i_disc1:target_docs",
142    "$dir_pigweed/targets/stm32f429i_disc1_stm32cube:target_docs",
143  ]
144}
145
146group("module_docs") {
147  deps = pw_module_docs
148}
149
150group("third_party_docs") {
151  deps = [
152    "$dir_pigweed/third_party/abseil-cpp:docs",
153    "$dir_pigweed/third_party/boringssl:docs",
154    "$dir_pigweed/third_party/emboss:docs",
155    "$dir_pigweed/third_party/freertos:docs",
156    "$dir_pigweed/third_party/fuchsia:docs",
157    "$dir_pigweed/third_party/fuzztest:docs",
158    "$dir_pigweed/third_party/googletest:docs",
159    "$dir_pigweed/third_party/nanopb:docs",
160    "$dir_pigweed/third_party/perfetto:docs",
161    "$dir_pigweed/third_party/re2:docs",
162    "$dir_pigweed/third_party/tinyusb:docs",
163  ]
164}
165
166# All sources with doxygen comment blocks.
167_doxygen_input_files = [  # keep-sorted: start
168  "$dir_pw_alignment/public/pw_alignment/alignment.h",
169  "$dir_pw_allocator/block/public/pw_allocator/block/alignable.h",
170  "$dir_pw_allocator/block/public/pw_allocator/block/allocatable.h",
171  "$dir_pw_allocator/block/public/pw_allocator/block/basic.h",
172  "$dir_pw_allocator/block/public/pw_allocator/block/contiguous.h",
173  "$dir_pw_allocator/block/public/pw_allocator/block/detailed_block.h",
174  "$dir_pw_allocator/block/public/pw_allocator/block/iterable.h",
175  "$dir_pw_allocator/block/public/pw_allocator/block/poisonable.h",
176  "$dir_pw_allocator/block/public/pw_allocator/block/result.h",
177  "$dir_pw_allocator/block/public/pw_allocator/block/small_alignable_block.h",
178  "$dir_pw_allocator/block/public/pw_allocator/block/small_block.h",
179  "$dir_pw_allocator/block/public/pw_allocator/block/tiny_block.h",
180  "$dir_pw_allocator/block/public/pw_allocator/block/with_layout.h",
181  "$dir_pw_allocator/bucket/public/pw_allocator/bucket/base.h",
182  "$dir_pw_allocator/bucket/public/pw_allocator/bucket/fast_sorted.h",
183  "$dir_pw_allocator/bucket/public/pw_allocator/bucket/sequenced.h",
184  "$dir_pw_allocator/bucket/public/pw_allocator/bucket/sorted.h",
185  "$dir_pw_allocator/bucket/public/pw_allocator/bucket/unordered.h",
186  "$dir_pw_allocator/public/pw_allocator/allocator.h",
187  "$dir_pw_allocator/public/pw_allocator/allocator_as_pool.h",
188  "$dir_pw_allocator/public/pw_allocator/best_fit.h",
189  "$dir_pw_allocator/public/pw_allocator/block_allocator.h",
190  "$dir_pw_allocator/public/pw_allocator/bucket_allocator.h",
191  "$dir_pw_allocator/public/pw_allocator/buddy_allocator.h",
192  "$dir_pw_allocator/public/pw_allocator/buffer.h",
193  "$dir_pw_allocator/public/pw_allocator/bump_allocator.h",
194  "$dir_pw_allocator/public/pw_allocator/capability.h",
195  "$dir_pw_allocator/public/pw_allocator/chunk_pool.h",
196  "$dir_pw_allocator/public/pw_allocator/config.h",
197  "$dir_pw_allocator/public/pw_allocator/deallocator.h",
198  "$dir_pw_allocator/public/pw_allocator/dl_allocator.h",
199  "$dir_pw_allocator/public/pw_allocator/fallback_allocator.h",
200  "$dir_pw_allocator/public/pw_allocator/first_fit.h",
201  "$dir_pw_allocator/public/pw_allocator/fragmentation.h",
202  "$dir_pw_allocator/public/pw_allocator/fuzzing.h",
203  "$dir_pw_allocator/public/pw_allocator/layout.h",
204  "$dir_pw_allocator/public/pw_allocator/libc_allocator.h",
205  "$dir_pw_allocator/public/pw_allocator/metrics.h",
206  "$dir_pw_allocator/public/pw_allocator/null_allocator.h",
207  "$dir_pw_allocator/public/pw_allocator/pmr_allocator.h",
208  "$dir_pw_allocator/public/pw_allocator/pool.h",
209  "$dir_pw_allocator/public/pw_allocator/synchronized_allocator.h",
210  "$dir_pw_allocator/public/pw_allocator/test_harness.h",
211  "$dir_pw_allocator/public/pw_allocator/testing.h",
212  "$dir_pw_allocator/public/pw_allocator/tlsf_allocator.h",
213  "$dir_pw_allocator/public/pw_allocator/tracking_allocator.h",
214  "$dir_pw_allocator/public/pw_allocator/typed_pool.h",
215  "$dir_pw_allocator/public/pw_allocator/unique_ptr.h",
216  "$dir_pw_allocator/public/pw_allocator/worst_fit.h",
217  "$dir_pw_allocator/size_report/public/pw_allocator/size_report/size_report.h",
218  "$dir_pw_analog/public/pw_analog/analog_input.h",
219  "$dir_pw_analog/public/pw_analog/microvolt_input.h",
220  "$dir_pw_async/public/pw_async/context.h",
221  "$dir_pw_async/public/pw_async/dispatcher.h",
222  "$dir_pw_async/public/pw_async/fake_dispatcher_fixture.h",
223  "$dir_pw_async/public/pw_async/function_dispatcher.h",
224  "$dir_pw_async/public/pw_async/heap_dispatcher.h",
225  "$dir_pw_async/public/pw_async/task.h",
226  "$dir_pw_async/public/pw_async/task_function.h",
227  "$dir_pw_async2/public/pw_async2/allocate_task.h",
228  "$dir_pw_async2/public/pw_async2/coro.h",
229  "$dir_pw_async2/public/pw_async2/coro_or_else_task.h",
230  "$dir_pw_async2/public/pw_async2/dispatcher.h",
231  "$dir_pw_async2/public/pw_async2/dispatcher_base.h",
232  "$dir_pw_async2/public/pw_async2/enqueue_heap_func.h",
233  "$dir_pw_async2/public/pw_async2/join.h",
234  "$dir_pw_async2/public/pw_async2/once_sender.h",
235  "$dir_pw_async2/public/pw_async2/pend_func_awaitable.h",
236  "$dir_pw_async2/public/pw_async2/pend_func_task.h",
237  "$dir_pw_async2/public/pw_async2/pendable_as_task.h",
238  "$dir_pw_async2/public/pw_async2/poll.h",
239  "$dir_pw_async2/public/pw_async2/simulated_time_provider.h",
240  "$dir_pw_async2/public/pw_async2/system_time_provider.h",
241  "$dir_pw_async2/public/pw_async2/time_provider.h",
242  "$dir_pw_async2_basic/public_overrides/pw_async2/dispatcher_native.h",
243  "$dir_pw_async_basic/public/pw_async_basic/dispatcher.h",
244  "$dir_pw_base64/public/pw_base64/base64.h",
245  "$dir_pw_bloat/public/pw_bloat/bloat_this_binary.h",
246  "$dir_pw_bluetooth/public/pw_bluetooth/controller2.h",
247  "$dir_pw_bluetooth/public/pw_bluetooth/gatt/client2.h",
248  "$dir_pw_bluetooth/public/pw_bluetooth/gatt/server2.h",
249  "$dir_pw_bluetooth/public/pw_bluetooth/low_energy/central2.h",
250  "$dir_pw_bluetooth/public/pw_bluetooth/low_energy/channel.h",
251  "$dir_pw_bluetooth/public/pw_bluetooth/low_energy/connection2.h",
252  "$dir_pw_bluetooth/public/pw_bluetooth/low_energy/peripheral2.h",
253  "$dir_pw_bluetooth_proxy/public/pw_bluetooth_proxy/h4_packet.h",
254  "$dir_pw_bluetooth_proxy/public/pw_bluetooth_proxy/proxy_host.h",
255  "$dir_pw_bluetooth_sapphire/public/pw_bluetooth_sapphire/central.h",
256  "$dir_pw_bluetooth_sapphire/public/pw_bluetooth_sapphire/fake_lease_provider.h",
257  "$dir_pw_bluetooth_sapphire/public/pw_bluetooth_sapphire/lease.h",
258  "$dir_pw_bluetooth_sapphire/public/pw_bluetooth_sapphire/null_lease_provider.h",
259  "$dir_pw_bluetooth_sapphire/public/pw_bluetooth_sapphire/peripheral.h",
260  "$dir_pw_bluetooth_sapphire/public/pw_bluetooth_sapphire/power_delegate.h",
261  "$dir_pw_build/public/pw_build/linker_symbol.h",
262  "$dir_pw_build/public/pw_build/must_place.ld.h",
263  "$dir_pw_bytes/public/pw_bytes/alignment.h",
264  "$dir_pw_bytes/public/pw_bytes/bit.h",
265  "$dir_pw_bytes/public/pw_bytes/byte_builder.h",
266  "$dir_pw_bytes/public/pw_bytes/packed_ptr.h",
267  "$dir_pw_channel/public/pw_channel/channel.h",
268  "$dir_pw_channel/public/pw_channel/epoll_channel.h",
269  "$dir_pw_channel/public/pw_channel/forwarding_channel.h",
270  "$dir_pw_channel/public/pw_channel/loopback_channel.h",
271  "$dir_pw_channel/public/pw_channel/rp2_stdio_channel.h",
272  "$dir_pw_channel/public/pw_channel/stream_channel.h",
273  "$dir_pw_chre/public/pw_chre/chre.h",
274  "$dir_pw_chre/public/pw_chre/host_link.h",
275  "$dir_pw_chrono/public/pw_chrono/simulated_system_clock.h",
276  "$dir_pw_chrono/public/pw_chrono/system_clock.h",
277  "$dir_pw_chrono/public/pw_chrono/system_timer.h",
278  "$dir_pw_chrono/public/pw_chrono/virtual_clock.h",
279  "$dir_pw_clock_tree/public/pw_clock_tree/clock_tree.h",
280  "$dir_pw_clock_tree_mcuxpresso/public/pw_clock_tree_mcuxpresso/clock_tree.h",
281  "$dir_pw_containers/public/pw_containers/algorithm.h",
282  "$dir_pw_containers/public/pw_containers/filtered_view.h",
283  "$dir_pw_containers/public/pw_containers/inline_deque.h",
284  "$dir_pw_containers/public/pw_containers/inline_queue.h",
285  "$dir_pw_containers/public/pw_containers/inline_var_len_entry_queue.h",
286  "$dir_pw_containers/public/pw_containers/internal/aa_tree.h",
287  "$dir_pw_containers/public/pw_containers/internal/intrusive_list.h",
288  "$dir_pw_containers/public/pw_containers/intrusive_forward_list.h",
289  "$dir_pw_containers/public/pw_containers/intrusive_list.h",
290  "$dir_pw_containers/public/pw_containers/intrusive_map.h",
291  "$dir_pw_containers/public/pw_containers/intrusive_multimap.h",
292  "$dir_pw_containers/public/pw_containers/intrusive_multiset.h",
293  "$dir_pw_containers/public/pw_containers/intrusive_set.h",
294  "$dir_pw_containers/public/pw_containers/vector.h",
295  "$dir_pw_crypto/public/pw_crypto/aes.h",
296  "$dir_pw_crypto/public/pw_crypto/ecdsa.h",
297  "$dir_pw_crypto/public/pw_crypto/sha256.h",
298  "$dir_pw_digital_io/public/pw_digital_io/digital_io.h",
299  "$dir_pw_digital_io/public/pw_digital_io/digital_io_mock.h",
300  "$dir_pw_digital_io_mcuxpresso/public/pw_digital_io_mcuxpresso/digital_io.h",
301  "$dir_pw_digital_io_mcuxpresso/public/pw_digital_io_mcuxpresso/pint.h",
302  "$dir_pw_display/public/pw_display/color.h",
303  "$dir_pw_elf/public/pw_elf/reader.h",
304  "$dir_pw_function/public/pw_function/function.h",
305  "$dir_pw_function/public/pw_function/pointer.h",
306  "$dir_pw_function/public/pw_function/scope_guard.h",
307  "$dir_pw_hdlc/public/pw_hdlc/decoder.h",
308  "$dir_pw_hdlc/public/pw_hdlc/encoder.h",
309  "$dir_pw_hdlc/public/pw_hdlc/router.h",
310  "$dir_pw_hex_dump/public/pw_hex_dump/hex_dump.h",
311  "$dir_pw_hex_dump/public/pw_hex_dump/log_bytes.h",
312  "$dir_pw_i2c/public/pw_i2c/address.h",
313  "$dir_pw_i2c/public/pw_i2c/device.h",
314  "$dir_pw_i2c/public/pw_i2c/i2c_service.h",
315  "$dir_pw_i2c/public/pw_i2c/initiator.h",
316  "$dir_pw_i2c/public/pw_i2c/initiator_gmock.h",
317  "$dir_pw_i2c/public/pw_i2c/initiator_mock.h",
318  "$dir_pw_i2c/public/pw_i2c/register_device.h",
319  "$dir_pw_i2c_linux/public/pw_i2c_linux/initiator.h",
320  "$dir_pw_interrupt/public/pw_interrupt/context.h",
321  "$dir_pw_json/public/pw_json/builder.h",
322  "$dir_pw_kvs/public/pw_kvs/key_value_store.h",
323  "$dir_pw_kvs/pw_kvs_private/config.h",
324  "$dir_pw_log/public/pw_log/tokenized_args.h",
325  "$dir_pw_log_string/public/pw_log_string/handler.h",
326  "$dir_pw_log_tokenized/public/pw_log_tokenized/base64.h",
327  "$dir_pw_log_tokenized/public/pw_log_tokenized/config.h",
328  "$dir_pw_log_tokenized/public/pw_log_tokenized/handler.h",
329  "$dir_pw_log_tokenized/public/pw_log_tokenized/metadata.h",
330  "$dir_pw_malloc/public/pw_malloc/config.h",
331  "$dir_pw_malloc/public/pw_malloc/malloc.h",
332  "$dir_pw_multibuf/public/pw_multibuf/allocator.h",
333  "$dir_pw_multibuf/public/pw_multibuf/allocator_async.h",
334  "$dir_pw_multibuf/public/pw_multibuf/chunk.h",
335  "$dir_pw_multibuf/public/pw_multibuf/from_span.h",
336  "$dir_pw_multibuf/public/pw_multibuf/header_chunk_region_tracker.h",
337  "$dir_pw_multibuf/public/pw_multibuf/multibuf.h",
338  "$dir_pw_multibuf/public/pw_multibuf/simple_allocator.h",
339  "$dir_pw_multibuf/public/pw_multibuf/simple_allocator_for_test.h",
340  "$dir_pw_multibuf/public/pw_multibuf/single_chunk_region_tracker.h",
341  "$dir_pw_multibuf/public/pw_multibuf/stream.h",
342  "$dir_pw_numeric/public/pw_numeric/checked_arithmetic.h",
343  "$dir_pw_numeric/public/pw_numeric/integer_division.h",
344  "$dir_pw_perf_test/public/pw_perf_test/event_handler.h",
345  "$dir_pw_perf_test/public/pw_perf_test/perf_test.h",
346  "$dir_pw_polyfill/public/pw_polyfill/language_feature_macros.h",
347  "$dir_pw_polyfill/public/pw_polyfill/standard.h",
348  "$dir_pw_preprocessor/public/pw_preprocessor/apply.h",
349  "$dir_pw_preprocessor/public/pw_preprocessor/compiler.h",
350  "$dir_pw_protobuf/public/pw_protobuf/find.h",
351  "$dir_pw_random/public/pw_random/random.h",
352  "$dir_pw_random/public/pw_random/xor_shift.h",
353  "$dir_pw_rpc/public/pw_rpc/channel.h",
354  "$dir_pw_rpc/public/pw_rpc/internal/config.h",
355  "$dir_pw_rpc/public/pw_rpc/synchronous_call.h",
356  "$dir_pw_span/public/pw_span/cast.h",
357  "$dir_pw_span/public/pw_span/internal/config.h",
358  "$dir_pw_spi/public/pw_spi/chip_selector.h",
359  "$dir_pw_spi/public/pw_spi/chip_selector_digital_out.h",
360  "$dir_pw_status/public/pw_status/status.h",
361  "$dir_pw_status/public/pw_status/status_with_size.h",
362  "$dir_pw_status/public/pw_status/try.h",
363  "$dir_pw_stream/public/pw_stream/stream.h",
364  "$dir_pw_stream_uart_linux/public/pw_stream_uart_linux/stream.h",
365  "$dir_pw_string/public/pw_string/format.h",
366  "$dir_pw_string/public/pw_string/string.h",
367  "$dir_pw_string/public/pw_string/string_builder.h",
368  "$dir_pw_string/public/pw_string/utf_codecs.h",
369  "$dir_pw_string/public/pw_string/util.h",
370  "$dir_pw_sync/public/pw_sync/binary_semaphore.h",
371  "$dir_pw_sync/public/pw_sync/borrow.h",
372  "$dir_pw_sync/public/pw_sync/counting_semaphore.h",
373  "$dir_pw_sync/public/pw_sync/inline_borrowable.h",
374  "$dir_pw_sync/public/pw_sync/interrupt_spin_lock.h",
375  "$dir_pw_sync/public/pw_sync/lock_annotations.h",
376  "$dir_pw_sync/public/pw_sync/mutex.h",
377  "$dir_pw_sync/public/pw_sync/thread_notification.h",
378  "$dir_pw_sync/public/pw_sync/timed_borrow.h",
379  "$dir_pw_sync/public/pw_sync/timed_mutex.h",
380  "$dir_pw_sync/public/pw_sync/timed_thread_notification.h",
381  "$dir_pw_sync/public/pw_sync/virtual_basic_lockable.h",
382  "$dir_pw_sys_io/public/pw_sys_io/sys_io.h",
383  "$dir_pw_system/public/pw_system/system.h",
384  "$dir_pw_third_party/freertos/pw_assert_stack_overflow_hook.cc",
385  "$dir_pw_third_party/freertos/static_task_allocation.cc",
386  "$dir_pw_thread/public/pw_thread/attrs.h",
387  "$dir_pw_thread/public/pw_thread/context.h",
388  "$dir_pw_thread/public/pw_thread/internal/priority.h",
389  "$dir_pw_thread/public/pw_thread/options.h",
390  "$dir_pw_thread/public/pw_thread/priority.h",
391  "$dir_pw_thread/public/pw_thread/stack.h",
392  "$dir_pw_thread/public/pw_thread/test_thread_context.h",
393  "$dir_pw_thread/public/pw_thread/thread.h",
394  "$dir_pw_tokenizer/public/pw_tokenizer/config.h",
395  "$dir_pw_tokenizer/public/pw_tokenizer/detokenize.h",
396  "$dir_pw_tokenizer/public/pw_tokenizer/encode_args.h",
397  "$dir_pw_tokenizer/public/pw_tokenizer/enum.h",
398  "$dir_pw_tokenizer/public/pw_tokenizer/nested_tokenization.h",
399  "$dir_pw_tokenizer/public/pw_tokenizer/token_database.h",
400  "$dir_pw_tokenizer/public/pw_tokenizer/tokenize.h",
401  "$dir_pw_toolchain/public/pw_toolchain/constexpr_tag.h",
402  "$dir_pw_toolchain/public/pw_toolchain/globals.h",
403  "$dir_pw_toolchain/public/pw_toolchain/infinite_loop.h",
404  "$dir_pw_toolchain/public/pw_toolchain/no_destructor.h",
405  "$dir_pw_transfer/public/pw_transfer/atomic_file_transfer_handler.h",
406  "$dir_pw_uart/public/pw_uart/blocking_adapter.h",
407  "$dir_pw_uart/public/pw_uart/stream.h",
408  "$dir_pw_uart/public/pw_uart/uart.h",
409  "$dir_pw_uart/public/pw_uart/uart_base.h",
410  "$dir_pw_uart/public/pw_uart/uart_non_blocking.h",
411  "$dir_pw_unit_test/light_public_overrides/pw_unit_test/framework_backend.h",
412  "$dir_pw_unit_test/public/pw_unit_test/config.h",
413  "$dir_pw_unit_test/public/pw_unit_test/constexpr.h",
414  "$dir_pw_unit_test/public/pw_unit_test/event_handler.h",
415  "$dir_pw_unit_test/public/pw_unit_test/googletest_handler_adapter.h",
416  "$dir_pw_unit_test/public/pw_unit_test/googletest_style_event_handler.h",
417  "$dir_pw_unit_test/public/pw_unit_test/logging_event_handler.h",
418  "$dir_pw_unit_test/public/pw_unit_test/multi_event_handler.h",
419  "$dir_pw_unit_test/public/pw_unit_test/printf_event_handler.h",
420  "$dir_pw_unit_test/public/pw_unit_test/simple_printing_event_handler.h",
421  "$dir_pw_unit_test/public/pw_unit_test/static_library_support.h",
422  "$dir_pw_unit_test/public/pw_unit_test/status_macros.h",
423  "$dir_pw_unit_test/public/pw_unit_test/test_record_event_handler.h",
424  "$dir_pw_varint/public/pw_varint/stream.h",
425  "$dir_pw_varint/public/pw_varint/varint.h",
426  "$dir_pw_work_queue/public/pw_work_queue/work_queue.h",
427]  # keep-sorted: end
428
429pw_python_action("generate_doxygen") {
430  _output_dir = "docs/doxygen"
431  script = "run_doxygen.py"
432  inputs = [
433    "//PIGWEED_MODULES",
434    "Doxyfile",
435  ]
436  inputs += _doxygen_input_files
437  args = [
438    "--gn-root",
439    rebase_path("//", root_build_dir),
440    "--pigweed-modules-file",
441    rebase_path("//PIGWEED_MODULES", root_build_dir),
442    "--output-dir",
443    _output_dir,
444    "--doxygen-config",
445    rebase_path("Doxyfile", root_build_dir),
446    "--include-paths",
447  ]
448  args += rebase_path(_doxygen_input_files, root_build_dir)
449  outputs = [
450    "$root_build_dir/$_output_dir/html/index.html",
451    "$root_build_dir/$_output_dir/xml/index.xml",
452  ]
453}
454
455pw_doc_gen("docs") {
456  conf = "conf.py"
457  sources = [
458    # Note: These must use the "docs" prefix for links and image references. In
459    # contrast, the pw_doc_group above should not use the docs prefix.
460    "automated_analysis.rst",
461    "bazel_compatibility.rst",
462    "build_system.rst",
463    "changelog.rst",
464    "index.rst",
465    "modules.rst",
466    "python_build.rst",
467
468    # TODO: b/388905813 - Delete this file.
469    "size_report_notice",
470    "targets.rst",
471    "third_party_support.rst",
472    "toolchain.rst",
473  ]
474  output_directory = target_gen_dir
475  deps = [
476    ":core_docs",
477    ":generate_doxygen",
478    ":module_docs",
479    ":static_assets",
480    ":target_docs",
481    ":third_party_docs",
482    "$dir_pigweed/kudzu:docs",
483    "$dir_pigweed/seed:docs",
484  ]
485
486  # Extra Python deps are required to set the PYTHONPATH so
487  # automodule, autoclass or autofunction RST directives work in
488  # sphinx.
489  python_deps = [ "$dir_pw_env_setup:core_pigweed_python_packages" ]
490}
491