1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-15 15:02:34 +02:00
openrw/cmake/ctest/utils.ctest
2018-11-27 13:47:25 +01:00

128 lines
4.5 KiB
Plaintext

set(WARNING_MESSAGES)
set(ERROR_MESSAGES)
function(emit_warning)
message("WARNING: ${ARGV}")
list(APPEND WARNING_MESSAGES "${ARGV}")
set(WARNING_MESSAGES "${WARNING_MESSAGES}" PARENT_SCOPE)
endfunction()
function(emit_error)
message("ERROR: ${ARGV}")
list(APPEND ERROR_MESSAGES "${ARGV}")
set(ERROR_MESSAGES "${ERROR_MESSAGES}" PARENT_SCOPE)
endfunction()
function(handle_warnings_errors)
if(WARNING_MESSAGES)
foreach(WARNING_MESSAGE ${WARNING_MESSAGES})
message(WARNING "${WARNING_MESSAGE}")
endforeach()
message(WARNING "Warning(s) detected")
endif()
if(ERROR_MESSAGES)
foreach(ERROR_MESSAGE ${ERROR_MESSAGES})
message(SEND_ERROR "${ERROR_MESSAGE}")
endforeach()
message(FATAL_ERROR "Error(s) detected")
endif()
endfunction()
function(openrw_src_dir RESULT)
# Returns the OpenRW source directory
get_filename_component(SRC "${CTEST_SCRIPT_DIRECTORY}/../.." ABSOLUTE)
set("${RESULT}" "${SRC}" PARENT_SCOPE)
endfunction()
function(openrw_bin_dir_default RESULT)
# Returns the default OpenRW binary output directory
get_filename_component(BIN "${CTEST_SCRIPT_DIRECTORY}/../../build" ABSOLUTE)
set("${RESULT}" "${BIN}" PARENT_SCOPE)
endfunction()
function(openrw_bin_dir RESULT SUBDIR)
# Returns a subdirectory in the default OpenRW binary output directory
get_filename_component(BIN "${CTEST_SCRIPT_DIRECTORY}/../../build" ABSOLUTE)
set("${RESULT}" "${BIN}/${SUBDIR}" PARENT_SCOPE)
endfunction()
function(openrw_git_sha1 RESULT BINDIR)
# Get the full SHA1 of the current checked out OpenRW
include("${CTEST_SCRIPT_DIRECTORY}/../modules/GetGitRevisionDescription.cmake")
# get_git_head_revision expects CMAKE_CURRENT_BINARY_DIR to exist.
set(CMAKE_BINARY_DIR "${BINDIR}")
set(CMAKE_CURRENT_BINARY_DIR "${BINDIR}")
get_git_head_revision(GIT_REFSPEC GIT_SHA1)
set("${RESULT}" "${GIT_SHA1}" PARENT_SCOPE)
endfunction()
function(openrw_git_sha1_short RESULT BINDIR)
# Get a short SHA1 of the current checked out OpenRW
openrw_git_sha1(GIT_SHA1 "${BINDIR}")
string(SUBSTRING "${GIT_SHA1}" 0 8 SHORT_HASH)
set("${RESULT}" "${SHORT_HASH}" PARENT_SCOPE)
endfunction()
function(openrw_build_name BUILDER_NAME_RES BUILD_NAME_RES)
# Construct a name for the current builder and build.
if(CTEST_BINARY_DIRECTORY STREQUAL "")
message(FATAL_ERROR "calculate_names needs CTEST_BINARY_DIRECTORY set.")
endif()
if(MODEL_NAME STREQUAL "")
message(FATAL_ERROR "calculate_names needs MODEL_NAME set.")
endif()
if(MODEL_NAME STREQUAL "continuous")
if("$ENV{TRAVIS}")
message(STATUS "Travis detected")
set(BUILDER_NAME "Travis")
set(REPO_NAME "$ENV{TRAVIS_REPO_SLUG}")
set(REPO_BRANCH "$ENV{TRAVIS_BRANCH}")
set(GIT_HASH "$ENV{TRAVIS_COMMIT}")
set(_EVENT_TYPE "$ENV{TRAVIS_EVENT_TYPE}")
set(SUBMIT TRUE)
elseif("$ENV{APPVEYOR}")
message(STATUS "AppVeyor detected")
set(BUILDER_NAME "AppVeyor")
set(REPO_NAME "$ENV{APPVEYOR_REPO_NAME}")
set(REPO_BRANCH "$ENV{APPVEYOR_REPO_BRANCH}")
set(GIT_HASH "$ENV{APPVEYOR_REPO_COMMIT}")
if(NOT "$ENV{APPVEYOR_PULL_REQUEST_NUMBER}" STREQUAL "")
set(_EVENT_TYPE "pull_request")
else()
set(_EVENT_TYPE "push")
endif()
set(SUBMIT TRUE)
else()
message("Unknown CI")
set(BUILDER_NAME "unknown")
set(REPO_NAME "repo_name")
set(REPO_BRANCH "branch")
set(GIT_HASH "git_hash")
set(_EVENT_TYPE "nop")
set(SUBMIT FALSE)
endif()
string(SUBSTRING "${GIT_HASH}" 0 8 GIT_HASH_SHORT)
set(BUILD_NAME "${REPO_NAME}/${REPO_BRANCH}/${_EVENT_TYPE}/${GIT_HASH_SHORT}")
elseif(MODEL_NAME STREQUAL "experimental")
cmake_host_system_information(RESULT BUILDER_NAME QUERY HOSTNAME)
set(BUILD_NAME "experimental-${GIT_HASH}")
else()
message(FATAL_ERROR "Unknown MODEL_NAME (was '${MODEL_NAME}')")
endif()
set("${BUILDER_NAME_RES}" "${BUILDER_NAME}" PARENT_SCOPE)
set("${BUILD_NAME_RES}" "${BUILD_NAME}" PARENT_SCOPE)
endfunction()
function(openrw_should_submit_ci SHOULD_SUBMIT)
if("$ENV{TRAVIS}")
set(RES TRUE)
elseif("$ENV{APPVEYOR}")
set(RES TRUE)
else()
set(RES FALSE)
endif()
set("${SHOULD_SUBMIT}" "${RES}" PARENT_SCOPE)
endfunction()