Skip to content

[libc][docgen] regen docgen via cmake #119628

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Jan 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 65 additions & 2 deletions libc/docs/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,72 @@

if (LLVM_ENABLE_SPHINX)
include(AddSphinxTarget)
if (SPHINX_FOUND)
if (${SPHINX_OUTPUT_HTML})
add_sphinx_target(html libc)
# Similar to clang, we copy our static .rst files from libc/docs/ to the
# $build_dir/libc/docs/. That way, we can have a mix of both static
# (committed) .rst files, and dynamically generated .rst files. We don't
# want the dynamically generated .rst files to pollute the source tree.
add_custom_target(copy-libc-rst-docs
COMMAND "${CMAKE_COMMAND}" -E copy_directory
"${CMAKE_CURRENT_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}")

# For headers that are nested in directories, we need to
# `mkdir $build_dir/libc/docs/headers/$dir` since the above copy_directory
# command does not create such copies. Otherwise, the invocation of docgen
# below will fail since the output file would be placed in a directory that
# does not exist, leading to a `No such file or directory` error from the
# shell.
file(MAKE_DIRECTORY
"${CMAKE_CURRENT_BINARY_DIR}/headers/arpa/"
"${CMAKE_CURRENT_BINARY_DIR}/headers/sys/"
)

# Change sphinx to build from $build_dir/libc/docs/ rather than
# llvm-project/libc/docs/.
add_sphinx_target(html libc SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}")
# Depend on the copy target.
add_dependencies(docs-libc-html copy-libc-rst-docs)

# Maintain a list of headers for which we dynamically generate html docs
# for via docgen. For more complex docs (such as per arch support, a la
# math.h), those should be omitted and exist statically in
# libc/docs/headers/.
list(APPEND docgen_list
arpa/inet
assert
ctype
errno
fenv
float
inttypes
locale
setjmp
signal
stdbit
stdio
stdlib
string
strings
sys/mman
Comment on lines +48 to +49
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder why these are being highlighted? Are they keywords in CMake? Perhaps I should make this a ; separated string?

threads
uchar
wchar
wctype
)

foreach(stem IN LISTS docgen_list)
# It is an error in cmake to have a target name that contains a "/", but
# docgen relies on the "/" to find headers nested under directories.
# Replace with underscore.
string(REPLACE "/" "_" stem_rst ${stem})

# docgen invocation.
add_custom_target(${stem_rst}
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/../utils/docgen/docgen.py ${stem}.h >
${CMAKE_CURRENT_BINARY_DIR}/headers/${stem}.rst)
# depend on the docgen invocation.
add_dependencies(docs-libc-html ${stem_rst})
endforeach()
endif()
endif()
endif()
50 changes: 0 additions & 50 deletions libc/docs/headers/arpa/inet.rst

This file was deleted.

27 changes: 0 additions & 27 deletions libc/docs/headers/assert.rst

This file was deleted.

130 changes: 0 additions & 130 deletions libc/docs/headers/ctype.rst

This file was deleted.

35 changes: 0 additions & 35 deletions libc/docs/headers/errno.rst

This file was deleted.

Loading
Loading