(implementing_a_function)=
This guide provides a step-by-step walkthrough for adding a new function to LLVM-libc.
Adding a new function involves several steps, from updating the public specification to implementing and testing the code. Below is the standard checklist for contributors.
Update the standard YAML file that describes the public header to ensure the function is included in the generated public header.
libc/include/<header>.yaml (or libc/include/sys/<header>.yaml for system headers)functions list.stdc, POSIX).Declare the function in the internal implementation header file. This file is used by other internal code.
libc/src/<header>/<func>.himplementation_standard.LIBC_NAMESPACE_DECL namespace.Write the actual code for the function.
libc/src/<header>/<func>.cpp (or libc/src/<header>/<os>/<func>.cpp for platform-specific implementations)LLVM_LIBC_FUNCTION macro.code_style for naming and layout conventions.Add a CMake target for the new function so it can be compiled.
libc/src/<header>/CMakeLists.txtadd_entrypoint_object rule for the new file.Register the new entrypoint for the target platforms to include it in the build.
libc/config/<os>/<arch>/entrypoints.txtCreate tests to verify the implementation.
libc/test/src/<header>/<func>_test.cppCMakeLists.txt in the test directory (libc/test/src/<header>/CMakeLists.txt) to include the new test target.