ファイル
Kandula, Venkateshwar reddy 89fbdeb196 [docs] Improve readability of ROCprofiler-SDK API library documentation (#359)
* Use custom .rst to make api doc more readable.

* Update index.rst

* Misc docs updates

- doxygen source code fixes
- updated doxygen files
- fixed conf.py (does not generate code in source tree)

* Update source/docs/api-reference/rocprofiler-sdk_api_reference.rst

Co-authored-by: Rawat, Swati <Swati.Rawat@amd.com>

* Update source/docs/api-reference/rocprofiler-sdk_api_reference.rst

Co-authored-by: Rawat, Swati <Swati.Rawat@amd.com>

* Update source/docs/api-reference/rocprofiler-sdk_api/modules.rst

Co-authored-by: Rawat, Swati <Swati.Rawat@amd.com>

* Update source/docs/api-reference/rocprofiler-sdk_api/global_data_structures_topics_files.rst

Co-authored-by: Rawat, Swati <Swati.Rawat@amd.com>

* Duplicate

* test warnings

* Update CMakeLists.txt

* Update rocprofiler-sdk.dox.in

* Update update-docs.sh

* fix docs build failures by -q -T flags.

* set warn_as_error to NO.

* test -W to suppress warnings.

* remove -q flag from make.

* reduce dot graph depth to 100

* Update custom docs target

- docs target is now no longer part of the dependency list for the all target
- installation of docs requires explicitly building the docs target (i.e. OPTIONAL install of _build/html/ folder)

* add quit and trace mode back.

* increase DOT_GRAPH_MAX_NODES to 500 back.

* Format.

---------

Co-authored-by: Venkateshwar Reddy Kandula <vkandula@amd.com>
Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
Co-authored-by: Bhardwaj, Gopesh <Gopesh.Bhardwaj@amd.com>
Co-authored-by: Rawat, Swati <Swati.Rawat@amd.com>
Co-authored-by: Madsen, Jonathan <Jonathan.Madsen@amd.com>

[ROCm/rocprofiler-sdk commit: 6ec9526475]
2025-05-14 11:17:51 +05:30

147 行
4.0 KiB
CMake

#
#
if(NOT ROCPROFILER_BUILD_DOCS)
return()
endif()
set(PACKAGE_NAME ${PROJECT_NAME})
include(FetchContent)
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.24)
cmake_policy(SET CMP0135 NEW)
endif()
set(DOCS_WD ${CMAKE_CURRENT_BINARY_DIR})
set(CONDA_ROOT ${PROJECT_BINARY_DIR}/external/miniconda)
find_program(SHELL_CMD NAMES bash sh REQUIRED)
find_program(CHMOD_CMD NAMES chmod)
if(NOT EXISTS ${PROJECT_BINARY_DIR}/external/miniconda.sh)
message(
STATUS
"Downloading https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh"
)
file(
DOWNLOAD
https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
${PROJECT_BINARY_DIR}/external/miniconda.sh
STATUS MINICONDA_DOWNLOAD_RET
INACTIVITY_TIMEOUT 60
SHOW_PROGRESS)
if(NOT MINICONDA_DOWNLOAD_RET EQUAL 0)
message(
FATAL_ERROR
"Download to ${PROJECT_BINARY_DIR}/external/miniconda.sh from https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh failed"
)
endif()
endif()
function(DOCS_EXECUTE_PROCESS)
string(REPLACE ";" " " _MSG "${ARGN}")
message(STATUS "[rocprofiler][docs] Executing: ${_MSG}")
execute_process(
COMMAND ${CMAKE_COMMAND} -E env HOME=${DOCS_WD} ${ARGN}
RESULT_VARIABLE _RET
OUTPUT_VARIABLE _OUT
ERROR_VARIABLE _ERR
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/external)
if(NOT _RET EQUAL 0)
message(STATUS "docs command failed: ${_RET}")
message(STATUS "stderr:\n${_ERR}")
message(STATUS "stdout:\n${_OUT}")
string(REPLACE ";" " " _CMD "${ARGN}")
message(FATAL_ERROR "command failure: ${_CMD}")
endif()
endfunction()
include(ProcessorCount)
processorcount(ROCP_NUM_PROCS)
if(NOT ROCP_NUM_PROCS EQUAL 0)
set(DOCS_BUILD_JOBS -j${ROCP_NUM_PROCS})
message(STATUS "Using ${ROCP_NUM_PROCS} jobs for docs build")
endif()
file(
WRITE "${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh"
"#!${SHELL_CMD}
set -e
set -x
HOME=${DOCS_WD}
export HOME
env
if [ ! -d '${CONDA_ROOT}' ]; then
chmod +x ${PROJECT_BINARY_DIR}/external/miniconda.sh
${PROJECT_BINARY_DIR}/external/miniconda.sh -b -p ${CONDA_ROOT}
fi
PATH=${PROJECT_BINARY_DIR}/external/miniconda/bin:\${PATH}
export PATH
source ${CONDA_ROOT}/bin/activate
conda config --set always_yes yes
conda update -n base conda
if [ ! -d '${CONDA_ROOT}/envs/rocprofiler-docs' ]; then
${CONDA_ROOT}/bin/conda env create -n rocprofiler-docs -f ${CMAKE_CURRENT_LIST_DIR}/environment.yml
fi
which python
conda activate rocprofiler-docs
which python
python -m pip install -r ${CMAKE_CURRENT_LIST_DIR}/sphinx/requirements.txt
WORK_DIR=${PROJECT_SOURCE_DIR}/source/docs
SOURCE_DIR=${PROJECT_SOURCE_DIR}
cd \${SOURCE_DIR}
cmake -B build-docs \${SOURCE_DIR} -DROCPROFILER_INTERNAL_BUILD_DOCS=ON
cd \${WORK_DIR}
cmake -DSOURCE_DIR=\${SOURCE_DIR} -P \${WORK_DIR}/generate-doxyfile.cmake
mkdir -p _doxygen/rocprofiler-sdk
mkdir -p _doxygen/roctx
doxygen rocprofiler-sdk.dox
doxygen rocprofiler-sdk-roctx.dox
doxysphinx build \${WORK_DIR} \${WORK_DIR}/_build/html \${WORK_DIR}/_doxygen/rocprofiler-sdk/html
doxysphinx build \${WORK_DIR} \${WORK_DIR}/_build/html \${WORK_DIR}/_doxygen/roctx/html
make html SPHINXOPTS=\"--keep-going -n -q -T ${DOCS_BUILD_JOBS}\"
rm -rf ${PROJECT_SOURCE_DIR}/build-docs
")
if(CHMOD_CMD)
docs_execute_process(${CHMOD_CMD} +x ${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh)
add_custom_target(docs ${CMAKE_COMMAND} -E env HOME=${DOCS_WD}
${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh)
else()
add_custom_target(docs ${CMAKE_COMMAND} -E env HOME=${DOCS_WD} ${SHELL_CMD}
${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh)
endif()
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/_build/html/
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/html/${PACKAGE_NAME}
COMPONENT docs
OPTIONAL USE_SOURCE_PERMISSIONS FILES_MATCHING
PATTERN "*")