Merge changes I6f074855,I3c7bcd75 into main

* changes:
  LibInfo: omit version from link_libraries
  zstd: use a static library
tree: 35335756d28ef8e9c3c776c3f1647b0dbc9d2a65
  1. docker/
  2. docs/
  3. kernel-boot-tests/
  4. kokoro/
  5. orderfiles/
  6. patches/
  7. test/
  8. .gitignore
  9. __init__.py
  10. android_llvm_next_flags.go
  11. android_version.py
  12. base_builders.py
  13. bisect_build.py
  14. bisect_driver.py
  15. BUILD.md
  16. build.py
  17. builder_registry.py
  18. builders.py
  19. cherrypick_cl.py
  20. cherrypick_cl_hook.py
  21. clang-tidy.sh
  22. configs.py
  23. constants.py
  24. do_build.py
  25. do_kythe_xref.py
  26. do_test_compiler.py
  27. fetch_kokoro_prebuilts.py
  28. hosts.py
  29. kythe_vnames.json
  30. kythe_xref.py
  31. mapfile.py
  32. merge_from_upstream.py
  33. MODULE_LICENSE_APACHE2
  34. MODULE_LICENSE_BSD_LIKE
  35. MODULE_LICENSE_MIT
  36. OWNERS
  37. paths.py
  38. PREUPLOAD.cfg
  39. py3_utils.py
  40. pylintrc
  41. README.md
  42. remove-prebuilts.py
  43. source_manager.py
  44. test_compiler.py
  45. timer.py
  46. toolchain_errors.py
  47. toolchains.py
  48. trim_patch_data.py
  49. update-binutils.py
  50. update-clang-stable.py
  51. update-kernel-toolchain.py
  52. update-prebuilts.py
  53. utils.py
  54. version.py
  55. win_sdk.py
README.md

Android Clang/LLVM Toolchain

Quick links:

Android's clang toolchain is used to build the Android platform, kernel and is also part of the Android NDK. It also builds various tools and projects in the Android ecosystem. See this page for a list of current versions used by various projects.

Android clang follows a rolling release schedule based on upstream llvm-project's main branch. It does not correspond to a numbered llvm-project release branch.

Clang Version

Each clang prebuilt directory has a clang_source_info.md (starting with clang-r428724) that mentions the llvm-project commit from which this version is branched. It also lists cherry-picks from upstream LLVM and downstream changes needed to qualify this prebuilt for the various Android use cases.

Update Schedule

At any point of time, there is an in-progress attempt to release a new clang. Due to the complexity of the Android code base and breaking changes from llvm-project, there is no guaranteed schedule or cadence in clang updates.

In practice, there have been an average of 3-4 updates a year (rougly new clang every 3-4 months) for the past several years.

Subscribe to https://groups.google.com/g/android-llvm to get notified when a clang version is planned and when it is released.

Android Clang Development

Android clang development happens in the llvm-toolchain repo branch in AOSP. See here for build instructions.

aosp-llvm-toolchain is the public CI build of Android clang toolchain.

clang binaries from this CI branch are checked into three platform-specific projects: