You've already forked linux-packaging-mono
acceptance-tests
data
debian
docs
external
Newtonsoft.Json
api-doc-tools
api-snapshot
aspnetwebstack
bdwgc
binary-reference-assemblies
bockbuild
boringssl
cecil
cecil-legacy
corefx
corert
helix-binaries
ikdasm
ikvm
illinker-test-assets
linker
llvm-project
clang
clang-tools-extra
compiler-rt
eng
libcxx
libcxxabi
libunwind
lld
lldb
llvm
bindings
cmake
modules
AddLLVM.cmake
AddLLVMDefinitions.cmake
AddOCaml.cmake
AddSphinxTarget.cmake
CMakeLists.txt
CheckAtomic.cmake
CheckCompilerVersion.cmake
CheckLinkerFlag.cmake
ChooseMSVCCRT.cmake
CrossCompile.cmake
DetermineGCCCompatible.cmake
FindOCaml.cmake
FindSphinx.cmake
GenerateVersionFromCVS.cmake
GetHostTriple.cmake
GetSVN.cmake
HandleLLVMOptions.cmake
HandleLLVMStdlib.cmake
LLVM-Config.cmake
LLVMConfig.cmake.in
LLVMConfigVersion.cmake.in
LLVMExternalProjectUtils.cmake
LLVMInstallSymlink.cmake
LLVMProcessSources.cmake
NATIVE.cmake
TableGen.cmake
VersionFromVCS.cmake
platforms
README
config-ix.cmake
config.guess
dummy.cpp
nsis_icon.ico
nsis_logo.bmp
docs
examples
include
lib
projects
resources
runtimes
scripts
test
tools
unittests
utils
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in
version.txt.in
nuget
openmp
polly
Directory.Build.props
Directory.Build.targets
NuGet.config
azure-pipelines.yml
build.cmd
build.sh
dir.common.props
global.json
llvm.proj
mxe-Win64.cmake.in
nuget-buildtasks
nunit-lite
roslyn-binaries
rx
xunit-binaries
how-to-bump-roslyn-binaries.md
ikvm-native
llvm
m4
man
mcs
mono
msvc
netcore
po
runtime
samples
scripts
support
tools
COPYING.LIB
LICENSE
Makefile.am
Makefile.in
NEWS
README.md
acinclude.m4
aclocal.m4
autogen.sh
code_of_conduct.md
compile
config.guess
config.h.in
config.rpath
config.sub
configure.REMOVED.git-id
configure.ac.REMOVED.git-id
depcomp
install-sh
ltmain.sh.REMOVED.git-id
missing
mkinstalldirs
mono-uninstalled.pc.in
test-driver
winconfig.h
91 lines
3.4 KiB
CMake
91 lines
3.4 KiB
CMake
![]() |
|
||
|
# Create sphinx target
|
||
|
if (LLVM_ENABLE_SPHINX)
|
||
|
message(STATUS "Sphinx enabled.")
|
||
|
find_package(Sphinx REQUIRED)
|
||
|
if (LLVM_BUILD_DOCS AND NOT TARGET sphinx)
|
||
|
add_custom_target(sphinx ALL)
|
||
|
endif()
|
||
|
else()
|
||
|
message(STATUS "Sphinx disabled.")
|
||
|
endif()
|
||
|
|
||
|
|
||
|
# Handy function for creating the different Sphinx targets.
|
||
|
#
|
||
|
# ``builder`` should be one of the supported builders used by
|
||
|
# the sphinx-build command.
|
||
|
#
|
||
|
# ``project`` should be the project name
|
||
|
function (add_sphinx_target builder project)
|
||
|
set(SPHINX_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}/${builder}")
|
||
|
set(SPHINX_DOC_TREE_DIR "${CMAKE_CURRENT_BINARY_DIR}/_doctrees-${project}-${builder}")
|
||
|
set(SPHINX_TARGET_NAME docs-${project}-${builder})
|
||
|
|
||
|
if (SPHINX_WARNINGS_AS_ERRORS)
|
||
|
set(SPHINX_WARNINGS_AS_ERRORS_FLAG "-W")
|
||
|
else()
|
||
|
set(SPHINX_WARNINGS_AS_ERRORS_FLAG "")
|
||
|
endif()
|
||
|
|
||
|
add_custom_target(${SPHINX_TARGET_NAME}
|
||
|
COMMAND ${SPHINX_EXECUTABLE}
|
||
|
-b ${builder}
|
||
|
-d "${SPHINX_DOC_TREE_DIR}"
|
||
|
-q # Quiet: no output other than errors and warnings.
|
||
|
${SPHINX_WARNINGS_AS_ERRORS_FLAG} # Treat warnings as errors if requested
|
||
|
"${CMAKE_CURRENT_SOURCE_DIR}" # Source
|
||
|
"${SPHINX_BUILD_DIR}" # Output
|
||
|
COMMENT
|
||
|
"Generating ${builder} Sphinx documentation for ${project} into \"${SPHINX_BUILD_DIR}\"")
|
||
|
|
||
|
# When "clean" target is run, remove the Sphinx build directory
|
||
|
set_property(DIRECTORY APPEND PROPERTY
|
||
|
ADDITIONAL_MAKE_CLEAN_FILES
|
||
|
"${SPHINX_BUILD_DIR}")
|
||
|
|
||
|
# We need to remove ${SPHINX_DOC_TREE_DIR} when make clean is run
|
||
|
# but we should only add this path once
|
||
|
get_property(_CURRENT_MAKE_CLEAN_FILES
|
||
|
DIRECTORY PROPERTY ADDITIONAL_MAKE_CLEAN_FILES)
|
||
|
list(FIND _CURRENT_MAKE_CLEAN_FILES "${SPHINX_DOC_TREE_DIR}" _INDEX)
|
||
|
if (_INDEX EQUAL -1)
|
||
|
set_property(DIRECTORY APPEND PROPERTY
|
||
|
ADDITIONAL_MAKE_CLEAN_FILES
|
||
|
"${SPHINX_DOC_TREE_DIR}")
|
||
|
endif()
|
||
|
|
||
|
if (LLVM_BUILD_DOCS)
|
||
|
add_dependencies(sphinx ${SPHINX_TARGET_NAME})
|
||
|
|
||
|
# Handle installation
|
||
|
if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
|
||
|
if (builder STREQUAL man)
|
||
|
if (CMAKE_INSTALL_MANDIR)
|
||
|
set(INSTALL_MANDIR ${CMAKE_INSTALL_MANDIR}/)
|
||
|
else()
|
||
|
set(INSTALL_MANDIR share/man/)
|
||
|
endif()
|
||
|
# FIXME: We might not ship all the tools that these man pages describe
|
||
|
install(DIRECTORY "${SPHINX_BUILD_DIR}/" # Slash indicates contents of
|
||
|
COMPONENT "${project}-sphinx-man"
|
||
|
DESTINATION ${INSTALL_MANDIR}man1)
|
||
|
|
||
|
elseif (builder STREQUAL html)
|
||
|
string(TOUPPER "${project}" project_upper)
|
||
|
set(${project_upper}_INSTALL_SPHINX_HTML_DIR "share/doc/${project}/html"
|
||
|
CACHE STRING "HTML documentation install directory for ${project}")
|
||
|
|
||
|
# '/.' indicates: copy the contents of the directory directly into
|
||
|
# the specified destination, without recreating the last component
|
||
|
# of ${SPHINX_BUILD_DIR} implicitly.
|
||
|
install(DIRECTORY "${SPHINX_BUILD_DIR}/."
|
||
|
COMPONENT "${project}-sphinx-html"
|
||
|
DESTINATION "${${project_upper}_INSTALL_SPHINX_HTML_DIR}")
|
||
|
else()
|
||
|
message(WARNING Installation of ${builder} not supported)
|
||
|
endif()
|
||
|
endif()
|
||
|
endif()
|
||
|
endfunction()
|