Contributing to libc++¶
Please read this document on general rules to contribute to LLVM projects.
Tasks and processes¶
This file contains notes about various tasks and processes specific to libc++.
Looking for pre-existing reviews¶
Before you start working on any feature, please take a look at the open reviews
to avoid duplicating someone else’s work. You can do that by going to the website
where code reviews are held, Differential,
and clicking on Libc++ Open Reviews in the sidebar to the left. If you see
that your feature is already being worked on, please consider chiming in instead
of duplicating work!
Post-Release TODO¶
After branching for an LLVM release:
Update
_LIBCPP_VERSIONininclude/__configUpdate the
include/__libcpp_versionfileUpdate the version number in
docs/conf.py
Modifying feature test macros¶
When adding or updating feature test macros, you should update the corresponding tests.
To do that, modify feature_test_macros table in the script utils/generate_feature_test_macro_components.py, run it, and commit updated files.
Adding a new header TODO¶
When adding a new header to libc++:
Add a test under
test/libcxxthat the new header defines_LIBCPP_VERSION. Seetest/libcxx/algorithms/version.pass.cppfor an example.Run
python utils/generate_header_tests.py, verify and commit the modifications.Create a submodule in
include/module.modulemapfor the new header.Update the
include/CMakeLists.txtfile to include the new header.
Exporting new symbols from the library¶
When exporting new symbols from libc++, one must update the ABI lists located in lib/abi.
To test whether the lists are up-to-date, please run the target check-cxx-abilist.
To regenerate the lists, use the target generate-cxx-abilist.