CMake/Tests/Contracts/cse-snapshot/Dashboard.cmake.in

77 lines
2.6 KiB
CMake

# This "ctest -S" script may be configured to drive a nightly dashboard on any
# Linux machine.
#
set(CTEST_BINARY_DIRECTORY "@binary_dir@")
set(CTEST_BUILD_NAME "@BUILDNAME@")
set(CTEST_SITE "@SITE@")
set(CTEST_SOURCE_DIRECTORY "@source_dir@")
set(PROCESSOR_COUNT "@PROCESSOR_COUNT@")
# Assume a Linux build, with a make that supports -j. Modify this script if
# assumption is ever invalid.
#
if(PROCESSOR_COUNT)
set(CTEST_BUILD_FLAGS "-j${PROCESSOR_COUNT}")
endif()
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
set(CTEST_NOTES_FILES "${CTEST_SCRIPT_DIRECTORY}/${CTEST_SCRIPT_NAME}")
message("Cleaning binary dir '${CTEST_BINARY_DIRECTORY}'")
ctest_empty_binary_directory("${CTEST_BINARY_DIRECTORY}")
# Intentionally no ctest_update step in this script. This script is run as a
# "Contract" test on a CMake dashboard submission using the just-built ctest
# as the driver. The download step in the Contract CMakeLists file takes care
# of setting up the source tree before calling this ctest -S script. The idea
# is that the source tree will be the same every day, so there should not be
# an "update" step for this build.
message("Configuring CSE in binary dir '${CTEST_BINARY_DIRECTORY}'")
set_property(GLOBAL PROPERTY SubProject "CSE-toplevel")
set_property(GLOBAL PROPERTY Label "CSE-toplevel")
ctest_start("Experimental")
set(CSE_TOPLEVEL_OPTIONS
-DEXTERNAL_PROJECT_DASHBOARD_BUILD:BOOL=ON
-DEXTERNAL_PROJECT_TESTS:BOOL=ON
-DCSE_INSTALL_PREFIX:PATH=${CTEST_BINARY_DIRECTORY}/built
-DCSE_SUBSET:STRING=ALL
-DCTEST_SITE:STRING=${CTEST_SITE}
)
ctest_configure(OPTIONS "${CSE_TOPLEVEL_OPTIONS}")
# The configure step produces a file listing the CSE packages and dependencies.
# This file also generates Project.xml and stores it in ${PROJECT_XML}.
#
set(subprojects "")
if(EXISTS "${CTEST_BINARY_DIRECTORY}/CSEBuildtimeDepends.cmake")
message("Including CSEBuildtimeDepends.cmake")
include("${CTEST_BINARY_DIRECTORY}/CSEBuildtimeDepends.cmake")
set(subprojects ${CSE_ALL_SORTED})
message("Submitting Project.xml")
ctest_submit(FILES ${PROJECT_XML})
endif()
message("Submitting CSE configure results")
ctest_submit()
if(subprojects)
message("Building by looping over subprojects...")
foreach(subproject ${subprojects})
message("########## ${subproject} ##########")
set_property(GLOBAL PROPERTY SubProject "${subproject}")
set_property(GLOBAL PROPERTY Label "${subproject}")
ctest_build(TARGET "${subproject}" APPEND)
message("Submitting ${subproject} build results")
ctest_submit(PARTS build)
endforeach()
else()
message("Building all...")
ctest_build(APPEND)
message("Submitting build results")
ctest_submit(PARTS build)
endif()