blob: 38a96826bf7416191d6ab351309d683d1bcb1c1c [file] [log] [blame]
.. _module-pw_third_party_llvm_libc:
=========
LLVM libc
=========
The ``$dir_pw_third_party/llvm_libc/`` module provides various helpers to
optionally use LLVM libc with :ref:`module-pw_libc`.
------------------------
Using upstream LLVM libc
------------------------
If you want to use LLVM libc, you must do the following:
Submodule
=========
Add LLVM libc to your workspace with the following command.
.. code-block:: sh
git submodule add https://llvm.googlesource.com/llvm-project/libc \
third_party/llvm_libc/src
Note, this git repository is maintained by Google and is a slice of upstream
LLVM including only the libc subdirectory.
GN
==
* Set the GN var ``dir_pw_third_party_llvm_libc`` to the location of the LLVM
libc source. If you used the command above, this will be
``//third_party/llvm_libc/src``
This can be set in your args.gn or .gn file like:
``dir_pw_third_party_llvm_libc = "//third_party/llvm_libc_src"``
------
Status
------
Currently, pw_libc's llvm-libc integration only provides a pw_libc.a and is
not suitable as a full replacement for libc. Not all functions used by
projects are currently available to use from llvm-libc. Moreover, headers are
provided from the sysroot libc. Startup files are also provided from the
sysroot.
In the future, we hope to be able to fully replace the sysroot libc.