diff --git a/circleci.cmake b/circleci.cmake index 6a6104ff3fa..dcbd8c16d96 100644 --- a/circleci.cmake +++ b/circleci.cmake @@ -1,45 +1,49 @@ -set(CTEST_SITE "CircleCI") +# set_from_env +# ------------ +# +# Sets a CMake variable from an environment variable. If the +# environment variable is not defined then the CMake variable is not +# modified. If DEFAULT is specified then if the environment variable +# is not defined the default value is used. Alternatively, if REQUIRED +# is specified then a FATAL_ERROR is generated. +# +# set_from_env( [REQUIRED|DEFAULT value] ) function(set_from_env var env_var) if(NOT DEFINED ENV{${env_var}}) - message(FATAL_ERROR "Required environment variable \"${env_var}\" not defined.") + if (ARGV2 STREQUAL "REQUIRED") + message(FATAL_ERROR "Required environment variable \"${env_var}\" not defined.") + elseif (ARGV2 STREQUAL "DEFAULT") + set(${var} ${ARGV3} PARENT_SCOPE) + endif() + else() + set(${var} $ENV{${env_var}} PARENT_SCOPE) endif() - set(${var} $ENV{${env_var}} PARENT_SCOPE) endfunction() - -set_from_env(CTEST_DASHBOARD_ROOT "CTEST_SOURCE_DIRECTORY") -set_from_env(CTEST_DASHBOARD_ROOT "CTEST_DASHBOARD_ROOT") -set_from_env(CTEST_CONFIGURATION_TYPE "CTEST_CONFIGURATION_TYPE") - -string(SUBSTRING $ENV{CIRCLE_SHA1} 0 7 commit_sha1) - -set(CTEST_BUILD_NAME "CircleCI-$ENV{CIRCLE_BRANCH}-${commit_sha1}") - -if( NOT "$ENV{CI_PULL_REQUEST}" STREQUAL "" ) - set(CTEST_BUILD_NAME "${CTEST_BUILD_NAME}-pull") -endif() - - -set(CTEST_CMAKE_GENERATOR "Unix Makefiles") - -if (DEFINED ENV{MAKEJ}) - set( CTEST_BUILD_FLAGS -j$ENV{MAKEJ}) -endif() - +set(CTEST_SITE "CircleCI") +set(CTEST_UPDATE_VERSION_ONLY 1) set( CTEST_TEST_ARGS ${CTEST_TEST_ARGS} PARALLEL_LEVEL 2 ) -set_from_env(CTEST_SOURCE_DIRECTORY "CTEST_SOURCE_DIRECTORY" ) -set_from_env(CTEST_BINARY_DIRECTORY "CTEST_BINARY_DIRECTORY") -set_from_env(dashboard_model "DASHBOARD_MODEL") -if (DEFINED ENV{CTEST_CONFIGURATION_TYPE}) - set(CTEST_CONFIGURATION_TYPE "$ENV{CTEST_CONFIGURATION_TYPE}") -endif() +# Make environment variables to CMake variables for CTest +set_from_env(CTEST_CMAKE_GENERATOR "CTEST_CMAKE_GENERATOR" DEFAULT "Unix Makefiles" ) +set_from_env(CTEST_BINARY_DIRECTORY "CTEST_BINARY_DIRECTORY") +set_from_env(CTEST_DASHBOARD_ROOT "CTEST_DASHBOARD_ROOT" REQUIRED) +set_from_env(CTEST_SOURCE_DIRECTORY "CTEST_SOURCE_DIRECTORY" REQUIRED) +set_from_env(CTEST_CONFIGURATION_TYPE "CTEST_CONFIGURATION_TYPE" DEFAULT "Release") +# Legacy support for MAKEJ environment variable +# Please set CTEST_BUILD_FLAGS directly +set_from_env(makej "MAKEJ") +set_from_env(CTEST_BUILD_FLAGS "CTEST_BUILD_FLAGS" DEFAULT ${MAKEJ}) -set(CTEST_UPDATE_VERSION_ONLY 1) +# Construct build name based on what is being built +string(SUBSTRING $ENV{CIRCLE_SHA1} 0 7 commit_sha1) +set(CTEST_BUILD_NAME "CircleCI-$ENV{CIRCLE_BRANCH}-${commit_sha1}") +set_from_env(dashboard_git_branch "CIRCLE_BRANCH") +set_from_env(dashboard_model "DASHBOARD_MODEL" DEFAULT "Continuous" ) set(dashboard_loop 0) list(APPEND CTEST_NOTES_FILES @@ -59,3 +63,8 @@ SET (dashboard_cache " include("${CTEST_SCRIPT_DIRECTORY}/itk_common.cmake") + +# itk_common produces a fatal error ( and exits ) if there is a build +# error or warning and also for test failures. If itk_common does not +# terminate execution of this script early, then the build is OK. +return(0) diff --git a/itk_common.cmake b/itk_common.cmake index 86399eb972f..8799d621c7a 100644 --- a/itk_common.cmake +++ b/itk_common.cmake @@ -303,6 +303,7 @@ foreach(v ExternalData_OBJECT_STORES CTEST_CMAKE_GENERATOR CTEST_BUILD_CONFIGURATION + CTEST_BUILD_FLAGS CTEST_GIT_COMMAND CTEST_CHECKOUT_COMMAND CTEST_SCRIPT_DIRECTORY