[libc-commits] [libc] 7030a34 - [libc][docs] Furo theme, new landing page, cleanups (#184303)
via libc-commits
libc-commits at lists.llvm.org
Mon Mar 9 13:48:47 PDT 2026
Author: Jeff Bailey
Date: 2026-03-09T20:48:42Z
New Revision: 7030a34403b0a7e6b0a4be5cd15262b20aa98743
URL: https://github.com/llvm/llvm-project/commit/7030a34403b0a7e6b0a4be5cd15262b20aa98743
DIFF: https://github.com/llvm/llvm-project/commit/7030a34403b0a7e6b0a4be5cd15262b20aa98743.diff
LOG: [libc][docs] Furo theme, new landing page, cleanups (#184303)
Switch the libc documentation site from the alabaster theme to Furo,
which provides mobile-friendly layout, a collapsible sidebar with
caption-based section grouping, and built-in "Edit this page" links.
Changes by area:
conf.py
- Switch html_theme to "furo"
- Add myst_parser extension (already in llvm/docs/requirements.txt, used
by LLDB/Clang/LLVM docs) to allow Markdown alongside RST
- Accept both .rst and .md source suffixes
- Configure Furo source_repository/source_branch/source_directory for
"Edit this page" links pointing to GitHub
- Wire _static/copybutton.{js,css} for copy-to-clipboard buttons on code
blocks (no new pip dependency; can migrate to sphinx-copybutton later
once it's in requirements-hashed.txt)
- Exclude plan-docs.md and Helpers/ from Sphinx processing
index.rst
- Rewrite landing page: remove apologetic "not fully complete" note, add
"What Works Today" section with concrete supported use cases, honest
caveat that full C stdlib coverage is still in progress
- Restructure hidden toctrees into five captioned sidebar groups: "Using
LLVM-libc", "Platforms" (GPU/UEFI promoted to top-level),
"Implementation Status", "Development", "Links"
New files
- docs/_static/copybutton.{js,css}: lightweight copy button for code
blocks
- docs/_static/custom.css: add status badge styles (.badge-complete
etc.) for use with Helpers/Styles.rst substitutions in later phases
Prepare for future status badges:
- docs/Helpers/Styles.rst: RST substitution definitions for status
badges (|Complete|, |Partial|, |InProgress|, |NotStarted|, |GPUOnly|,
|LinuxOnly|) — excluded from toctree, available for Phase 5+ pages
- docs/dev/building_docs.rst: new page covering prerequisites (with
Debian apt-first instructions), CMake flags, ninja docs-libc-html, the
docgen auto-generation pipeline, and troubleshooting
Removed
- docs/README.txt: stale file claiming Sphinx 1.1.3, not in any toctree;
superseded by docs/dev/building_docs.rst
Cleanups
- Remove redundant ".. contents:: Table of Contents" directives from 16
RST files (Furo renders its own per-page TOC in the sidebar)
- Remove same directive from libc/Maintainers.rst (pulled into docs via
include)
Added:
libc/docs/Helpers/Styles.rst
libc/docs/_static/copybutton.css
libc/docs/_static/copybutton.js
libc/docs/dev/building_docs.rst
Modified:
libc/Maintainers.rst
libc/docs/_static/custom.css
libc/docs/conf.py
libc/docs/dev/index.rst
libc/docs/dev/undefined_behavior.rst
libc/docs/full_cross_build.rst
libc/docs/full_host_build.rst
libc/docs/gpu/building.rst
libc/docs/gpu/motivation.rst
libc/docs/gpu/rpc.rst
libc/docs/gpu/support.rst
libc/docs/gpu/testing.rst
libc/docs/gpu/using.rst
libc/docs/headers/math/index.rst
libc/docs/index.rst
libc/docs/overlay_mode.rst
libc/docs/porting.rst
libc/docs/uefi/building.rst
libc/docs/uefi/support.rst
libc/docs/uefi/testing.rst
libc/docs/uefi/using.rst
Removed:
libc/docs/README.txt
################################################################################
diff --git a/libc/Maintainers.rst b/libc/Maintainers.rst
index 24abf16e8ba0f..b17d2560fc2c1 100644
--- a/libc/Maintainers.rst
+++ b/libc/Maintainers.rst
@@ -8,10 +8,6 @@ LLVM-libc. The following people are the active maintainers for the project.
Please reach out to them for code reviews, questions about their area of
expertise, or other assistance.
-.. contents::
- :depth: 1
- :local:
-
Lead Maintainer
---------------
| Michael Jones
diff --git a/libc/docs/Helpers/Styles.rst b/libc/docs/Helpers/Styles.rst
new file mode 100644
index 0000000000000..fd6364176738c
--- /dev/null
+++ b/libc/docs/Helpers/Styles.rst
@@ -0,0 +1,40 @@
+.. ---------------------------------------------------------------------------
+ Shared substitution definitions for implementation-status badges.
+ This file is excluded from the toctree (via exclude_patterns in conf.py).
+ Include it in any RST page that needs status badges:
+
+ .. include:: /Helpers/Styles.rst (adjust path as needed)
+
+ Usage::
+
+ |Complete| — feature/function is fully implemented
+ |Partial| — partial implementation (some variants/platforms missing)
+ |InProgress| — implementation underway, not yet merged
+ |NotStarted| — no implementation exists yet
+ |GPUOnly| — implemented on GPU targets only
+ |LinuxOnly| — implemented on Linux targets only
+ ---------------------------------------------------------------------------
+
+.. |Complete| raw:: html
+
+ <span class="badge badge-complete">Complete</span>
+
+.. |Partial| raw:: html
+
+ <span class="badge badge-partial">Partial</span>
+
+.. |InProgress| raw:: html
+
+ <span class="badge badge-inprogress">In Progress</span>
+
+.. |NotStarted| raw:: html
+
+ <span class="badge badge-notstarted">Not Started</span>
+
+.. |GPUOnly| raw:: html
+
+ <span class="badge badge-gpuonly">GPU Only</span>
+
+.. |LinuxOnly| raw:: html
+
+ <span class="badge badge-linuxonly">Linux Only</span>
diff --git a/libc/docs/README.txt b/libc/docs/README.txt
deleted file mode 100644
index c250000399948..0000000000000
--- a/libc/docs/README.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-libc Documentation
-==================
-
-The libc documentation is written using the Sphinx documentation generator. It is
-currently tested with Sphinx 1.1.3.
-
-To build the documents into html configure libc with the following cmake options:
-
- * -DLLVM_ENABLE_SPHINX=ON
- * -DLIBC_INCLUDE_DOCS=ON
-
-After configuring libc with these options the make rule `docs-libc-html`
-should be available.
diff --git a/libc/docs/_static/copybutton.css b/libc/docs/_static/copybutton.css
new file mode 100644
index 0000000000000..6851a1a9dd4b2
--- /dev/null
+++ b/libc/docs/_static/copybutton.css
@@ -0,0 +1,39 @@
+/* Copy-to-clipboard button styles */
+div.highlight {
+ position: relative;
+}
+
+button.copybutton {
+ position: absolute;
+ top: 0.4em;
+ right: 0.4em;
+ padding: 0.3em 0.4em;
+ background: var(--color-background-secondary, #f0f0f0);
+ border: 1px solid var(--color-foreground-border, #ccc);
+ border-radius: 4px;
+ cursor: pointer;
+ opacity: 0;
+ transition: opacity 0.2s, background 0.15s;
+ line-height: 1;
+ color: var(--color-foreground-secondary, #555);
+}
+
+div.highlight:hover button.copybutton,
+button.copybutton:focus {
+ opacity: 1;
+}
+
+button.copybutton:hover {
+ background: var(--color-background-hover, #e0e0e0);
+}
+
+button.copybutton.copied {
+ color: var(--color-brand-primary, #2980b9);
+ opacity: 1;
+}
+
+button.copybutton svg {
+ display: block;
+ pointer-events: none;
+ fill: currentColor;
+}
diff --git a/libc/docs/_static/copybutton.js b/libc/docs/_static/copybutton.js
new file mode 100644
index 0000000000000..6103fec62b6f8
--- /dev/null
+++ b/libc/docs/_static/copybutton.js
@@ -0,0 +1,56 @@
+// Simple "copy to clipboard" button for code blocks.
+// Adds a button to each <div class="highlight"> block.
+(function () {
+ "use strict";
+
+ function addCopyButton(block) {
+ var button = document.createElement("button");
+ button.className = "copybutton";
+ button.title = "Copy";
+ button.setAttribute("aria-label", "Copy code to clipboard");
+ button.innerHTML =
+ '<svg aria-hidden="true" height="16" viewBox="0 0 16 16" width="16">' +
+ '<path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 ' +
+ "0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 " +
+ "0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z" +
+ '"/><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 ' +
+ "1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 " +
+ ".138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z" +
+ '"/></svg>';
+
+ button.addEventListener("click", function () {
+ var code = block.querySelector("pre").innerText;
+ navigator.clipboard.writeText(code).then(
+ function () {
+ button.classList.add("copied");
+ setTimeout(function () {
+ button.classList.remove("copied");
+ }, 2000);
+ },
+ function () {
+ // Fallback for older browsers
+ var ta = document.createElement("textarea");
+ ta.value = code;
+ ta.style.position = "fixed";
+ ta.style.opacity = "0";
+ document.body.appendChild(ta);
+ ta.focus();
+ ta.select();
+ document.execCommand("copy");
+ document.body.removeChild(ta);
+ button.classList.add("copied");
+ setTimeout(function () {
+ button.classList.remove("copied");
+ }, 2000);
+ }
+ );
+ });
+
+ block.style.position = "relative";
+ block.appendChild(button);
+ }
+
+ document.addEventListener("DOMContentLoaded", function () {
+ document.querySelectorAll("div.highlight").forEach(addCopyButton);
+ });
+})();
diff --git a/libc/docs/_static/custom.css b/libc/docs/_static/custom.css
index 65c3bd2423670..607bb5d2a34f4 100644
--- a/libc/docs/_static/custom.css
+++ b/libc/docs/_static/custom.css
@@ -112,3 +112,24 @@ div.body {
max-width: auto;
}
}
+
+/* ---------------------------------------------------------------------------
+ Status badges (used via Helpers/Styles.rst substitutions)
+ --------------------------------------------------------------------------- */
+.badge {
+ display: inline-block;
+ padding: 0.15em 0.5em;
+ border-radius: 3px;
+ font-size: 0.8em;
+ font-weight: 600;
+ line-height: 1.4;
+ white-space: nowrap;
+}
+
+.badge-complete { background: #2ea44f; color: #fff; }
+.badge-partial { background: #f0883e; color: #fff; }
+.badge-inprogress { background: #0969da; color: #fff; }
+.badge-notstarted { background: #6e7781; color: #fff; }
+.badge-gpuonly { background: #8250df; color: #fff; }
+.badge-linuxonly { background: #1a7f37; color: #fff; }
+
diff --git a/libc/docs/conf.py b/libc/docs/conf.py
index eff827c867fd8..51e93fa96ce51 100644
--- a/libc/docs/conf.py
+++ b/libc/docs/conf.py
@@ -25,13 +25,18 @@
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ["sphinx.ext.intersphinx", "sphinx.ext.todo", "sphinx_reredirects"]
+extensions = [
+ "sphinx.ext.intersphinx",
+ "sphinx.ext.todo",
+ "sphinx_reredirects",
+ "myst_parser",
+]
# Add any paths that contain templates here, relative to this directory.
templates_path = ["_templates"]
# The suffix of source filenames.
-source_suffix = ".rst"
+source_suffix = [".rst", ".md"]
# The encoding of source files.
# source_encoding = 'utf-8-sig'
@@ -92,15 +97,16 @@
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
# html_theme = 'haiku'
-html_theme = "alabaster"
+html_theme = "furo"
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = {
- "font_size": "11pt",
- # Don't generate any links to GitHub.
- "github_button": "false",
+ # "Edit this page" links
+ "source_repository": "https://github.com/llvm/llvm-project/",
+ "source_branch": "main",
+ "source_directory": "libc/docs/",
}
# Add any paths that contain custom themes here, relative to this directory.
@@ -126,7 +132,11 @@
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ["_static"]
-#
+
+# Custom JS/CSS files
+html_js_files = ["copybutton.js"]
+html_css_files = ["copybutton.css"]
+
# html_context = {
# 'css_files': [
# '_static/libc.css'
diff --git a/libc/docs/dev/building_docs.rst b/libc/docs/dev/building_docs.rst
new file mode 100644
index 0000000000000..567f717bbd34a
--- /dev/null
+++ b/libc/docs/dev/building_docs.rst
@@ -0,0 +1,93 @@
+.. _building_docs:
+
+==========================
+Building the Documentation
+==========================
+
+This page explains how to build the LLVM-libc HTML documentation locally so
+you can preview changes before submitting a patch.
+
+Prerequisites
+=============
+
+The LLVM documentation build uses `Sphinx <https://www.sphinx-doc.org/>`__.
+The key packages required are:
+
+* ``sphinx`` — the documentation generator
+* ``furo`` — the theme used by LLVM-libc
+* ``myst-parser`` — Markdown support alongside RST
+* ``sphinx-reredirects`` — handles page redirect entries in ``conf.py``
+
+**On Debian/Ubuntu**, all required packages are available via apt:
+
+.. code-block:: bash
+
+ sudo apt-get install python3-sphinx python3-myst-parser \
+ python3-sphinx-reredirects furo
+
+**On other systems**, install everything from the shared requirements file:
+
+.. code-block:: bash
+
+ pip install -r llvm/docs/requirements.txt
+
+CMake Configuration
+===================
+
+Enable the Sphinx documentation build by adding these flags to your CMake
+invocation:
+
+.. code-block:: bash
+
+ cmake ../runtimes \
+ -DLLVM_ENABLE_RUNTIMES="libc" \
+ -DLLVM_ENABLE_SPHINX=ON \
+ -DLIBC_INCLUDE_DOCS=ON \
+ ...
+
+The ``LLVM_ENABLE_SPHINX=ON`` flag enables Sphinx globally for all LLVM
+subprojects. ``LIBC_INCLUDE_DOCS=ON`` is specific to libc and tells CMake to
+register the libc doc targets.
+
+Building
+========
+
+Once configured, build the HTML docs with:
+
+.. code-block:: bash
+
+ ninja docs-libc-html
+
+The output is written to ``<build-dir>/tools/libc/docs/html/``. Open
+``index.html`` in a browser to view the site.
+
+Header Status Pages (Auto-generated)
+=====================================
+
+The per-header implementation status pages under ``docs/headers/`` are
+**not** hand-written RST. They are generated at build time by
+``libc/utils/docgen/docgen.py``, which:
+
+1. Reads YAML function definitions from ``libc/src/<header>/*.yaml``.
+2. Scans ``libc/src/<header>/`` for ``.cpp`` implementation files.
+3. Checks ``libc/include/llvm-libc-macros/`` for macro ``#define`` entries.
+4. Emits an RST ``list-table`` showing each symbol's implementation status,
+ C standard section, and POSIX link.
+
+If you add a new function and regenerate, these pages update automatically.
+Do **not** hand-edit the generated RST files in ``docs/headers/`` — your
+changes will be overwritten the next time the docs are built.
+
+Troubleshooting
+===============
+
+``Extension error: Could not import extension myst_parser``
+ On Debian/Ubuntu: ``sudo apt-get install python3-myst-parser``.
+ Otherwise: ``pip install -r llvm/docs/requirements.txt``.
+
+``WARNING: document isn't included in any toctree``
+ A new RST/Markdown file needs a ``toctree`` entry. Add it to the
+ appropriate ``index.rst`` or its parent toctree.
+
+``Extension error: No module named 'sphinx_reredirects'``
+ Same fix: ``pip install -r llvm/docs/requirements.txt``.
diff --git a/libc/docs/dev/index.rst b/libc/docs/dev/index.rst
index 9ed50bb6683aa..91fb0b682e469 100644
--- a/libc/docs/dev/index.rst
+++ b/libc/docs/dev/index.rst
@@ -9,6 +9,7 @@ Navigate to the links below for information on the respective topics:
.. toctree::
:maxdepth: 1
+ building_docs
code_style
source_tree_layout
entrypoints
diff --git a/libc/docs/dev/undefined_behavior.rst b/libc/docs/dev/undefined_behavior.rst
index d0cd4c9c921a9..bd1a6fe3ef214 100644
--- a/libc/docs/dev/undefined_behavior.rst
+++ b/libc/docs/dev/undefined_behavior.rst
@@ -2,10 +2,6 @@
Defining Undefined Behavior
===========================
-.. contents:: Table of Contents
- :depth: 2
- :local:
-
The C standard leaves behavior undefined or implementation defined in many
places. Undefined behavior is behavior that the standards leave up to the
implementation. As an implementation, LLVM's libc must provide a result for any
diff --git a/libc/docs/full_cross_build.rst b/libc/docs/full_cross_build.rst
index cd1ec89e5d5e9..436396d7acf46 100644
--- a/libc/docs/full_cross_build.rst
+++ b/libc/docs/full_cross_build.rst
@@ -4,10 +4,6 @@
Full Cross Build
================
-.. contents:: Table of Contents
- :depth: 1
- :local:
-
.. note::
Fullbuild requires running headergen, which is a python program that depends on
pyyaml. The minimum versions are listed on the :ref:`header_generation`
diff --git a/libc/docs/full_host_build.rst b/libc/docs/full_host_build.rst
index ab410af9efa28..987a87e6a9157 100644
--- a/libc/docs/full_host_build.rst
+++ b/libc/docs/full_host_build.rst
@@ -4,10 +4,6 @@
Full Host Build
===============
-.. contents:: Table of Contents
- :depth: 1
- :local:
-
.. note::
Fullbuild requires running headergen, which is a python program that depends on
pyyaml. The minimum versions are listed on the :ref:`header_generation`
diff --git a/libc/docs/gpu/building.rst b/libc/docs/gpu/building.rst
index a7791331423dc..d80ad0c0ff540 100644
--- a/libc/docs/gpu/building.rst
+++ b/libc/docs/gpu/building.rst
@@ -4,10 +4,6 @@
Building libs for GPUs
======================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Building the GPU C library
==========================
diff --git a/libc/docs/gpu/motivation.rst b/libc/docs/gpu/motivation.rst
index e637d67fad75f..86f9f5e4ff325 100644
--- a/libc/docs/gpu/motivation.rst
+++ b/libc/docs/gpu/motivation.rst
@@ -4,10 +4,6 @@
Motivation and Limitations
==========================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Motivation
==========
diff --git a/libc/docs/gpu/rpc.rst b/libc/docs/gpu/rpc.rst
index bd82e0942f9c0..d5199b39b05ed 100644
--- a/libc/docs/gpu/rpc.rst
+++ b/libc/docs/gpu/rpc.rst
@@ -4,10 +4,6 @@
Remote Procedure Calls
======================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Remote Procedure Call Implementation
====================================
diff --git a/libc/docs/gpu/support.rst b/libc/docs/gpu/support.rst
index 3fb2df8e6f2ca..11868227bb93b 100644
--- a/libc/docs/gpu/support.rst
+++ b/libc/docs/gpu/support.rst
@@ -6,10 +6,6 @@ Supported Functions
.. include:: ../check.rst
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
The following functions and headers are supported at least partially on the
device. Some functions are implemented fully on the GPU, while others require a
`remote procedure call <libc_gpu_rpc>`_.
diff --git a/libc/docs/gpu/testing.rst b/libc/docs/gpu/testing.rst
index 9f17159fb6d5e..4115e68e5225a 100644
--- a/libc/docs/gpu/testing.rst
+++ b/libc/docs/gpu/testing.rst
@@ -10,10 +10,6 @@ Testing the GPU C library
out of resource errors, or indefinite hangs. limiting the number of threads
used while testing using ``LIBC_GPU_TEST_JOBS=<N>`` is highly recommended.
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Testing infrastructure
======================
diff --git a/libc/docs/gpu/using.rst b/libc/docs/gpu/using.rst
index f17f6287be313..14220e499e80d 100644
--- a/libc/docs/gpu/using.rst
+++ b/libc/docs/gpu/using.rst
@@ -4,10 +4,6 @@
Using libc for GPUs
===================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Using the GPU C library
=======================
diff --git a/libc/docs/headers/math/index.rst b/libc/docs/headers/math/index.rst
index 7ea54fb4d8263..e8b3fe63b2a6c 100644
--- a/libc/docs/headers/math/index.rst
+++ b/libc/docs/headers/math/index.rst
@@ -18,10 +18,6 @@ math.h
log.rst
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Source Locations
================
diff --git a/libc/docs/index.rst b/libc/docs/index.rst
index f640d994e47f4..b2ff376629c02 100644
--- a/libc/docs/index.rst
+++ b/libc/docs/index.rst
@@ -2,83 +2,105 @@
The LLVM C Library
==================
-.. note::
- LLVM-libc is not fully complete right now. Some programs may fail to build due
- to missing functions. If you would like to help us finish LLVM-libc, check
- out "`Contributing to the libc project <contributing.html>`__" in the sidebar
- or ask on `discord <https://discord.com/channels/636084430946959380/636732994891284500>`__
- (`invite link <https://discord.gg/xS7Z362>`__).
-
-Introduction
+LLVM-libc is a from-scratch implementation of the C standard library, built as
+part of the LLVM project. It is designed to be **modular** (any piece can be
+used independently), **multiplatform** (Linux, GPU, baremetal embedded, UEFI,
+macOS, Windows), and written in modern C++ for correctness, performance, and
+safety.
+
+What Works Today
+================
+
+LLVM-libc is **actively used in production** for a targeted set of use cases,
+though coverage is still growing and many programs that depend on the full C
+standard library (regex, locale, wide-character I/O, etc.) will not yet compile
+against it:
+
+* **Static-linked Linux servers and containers** — used in production at Google
+ (servers and Pixel Buds) on x86-64 and AArch64.
+* **GPU compute (AMDGPU, NVPTX)** — libc functions available in GPU kernels
+ via LLVM's offloading runtime. :doc:`GPU docs <gpu/index>`
+* **Baremetal embedded (ARM, RISC-V, AArch64)** — minimal footprint builds
+ for microcontrollers and custom hardware.
+* **UEFI applications** — experimental support for firmware development.
+ :doc:`UEFI docs <uefi/index>`
+* **LLVM ecosystem internals** — libc++ and the offloading runtime consume
+ LLVM-libc directly via :doc:`Hand-in-Hand <hand_in_hand>`.
+* **Toolchain integrations** — pieces of LLVM-libc are used in Android Bionic,
+ Fuchsia, Emscripten, and the ARM embedded toolchain.
+
+Coverage is still growing. See the :doc:`implementation status <headers/index>`
+pages for per-header detail, and the
+:doc:`platform support <platform_support>` page for OS/architecture coverage.
+
+Getting Started
+===============
+
+If you are new to LLVM-libc, :doc:`getting_started` is the right first stop.
+It covers cloning, building, testing, and verifying your installation in one
+place.
+
+Want to use LLVM-libc *alongside* your system libc instead of replacing it?
+See :doc:`overlay_mode`.
+
+Get Involved
============
-LLVM-libc is an implementation of the C standard library written in C++ focused
-on embodying three main principles:
+LLVM-libc is an active project and welcomes contributors of all experience
+levels. See :doc:`contributing` to learn how to help.
-- Modular
-- Multiplatform
-- Community Oriented
-
-Our current goal is to support users who want to make libc part of their
-application. This can be through static linking libc into the application, which
-is common for containerized servers or embedded devices. It can also be through
-using the LLVM-libc internal sources as a library, such as through the
-:ref:`Hand-in-Hand interface<hand_in_hand>`.
-
-For more details please watch the talk "`Climbing the ladder of Complete <https://www.youtube.com/watch?v=HtCMCL13Grg>`__ by Michael Jones.".
-
-LLVM-libc is currently used in Google servers, Pixel Buds, and other Google
-projects. Through Project Hand-in-Hand LLVM-libc's code is used in other LLVM
-projects, specifically libc++ and the offloading runtime. There is an
-experiemental config to use LLVM-libc in Emscripten and the ARM embedded
-toolchain. Pieces of LLVM-libc are being used in Bionic (Android's libc) and
-Fuchsia.
+* `Source code <https://github.com/llvm/llvm-project/tree/main/libc>`__
+* `Bug reports <https://github.com/llvm/llvm-project/labels/libc>`__
+* `Discourse <https://discourse.llvm.org/c/runtimes/libc>`__
+* `Discord <https://discord.com/channels/636084430946959380/636732994891284500>`__
+ (`invite <https://discord.gg/xS7Z362>`__)
+* `Buildbot <https://lab.llvm.org/buildbot/#/builders?tags=libc>`__
.. toctree::
:hidden:
:maxdepth: 1
- :caption: Status & Support
+ :caption: Using LLVM-libc
- headers/index.rst
- arch_support
- platform_support
- compiler_support
+ getting_started
+ overlay_mode
+ full_host_build
+ full_cross_build
+ configure
+ hand_in_hand
.. toctree::
:hidden:
:maxdepth: 1
- :caption: Simple Usage
+ :caption: Platforms
- getting_started
+ gpu/index.rst
+ uefi/index.rst
.. toctree::
:hidden:
:maxdepth: 1
- :caption: Advanced Usage
+ :caption: Implementation Status
- full_host_build
- full_cross_build
- overlay_mode
- gpu/index.rst
- uefi/index.rst
- configure
- hand_in_hand
+ headers/index.rst
+ arch_support
+ platform_support
+ compiler_support
.. toctree::
:hidden:
:maxdepth: 1
:caption: Development
- Maintainers
+ contributing
build_and_test
dev/index.rst
porting
- contributing
+ Maintainers
.. toctree::
:hidden:
:maxdepth: 1
- :caption: Useful Links
+ :caption: Links
talks
Source Code <https://github.com/llvm/llvm-project/tree/main/libc>
diff --git a/libc/docs/overlay_mode.rst b/libc/docs/overlay_mode.rst
index ca04c4c7674a3..7127af11be229 100644
--- a/libc/docs/overlay_mode.rst
+++ b/libc/docs/overlay_mode.rst
@@ -4,10 +4,6 @@
Overlay Mode
============
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
One can choose to use LLVM's libc in the overlay mode. In this mode, the link
order semantics are exploited to pick symbols from ``libllvmlibc.a`` (if they
are available in ``libllvmlibc.a``) and the rest are picked from the system
diff --git a/libc/docs/porting.rst b/libc/docs/porting.rst
index 51d29d9f7c379..976f8e487efbd 100644
--- a/libc/docs/porting.rst
+++ b/libc/docs/porting.rst
@@ -4,10 +4,6 @@
Bringup on a New OS or Architecture
=======================================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Building the libc
=================
diff --git a/libc/docs/uefi/building.rst b/libc/docs/uefi/building.rst
index 39f0c47bf2ff2..cfdba5618858c 100644
--- a/libc/docs/uefi/building.rst
+++ b/libc/docs/uefi/building.rst
@@ -4,10 +4,6 @@
Building libc for UEFI
======================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Building LLVM libc for UEFI
===========================
diff --git a/libc/docs/uefi/support.rst b/libc/docs/uefi/support.rst
index 335990566c66c..a13c683617bfc 100644
--- a/libc/docs/uefi/support.rst
+++ b/libc/docs/uefi/support.rst
@@ -6,10 +6,6 @@ Supported Functions
.. include:: ../check.rst
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
The follow functions and headers are supported at least partially in
UEFI. Some functions are implemented fully for UEFI.
diff --git a/libc/docs/uefi/testing.rst b/libc/docs/uefi/testing.rst
index 0c484f093d6b6..7b197266d5d85 100644
--- a/libc/docs/uefi/testing.rst
+++ b/libc/docs/uefi/testing.rst
@@ -4,10 +4,6 @@
Testing the UEFI C library
==========================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Testing infrastructure
======================
diff --git a/libc/docs/uefi/using.rst b/libc/docs/uefi/using.rst
index 718ebd0fc432a..b6c01411cb581 100644
--- a/libc/docs/uefi/using.rst
+++ b/libc/docs/uefi/using.rst
@@ -4,10 +4,6 @@
Using libc for UEFI
===================
-.. contents:: Table of Contents
- :depth: 4
- :local:
-
Using the UEFI C library
========================
More information about the libc-commits
mailing list