• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1.. _toolchain:
2
3=================
4Pigweed Toolchain
5=================
6Pigweed Toolchain is an LLVM/Clang toolchain for embedded use cases.
7
8.. _toolchain-background:
9
10----------
11Background
12----------
13Our toolchain philosophy is to co-evolve the support for embedded use cases in
14the LLVM project as we onboard new projects to use the Clang/LLVM toolchain
15distributed by us. Teams at Google that we partner with make contributions to the
16LLVM project regularly. Recent contributions include:
17
18* Compiler optimizations
19* LLVM ``libc`` library support
20* Improvements to the LLD linker
21
22.. _live at HEAD: https://abseil.io/about/philosophy#we-recommend-that-you-choose-to-live-at-head
23
24We follow the `live at HEAD`_ model and do all development in LLVM which enables
25us to rapidly adopt new features and provide fast feedback to the LLVM community.
26We continuously build new versions of the Clang toolchain binaries and distribute
27them to our users. Pigweed's toolchain version is periodically updated along with
28code changes necessary to the Pigweed codebase itself to be compatible with and
29take advantage of new toolchain features as soon as they land.
30
31For more information, check out the following presentation:
32
33.. raw:: html
34
35   <iframe width="560" height="315"
36       src="https://www.youtube.com/embed/0HvgvBUPTyw"
37       title="LLVM Toolchain for Embedded Systems"
38       frameborder="0"
39       allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
40       referrerpolicy="strict-origin-when-cross-origin"
41       allowfullscreen></iframe>
42
43.. _toolchain-prebuilts:
44
45---------
46Prebuilts
47---------
48.. _CIPD Packages: https://chrome-infra-packages.appspot.com/p/fuchsia/third_party/clang
49
50The toolchain can be downloaded from `CIPD Packages`_. It includes
51a cross-compiler that can target the following architectures.
52
53Embedded targets:
54
55* ARM 32-bit
56
57  * ARMv6
58
59  * ARMv7
60
61  * ARMv8
62
63* RISC-V 32-bit
64
65Host targets:
66
67* Linux
68* Windows\ :sup:`1`
69* macOS\ :sup:`2`
70
71:sup:`1` Contains some limitations around user-side licensing.
72
73:sup:`2` MLInliner is not supported yet.
74
75.. _toolchain-support:
76
77-------
78Support
79-------
80`File a bug <https://pwbug.dev>`_ or talk to the Pigweed
81team on `Discord <https://discord.com/invite/M9NSeTA>`_.
82