2024-01-14 08:10:14 -06:00
#
#
if ( NOT ROCPROFILER_BUILD_DOCS )
return ( )
endif ( )
2025-05-14 00:47:51 -05:00
set ( PACKAGE_NAME ${ PROJECT_NAME } )
2024-01-14 08:10:14 -06:00
include ( FetchContent )
if ( CMAKE_VERSION VERSION_GREATER_EQUAL 3.24 )
cmake_policy ( SET CMP0135 NEW )
endif ( )
2024-01-26 15:06:34 -06:00
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 )
2024-01-26 08:36:23 -06:00
2024-01-14 08:10:14 -06:00
if ( NOT EXISTS ${ PROJECT_BINARY_DIR } /external/miniconda.sh )
2024-01-26 15:06:34 -06:00
message (
STATUS
2025-04-24 10:22:03 +05:30
"Downloading https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh"
2024-01-26 15:06:34 -06:00
)
file (
2025-04-24 10:22:03 +05:30
DOWNLOAD
https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
2024-01-26 15:06:34 -06:00
${ 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
2025-04-24 10:22:03 +05:30
"Download to ${PROJECT_BINARY_DIR}/external/miniconda.sh from https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh failed"
2024-01-26 15:06:34 -06:00
)
endif ( )
2024-01-14 08:10:14 -06:00
endif ( )
function ( DOCS_EXECUTE_PROCESS )
string ( REPLACE ";" " " _MSG "${ARGN}" )
message ( STATUS "[rocprofiler][docs] Executing: ${_MSG}" )
execute_process (
2024-01-26 18:47:13 -06:00
COMMAND ${ CMAKE_COMMAND } -E env HOME= ${ DOCS_WD } ${ ARGN }
2024-01-14 08:10:14 -06:00
RESULT_VARIABLE _RET
OUTPUT_VARIABLE _OUT
ERROR_VARIABLE _ERR
2024-01-24 16:32:54 -06:00
WORKING_DIRECTORY ${ PROJECT_BINARY_DIR } /external )
2024-01-14 08:10:14 -06:00
if ( NOT _RET EQUAL 0 )
message ( STATUS "docs command failed: ${_RET}" )
message ( STATUS "stderr:\n${_ERR}" )
message ( STATUS "stdout:\n${_OUT}" )
2024-01-24 16:32:54 -06:00
string ( REPLACE ";" " " _CMD "${ARGN}" )
2024-01-26 09:57:02 -06:00
message ( FATAL_ERROR "command failure: ${_CMD}" )
2024-01-14 08:10:14 -06:00
endif ( )
endfunction ( )
2024-12-10 14:15:59 +05:30
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 ( )
2024-01-14 08:10:14 -06:00
file (
WRITE "${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh"
2024-01-26 15:06:34 -06:00
"#!${SHELL_CMD}
2024-01-24 16:32:54 -06:00
2024-01-26 15:06:34 -06:00
set -e
2024-01-26 09:57:02 -06:00
set -x
2024-01-26 08:36:23 -06:00
2024-01-26 15:06:34 -06:00
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}
2024-01-24 16:32:54 -06:00
export PATH
2024-01-14 08:10:14 -06:00
2024-01-26 09:57:02 -06:00
source ${CONDA_ROOT}/bin/activate
2024-01-26 15:06:34 -06:00
conda config --set always_yes yes
2025-04-24 10:22:03 +05:30
conda update -n base conda
2024-01-26 15:06:34 -06:00
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
2024-01-26 09:57:02 -06:00
2024-01-14 08:10:14 -06:00
conda activate rocprofiler-docs
2024-01-26 15:06:34 -06:00
2024-01-26 09:57:02 -06:00
which python
2024-06-22 00:10:54 +05:30
python -m pip install -r ${CMAKE_CURRENT_LIST_DIR}/sphinx/requirements.txt
2024-01-26 15:06:34 -06:00
2024-01-26 09:57:02 -06:00
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
2025-02-13 20:55:30 +05:30
mkdir -p _doxygen/rocprofiler-sdk
mkdir -p _doxygen/roctx
2024-01-26 09:57:02 -06:00
doxygen rocprofiler-sdk.dox
2025-01-22 23:04:21 +05:30
doxygen rocprofiler-sdk-roctx.dox
2024-01-26 09:57:02 -06:00
2025-01-22 23:04:21 +05:30
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
2024-01-26 09:57:02 -06:00
2025-05-14 00:47:51 -05:00
make html SPHINXOPTS=\" --keep-going -n -q -T ${ DOCS_BUILD_JOBS } \"
2024-01-26 09:57:02 -06:00
rm -rf ${ PROJECT_SOURCE_DIR } /build-docs
2024-01-14 08:10:14 -06:00
")
2024-01-26 15:06:34 -06:00
if(CHMOD_CMD)
docs_execute_process(${CHMOD_CMD} +x ${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh)
2025-05-14 00:47:51 -05:00
add_custom_target(docs ${CMAKE_COMMAND} -E env HOME=${DOCS_WD}
${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh)
2024-01-26 15:06:34 -06:00
else()
2025-05-14 00:47:51 -05:00
add_custom_target(docs ${CMAKE_COMMAND} -E env HOME=${DOCS_WD} ${SHELL_CMD}
${CMAKE_CURRENT_BINARY_DIR}/build-docs.sh)
2024-01-26 15:06:34 -06:00
endif()
2024-01-14 08:10:14 -06:00
install(
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/_build/html/
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/html/${PACKAGE_NAME}
COMPONENT docs
2025-05-14 00:47:51 -05:00
OPTIONAL USE_SOURCE_PERMISSIONS FILES_MATCHING
2024-01-14 08:10:14 -06:00
PATTERN " * " )