| .. _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. |