[libc][docs] Add guide for implementing a function#188499
Merged
Conversation
Added implementing_a_function.rst providing a checklist for adding a new function to LLVM-libc. Updated dev/index.rst to include the new guide in the toctree.
Member
|
@llvm/pr-subscribers-libc Author: Jeff Bailey (kaladron) ChangesAdded implementing_a_function.rst providing a checklist for adding a new function to LLVM-libc. Updated dev/index.rst to include the new guide in the toctree. 2 Files Affected:
diff --git a/libc/docs/dev/implementing_a_function.rst b/libc/docs/dev/implementing_a_function.rst
new file mode 100644
index 0000000000000..a5bca9e980ef6
--- /dev/null
+++ b/libc/docs/dev/implementing_a_function.rst
@@ -0,0 +1,73 @@
+.. _implementing_a_function:
+
+===========================
+Implementing a New Function
+===========================
+
+This guide provides a step-by-step walkthrough for adding a new function to LLVM-libc.
+
+.. contents:: Table of Contents
+ :depth: 2
+ :local:
+
+Overview
+========
+
+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.
+
+Step-by-Step Checklist
+======================
+
+1. Header Entry
+---------------
+
+Update the standard YAML file that describes the public header to ensure the function is included in the generated public header.
+
+* **File**: ``libc/include/<header>.yaml`` (or ``libc/include/sys/<header>.yaml`` for system headers)
+* Add the new function to the ``functions`` list.
+* Specify its name, return type, and arguments.
+* List the standards it complies with (e.g., ``stdc``, ``POSIX``).
+
+2. Header Declaration
+---------------------
+
+Declare the function in the internal implementation header file. This file is used by other internal code.
+
+* **File**: ``libc/src/<header>/<func>.h``
+* Follow the structure defined in :ref:`implementation_standard`.
+* Ensure the declaration is inside the ``LIBC_NAMESPACE_DECL`` namespace.
+
+3. Implementation
+-----------------
+
+Write the actual code for the function.
+
+* **File**: ``libc/src/<header>/<func>.cpp`` (or ``libc/src/<header>/<os>/<func>.cpp`` for platform-specific implementations)
+* Use the ``LLVM_LIBC_FUNCTION`` macro.
+* Refer to :ref:`code_style` for naming and layout conventions.
+
+4. CMake Rule
+-------------
+
+Add a CMake target for the new function so it can be compiled.
+
+* **File**: ``libc/src/<header>/CMakeLists.txt``
+* Add an ``add_entrypoint_object`` rule for the new file.
+* List all internal dependencies correctly to ensure proper build order.
+
+5. Platform Registration
+------------------------
+
+Register the new entrypoint for the target platforms to include it in the build.
+
+* **File**: ``libc/config/<os>/<arch>/entrypoints.txt``
+* Add the new function to the list of active entrypoints.
+
+6. Testing
+----------
+
+Create tests to verify the implementation.
+
+* **File**: ``libc/test/src/<header>/<func>_test.cpp``
+* Add corresponding tests using the internal testing framework.
+* Update the ``CMakeLists.txt`` in the test directory (``libc/test/src/<header>/CMakeLists.txt``) to include the new test target.
diff --git a/libc/docs/dev/index.rst b/libc/docs/dev/index.rst
index 615db030d7edd..b61e46a59a43a 100644
--- a/libc/docs/dev/index.rst
+++ b/libc/docs/dev/index.rst
@@ -13,6 +13,7 @@ Navigate to the links below for information on the respective topics:
code_style
source_tree_layout
entrypoints
+ implementing_a_function
cmake_build_rules
config_options
clang_tidy_checks
|
vonosmas
approved these changes
Mar 25, 2026
Contributor
Contributor
Author
|
Eep. I love things that don't show up in my local sandbox. Thanks, I'll fix it. |
ambergorzynski
pushed a commit
to ambergorzynski/llvm-project
that referenced
this pull request
Mar 27, 2026
Added implementing_a_function.rst providing a checklist for adding a new function to LLVM-libc. Updated dev/index.rst to include the new guide in the toctree.
Aadarsh-Keshri
pushed a commit
to Aadarsh-Keshri/llvm-project
that referenced
this pull request
Mar 28, 2026
Added implementing_a_function.rst providing a checklist for adding a new function to LLVM-libc. Updated dev/index.rst to include the new guide in the toctree.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Added implementing_a_function.rst providing a checklist for adding a new function to LLVM-libc.
Updated dev/index.rst to include the new guide in the toctree.