Change cmake files to make documentation optional (#2)
* CHAM-613 - Add cmake options for building and downloading docs Signed-off-by: Patrick Masselink <patrick.masselink@adlinktech.com>
This commit is contained in:
parent
22a75729c5
commit
1289c7f7dc
3 changed files with 270 additions and 289 deletions
|
@ -15,102 +15,81 @@ add_subdirectory(helloworld)
|
|||
add_subdirectory(roundtrip)
|
||||
add_subdirectory(throughput)
|
||||
|
||||
# Examples HTML documentation
|
||||
set(EXAMPLES_HTML_ARCHIVE "${CMAKE_PROJECT_NAME}ExamplesHTML.tar.gz")
|
||||
set(EXAMPLES_HTML_URI "http://jenkins.prismtech.com:8080/job/BuildChameleonLinux64bit/lastSuccessfulBuild/artifact/cham/builds/examples/${EXAMPLES_HTML_ARCHIVE}")
|
||||
if (USE_DOCS)
|
||||
# TODO Move to docs CMakeLists
|
||||
set(EXAMPLES_HTML_ARCHIVE "${CMAKE_PROJECT_NAME}ExamplesHTML.tar.gz")
|
||||
if (DOWNLOAD_DOCS)
|
||||
message(STATUS "${CMAKE_PROJECT_NAME} Examples documentation: Success (download)")
|
||||
set(EXAMPLES_HTML_URI "http://jenkins.prismtech.com:8080/job/BuildChameleonLinux64bit/lastSuccessfulBuild/artifact/cham/builds/examples/${EXAMPLES_HTML_ARCHIVE}")
|
||||
file(DOWNLOAD "${EXAMPLES_HTML_URI}" "${CMAKE_CURRENT_BINARY_DIR}/Downloaded${EXAMPLES_HTML_ARCHIVE}"
|
||||
TIMEOUT 10
|
||||
STATUS status)
|
||||
list(GET status 0 status_code)
|
||||
list(GET status 1 status_string)
|
||||
if (NOT status_code EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
"Failed to download ${EXAMPLES_HTML_URI} (Code: ${status_code}, ${status_string})")
|
||||
endif()
|
||||
|
||||
if (BUILD_DOCS)
|
||||
find_program(SPHINX_EXECUTABLE NAMES sphinx-build DOC "Sphinx documentation builder")
|
||||
if (NOT SPHINX_EXECUTABLE)
|
||||
message(STATUS "Unable to find sphinx-build executable, downloading examples docs...")
|
||||
set(BUILD_DOCS off)
|
||||
endif()
|
||||
endif()
|
||||
add_custom_target(examples_docs ALL)
|
||||
add_custom_command(TARGET examples_docs
|
||||
COMMAND ${CMAKE_COMMAND} -E tar "zxf" "Downloaded${EXAMPLES_HTML_ARCHIVE}"
|
||||
VERBATIM)
|
||||
|
||||
if (BUILD_DOCS)
|
||||
message(STATUS "Examples html docs will be built using sphinx (${SPHINX_EXECUTABLE})")
|
||||
elseif (BUILD_DOCS)
|
||||
message(STATUS "${CMAKE_PROJECT_NAME} Examples documentation: Success (build)")
|
||||
# Process sphinx configuration file
|
||||
set(sph_conf_author "ADLINK")
|
||||
string(TIMESTAMP sph_conf_copyright "%Y, ADLINK")
|
||||
set(sph_conf_version "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
|
||||
set(sph_conf_release "${PROJECT_VERSION}")
|
||||
configure_file(sphinx-conf.py.in conf.py @ONLY)
|
||||
|
||||
# Process sphinx configuration file
|
||||
set(sph_conf_author "ADLINK")
|
||||
string(TIMESTAMP sph_conf_copyright "%Y, ADLINK")
|
||||
set(sph_conf_version "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
|
||||
set(sph_conf_release "${PROJECT_VERSION}")
|
||||
configure_file(sphinx-conf.py.in conf.py @ONLY)
|
||||
set(builder_output "examples_html_output")
|
||||
set(builder_log "sphinx-examples-html.log")
|
||||
add_custom_command(OUTPUT ${builder_output}
|
||||
COMMAND ${SPHINX_EXECUTABLE}
|
||||
-b html
|
||||
-d ${CMAKE_CURRENT_BINARY_DIR}/cache
|
||||
-c ${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR} > ${builder_log}
|
||||
COMMENT "Running Sphinx for examples html output"
|
||||
VERBATIM)
|
||||
|
||||
set(builder_output "examples_html_output")
|
||||
set(builder_log "sphinx-examples-html.log")
|
||||
add_custom_command(
|
||||
OUTPUT ${builder_output}
|
||||
COMMAND ${SPHINX_EXECUTABLE}
|
||||
-b html
|
||||
-d ${CMAKE_CURRENT_BINARY_DIR}/cache
|
||||
-c ${CMAKE_CURRENT_BINARY_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_BINARY_DIR}
|
||||
> ${builder_log}
|
||||
COMMENT "Running Sphinx for examples html output"
|
||||
VERBATIM
|
||||
)
|
||||
# OUTPUT is a fake target / symbolic name, not an actual file
|
||||
set_property(SOURCE ${builder_output} PROPERTY SYMBOLIC 1)
|
||||
add_custom_target(examples_docs ALL DEPENDS ${builder_output})
|
||||
|
||||
# OUTPUT is a fake target / symbolic name, not an actual file
|
||||
set_property(SOURCE ${builder_output} PROPERTY SYMBOLIC 1)
|
||||
add_custom_target(examples_docs ALL DEPENDS ${builder_output})
|
||||
# Archive the output html files, will become a jenkins artifact for use in other jobs
|
||||
# TODO this hardcoded list and archiving should be replaced by ExternalData refs
|
||||
set(html_outputs
|
||||
"_static"
|
||||
"search.html"
|
||||
"searchindex.js"
|
||||
"genindex.html"
|
||||
"examples.html"
|
||||
"helloworld/readme.html"
|
||||
"roundtrip/readme.html"
|
||||
"throughput/readme.html")
|
||||
|
||||
# Archive the output html files, will become a jenkins artifact for use in other jobs
|
||||
# TODO this hardcoded list and archiving should be replaced by ExternalData refs
|
||||
set(html_outputs
|
||||
"_static"
|
||||
"search.html"
|
||||
"searchindex.js"
|
||||
"genindex.html"
|
||||
"examples.html"
|
||||
"helloworld/readme.html"
|
||||
"roundtrip/readme.html"
|
||||
"throughput/readme.html"
|
||||
)
|
||||
add_custom_command(
|
||||
OUTPUT ${builder_output}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-E tar "zcf"
|
||||
"${EXAMPLES_HTML_ARCHIVE}"
|
||||
${html_outputs}
|
||||
APPEND
|
||||
VERBATIM
|
||||
)
|
||||
add_custom_command(OUTPUT ${builder_output}
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
-E tar "zcf"
|
||||
"${EXAMPLES_HTML_ARCHIVE}"
|
||||
${html_outputs}
|
||||
APPEND
|
||||
VERBATIM)
|
||||
|
||||
# Remove generated files when cleaning the build tree
|
||||
set_property(
|
||||
DIRECTORY
|
||||
APPEND PROPERTY
|
||||
ADDITIONAL_MAKE_CLEAN_FILES
|
||||
# Remove generated files when cleaning the build tree
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
|
||||
"cache"
|
||||
"${builder_log}"
|
||||
"objects.inv"
|
||||
${html_outputs}
|
||||
"_sources"
|
||||
"${EXAMPLES_HTML_ARCHIVE}"
|
||||
)
|
||||
else()
|
||||
# Download example html docs
|
||||
|
||||
file(DOWNLOAD "${EXAMPLES_HTML_URI}" "${CMAKE_CURRENT_BINARY_DIR}/Downloaded${EXAMPLES_HTML_ARCHIVE}"
|
||||
TIMEOUT 10
|
||||
STATUS status
|
||||
)
|
||||
list(GET status 0 status_code)
|
||||
list(GET status 1 status_string)
|
||||
if (NOT status_code EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
"Failed to download ${EXAMPLES_HTML_URI} \
|
||||
(Code: ${status_code}, ${status_string})"
|
||||
)
|
||||
"${EXAMPLES_HTML_ARCHIVE}")
|
||||
endif()
|
||||
|
||||
add_custom_target(examples_docs ALL)
|
||||
add_custom_command(TARGET examples_docs
|
||||
COMMAND ${CMAKE_COMMAND} -E tar "zxf" "Downloaded${EXAMPLES_HTML_ARCHIVE}"
|
||||
VERBATIM
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue