mirror of
https://gitlab.kitware.com/vtk/vtk-m
synced 2024-09-08 13:23:51 +00:00
125 lines
4.0 KiB
CMake
125 lines
4.0 KiB
CMake
##=============================================================================
|
|
##
|
|
## Copyright (c) Kitware, Inc.
|
|
## All rights reserved.
|
|
## See LICENSE.txt for details.
|
|
##
|
|
## This software is distributed WITHOUT ANY WARRANTY; without even
|
|
## the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
## PURPOSE. See the above copyright notice for more information.
|
|
##
|
|
##=============================================================================
|
|
|
|
if (NOT DEFINED "ENV{GITLAB_CI}")
|
|
message(FATAL_ERROR
|
|
"This script assumes it is being run inside of GitLab-CI")
|
|
endif ()
|
|
|
|
# Set up the source and build paths.
|
|
set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}")
|
|
set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build")
|
|
|
|
if ("$ENV{VTKM_SETTINGS}" STREQUAL "")
|
|
message(FATAL_ERROR
|
|
"The VTKM_SETTINGS environment variable is required to know what "
|
|
"build options should be used.")
|
|
endif ()
|
|
|
|
# Default to Release builds.
|
|
if (NOT "$ENV{CMAKE_BUILD_TYPE}" STREQUAL "")
|
|
set(CTEST_BUILD_CONFIGURATION "$ENV{CMAKE_BUILD_TYPE}")
|
|
endif ()
|
|
if (NOT CTEST_BUILD_CONFIGURATION)
|
|
set(CTEST_BUILD_CONFIGURATION "Release")
|
|
endif ()
|
|
|
|
# Set the build metadata.
|
|
string(TOLOWER ${CTEST_BUILD_CONFIGURATION} build_type)
|
|
set(CTEST_BUILD_NAME "${build_type}+$ENV{VTKM_SETTINGS}")
|
|
|
|
set(site_name "$ENV{CI_JOB_NAME}")
|
|
string(REPLACE "docs:" "docs_" site_name "${site_name}")
|
|
string(REPLACE "build" "" site_name "${site_name}")
|
|
string(REPLACE "test" "" site_name "${site_name}")
|
|
string(REPLACE ":" "" site_name "${site_name}")
|
|
set(CTEST_SITE ${site_name})
|
|
|
|
# Default to using Ninja.
|
|
if (NOT "$ENV{CMAKE_GENERATOR}" STREQUAL "")
|
|
set(CTEST_CMAKE_GENERATOR "$ENV{CMAKE_GENERATOR}")
|
|
endif ()
|
|
if (NOT CTEST_CMAKE_GENERATOR)
|
|
set(CTEST_CMAKE_GENERATOR "Ninja")
|
|
endif ()
|
|
|
|
# Determine the track to submit to.
|
|
set(CTEST_TRACK "merge-requests")
|
|
if("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "master")
|
|
set(CTEST_TRACK "master")
|
|
elseif("$ENV{CI_COMMIT_REF_NAME}" STREQUAL "release")
|
|
set(CTEST_TRACK "release")
|
|
endif()
|
|
|
|
if("$ENV{VTKM_CI_NIGHTLY}" STREQUAL "TRUE")
|
|
set(CTEST_TRACK "Nightly")
|
|
endif()
|
|
|
|
# In Make, default parallelism to number of cores.
|
|
if(CTEST_CMAKE_GENERATOR STREQUAL "Unix Makefiles")
|
|
include(ProcessorCount)
|
|
ProcessorCount(nproc)
|
|
|
|
if(DEFINED ENV{CTEST_MAX_PARALLELISM})
|
|
if(nproc GREATER $ENV{CTEST_MAX_PARALLELISM})
|
|
set(nproc $ENV{CTEST_MAX_PARALLELISM})
|
|
endif()
|
|
endif()
|
|
|
|
set(CTEST_BUILD_FLAGS "-j${nproc}")
|
|
endif()
|
|
|
|
# In Ninja, we do not need to specify parallelism unless we need to restrict
|
|
# the number of threads.
|
|
if(CTEST_CMAKE_GENERATOR STREQUAL "Ninja" AND DEFINED ENV{CTEST_MAX_PARALLELISM})
|
|
set(CTEST_BUILD_FLAGS "-j$ENV{CTEST_MAX_PARALLELISM}")
|
|
endif()
|
|
|
|
if(DEFINED ENV{CTEST_MEMORYCHECK_TYPE})
|
|
set(env_value "$ENV{CTEST_MEMORYCHECK_TYPE}")
|
|
list(APPEND optional_variables "set(CTEST_MEMORYCHECK_TYPE ${env_value})")
|
|
endif()
|
|
|
|
if(DEFINED ENV{CTEST_MEMORYCHECK_SANITIZER_OPTIONS})
|
|
set(env_value "$ENV{CTEST_MEMORYCHECK_SANITIZER_OPTIONS}")
|
|
list(APPEND optional_variables "set(CTEST_MEMORYCHECK_SANITIZER_OPTIONS ${env_value})")
|
|
endif()
|
|
|
|
# Override revision (Git Commit) if ORIGINAL_COMMIT_SHA is found in source code
|
|
if (EXISTS "ORIGINAL_COMMIT_SHA")
|
|
file(READ "ORIGINAL_COMMIT_SHA" commit_sha)
|
|
list(APPEND optional_variables "set(CTEST_UPDATE_VERSION_OVERRIDE ${commit_sha})")
|
|
endif()
|
|
|
|
#We need to do write this information out to a file in the build directory
|
|
file(TO_CMAKE_PATH "${CTEST_SOURCE_DIRECTORY}" src_path) #converted so we can run on windows
|
|
file(TO_CMAKE_PATH "${CTEST_BINARY_DIRECTORY}" bin_path) #converted so we can run on windows
|
|
|
|
set(state
|
|
"
|
|
set(CTEST_SOURCE_DIRECTORY \"${src_path}\")
|
|
set(CTEST_BINARY_DIRECTORY \"${bin_path}\")
|
|
|
|
set(CTEST_BUILD_NAME ${CTEST_BUILD_NAME})
|
|
set(CTEST_SITE ${CTEST_SITE})
|
|
|
|
set(CTEST_CMAKE_GENERATOR \"${CTEST_CMAKE_GENERATOR}\")
|
|
set(CTEST_BUILD_CONFIGURATION ${CTEST_BUILD_CONFIGURATION})
|
|
set(CTEST_BUILD_FLAGS \"${CTEST_BUILD_FLAGS}\")
|
|
|
|
set(CTEST_TRACK ${CTEST_TRACK})
|
|
|
|
${optional_variables}
|
|
"
|
|
)
|
|
file(WRITE ${CTEST_BINARY_DIRECTORY}/CIState.cmake "${state}")
|