2018-04-10 17:03:59 +02:00
|
|
|
#
|
|
|
|
# Copyright(c) 2006 to 2018 ADLINK Technology Limited and others
|
|
|
|
#
|
|
|
|
# This program and the accompanying materials are made available under the
|
|
|
|
# terms of the Eclipse Public License v. 2.0 which is available at
|
|
|
|
# http://www.eclipse.org/legal/epl-2.0, or the Eclipse Distribution License
|
|
|
|
# v. 1.0 which is available at
|
|
|
|
# http://www.eclipse.org/org/documents/edl-v10.php.
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
|
|
|
|
#
|
|
|
|
set(CMAKE_INSTALL_EXAMPLESDIR "${CMAKE_INSTALL_DATADIR}/${CMAKE_PROJECT_NAME}/examples")
|
|
|
|
|
|
|
|
add_subdirectory(helloworld)
|
|
|
|
add_subdirectory(roundtrip)
|
|
|
|
add_subdirectory(throughput)
|
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
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()
|
2018-04-10 17:03:59 +02:00
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
add_custom_target(examples_docs ALL)
|
|
|
|
add_custom_command(TARGET examples_docs
|
|
|
|
COMMAND ${CMAKE_COMMAND} -E tar "zxf" "Downloaded${EXAMPLES_HTML_ARCHIVE}"
|
|
|
|
VERBATIM)
|
2018-04-10 17:03:59 +02:00
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
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)
|
2018-04-10 17:03:59 +02:00
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
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)
|
2018-04-10 17:03:59 +02:00
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
# 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})
|
2018-04-10 17:03:59 +02:00
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
# 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")
|
2018-04-10 17:03:59 +02:00
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
add_custom_command(OUTPUT ${builder_output}
|
|
|
|
COMMAND ${CMAKE_COMMAND}
|
|
|
|
-E tar "zcf"
|
|
|
|
"${EXAMPLES_HTML_ARCHIVE}"
|
|
|
|
${html_outputs}
|
|
|
|
APPEND
|
|
|
|
VERBATIM)
|
2018-04-10 17:03:59 +02:00
|
|
|
|
2018-05-07 14:08:20 +02:00
|
|
|
# Remove generated files when cleaning the build tree
|
|
|
|
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
|
2018-04-10 17:03:59 +02:00
|
|
|
"cache"
|
|
|
|
"${builder_log}"
|
|
|
|
"objects.inv"
|
|
|
|
${html_outputs}
|
|
|
|
"_sources"
|
2018-05-07 14:08:20 +02:00
|
|
|
"${EXAMPLES_HTML_ARCHIVE}")
|
2018-04-10 17:03:59 +02:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
|
|
|
|
set(platform_exclude "examples/helloworld/Makefile")
|
|
|
|
elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
|
|
|
set(platform_exclude "examples/helloworld/vs|examples/helloworld/HelloWorld\.sln")
|
|
|
|
else()
|
|
|
|
set(platform_exclude "this_is_a_placeholder")
|
|
|
|
endif()
|
|
|
|
|
|
|
|
# Install example source-files
|
|
|
|
install(
|
|
|
|
DIRECTORY "${PROJECT_SOURCE_DIR}/examples/"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_EXAMPLESDIR}"
|
|
|
|
COMPONENT dev
|
|
|
|
PATTERN "CMakeLists.export" EXCLUDE
|
|
|
|
PATTERN "examples/CMakeLists.txt" EXCLUDE
|
|
|
|
REGEX ${platform_exclude} EXCLUDE
|
|
|
|
REGEX "\.rst|\.py" EXCLUDE
|
|
|
|
)
|
|
|
|
|
|
|
|
# Install example html docs files
|
|
|
|
# TODO this should be replaced by install commands that use ExternalData refs (preferably in examples' CMakeLists.txt)
|
|
|
|
install(
|
|
|
|
DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/"
|
|
|
|
DESTINATION "${CMAKE_INSTALL_EXAMPLESDIR}"
|
|
|
|
COMPONENT dev
|
|
|
|
FILES_MATCHING
|
|
|
|
PATTERN "CMakeFiles" EXCLUDE
|
|
|
|
PATTERN "cache" EXCLUDE
|
|
|
|
PATTERN "_sources" EXCLUDE
|
|
|
|
PATTERN "*.html"
|
|
|
|
PATTERN "*.js"
|
|
|
|
PATTERN "_static/*"
|
|
|
|
)
|
|
|
|
|