######################################################################### ### For Windows ${CTEST_SCRIPT_ARG} is one of ### ### [64_VS2013, 32_VS2013, 64_VS2012, 32_VS2012] ### ### ctest -S HDF518Perfconfig.cmake,32_VS2012;perf; -C Release -V -O hdf5.log ### ######################################################################### ### ${CTEST_SCRIPT_ARG} is of the form OPTION=VALUE ### # VS_VERS - always the first argument ### # SRC_FOLDER - always the second argument ### # INSTALLDIR - root folder where hdf5 is installed ### # BLDDIR - root folder where hdf5 is built ### ######################################################################### cmake_minimum_required(VERSION 3.2.2 FATAL_ERROR) set(CTEST_SOURCE_VERSION 1.8.23) if (DEFINED CTEST_SCRIPT_ARG) # transform ctest script arguments of the form # script.ctest,var1=value1,var2=value2 # to variables with the respective names set to the respective values list(GET CTEST_SCRIPT_ARG 0 VS_VERS) list(GET CTEST_SCRIPT_ARG 1 SRC_FOLDER) string (REPLACE "," ";" script_args "${CTEST_SCRIPT_ARG}") foreach (current_var ${script_args}) if ("${current_var}" MATCHES "^([^=]+)=(.+)$") set ("${CMAKE_MATCH_1}" "${CMAKE_MATCH_2}") endif () endforeach () endif () if (NOT DEFINED BLDDIR) set (BLDDIR "hdfbld") endif () set(CTEST_SOURCE_NAME "hdfsrc/${SRC_FOLDER}") set(CTEST_BINARY_NAME "${BLDDIR}/${SRC_FOLDER}") set(CTEST_DASHBOARD_ROOT "${CTEST_SCRIPT_DIRECTORY}") ################################################################### ### Following Line is one of [Release, RelWithDebInfo, Debug] ##### set(CTEST_CONFIGURATION_TYPE "$ENV{CMAKE_CONFIG_TYPE}") ################################################################### if(NOT DEFINED INSTALLDIR) if(WIN32) set(INSTALLDIR "/%ProgramW6432%/HDF_Group/HDF5/${CTEST_SOURCE_VERSION}") else() set(INSTALLDIR "/opt/HDF_Group/HDF5/${CTEST_SOURCE_VERSION}") endif() endif() if(WIN32) set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\..\\${CTEST_SOURCE_NAME}") set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}\\${CTEST_BINARY_NAME}") else() set(CTEST_SOURCE_DIRECTORY "${CTEST_DASHBOARD_ROOT}/../${CTEST_SOURCE_NAME}") set(CTEST_BINARY_DIRECTORY "${CTEST_DASHBOARD_ROOT}/${CTEST_BINARY_NAME}") endif() set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ROOT:PATH=${INSTALLDIR}") ################################################################### ######### Following describes compiler ############ if(WIN32) set(SITE_OS_NAME "Windows") if(${VS_VERS} STREQUAL "64_VS2022") set(CTEST_CMAKE_GENERATOR "Visual Studio 17 2022") set(CMAKE_GENERATOR_ARCHITECTURE "x64") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2022") set(SITE_COMPILER_VERSION "17") elseif(${VS_VERS} STREQUAL "32_VS2022") set(CTEST_CMAKE_GENERATOR "Visual Studio 17 2022") set(CMAKE_GENERATOR_ARCHITECTURE "Win32") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2022") set(SITE_COMPILER_VERSION "17") elseif(${VS_VERS} STREQUAL "64_VS2019") set(CTEST_CMAKE_GENERATOR "Visual Studio 16 2019") set(CMAKE_GENERATOR_ARCHITECTURE "x64") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2019") set(SITE_COMPILER_VERSION "16") elseif(${VS_VERS} STREQUAL "32_VS2019") set(CTEST_CMAKE_GENERATOR "Visual Studio 16 2019") set(CMAKE_GENERATOR_ARCHITECTURE "Win32") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2019") set(SITE_COMPILER_VERSION "16") elseif(${VS_VERS} STREQUAL "64_VS2017") set(CTEST_CMAKE_GENERATOR "Visual Studio 15 2017 Win64") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2017") set(SITE_COMPILER_VERSION "15") elseif(${VS_VERS} STREQUAL "32_VS2017") set(CTEST_CMAKE_GENERATOR "Visual Studio 15 2017") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2017") set(SITE_COMPILER_VERSION "15") elseif(${VS_VERS} STREQUAL "64_VS2015") set(CTEST_CMAKE_GENERATOR "Visual Studio 14 2015 Win64") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2015") set(SITE_COMPILER_VERSION "14") elseif(${VS_VERS} STREQUAL "32_VS2015") set(CTEST_CMAKE_GENERATOR "Visual Studio 14 2015") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2015") set(SITE_COMPILER_VERSION "14") endif() ## Set the following to unique id your computer ## set(CTEST_SITE "WIN_${VS_VERS}.hdfgroup.org") else() if (MINGW) set (CTEST_CMAKE_GENERATOR "MinGW Makefiles") else () set (CTEST_CMAKE_GENERATOR "Unix Makefiles") endif () ## Set the following to unique id your computer ## if(APPLE) execute_process(COMMAND xcrun --find cc OUTPUT_VARIABLE XCODE_CC OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND xcrun --find c++ OUTPUT_VARIABLE XCODE_CXX OUTPUT_STRIP_TRAILING_WHITESPACE) set(ENV{CC} "${XCODE_CC}") set(ENV{CXX} "${XCODE_CXX}") set(CTEST_USE_LAUNCHERS 1) endif() set(ENV{LD_LIBRARY_PATH} "${INSTALLDIR}/lib") endif() ################################################################### ################################################################### ##### Following controls CDash submission ##### set(LOCAL_SUBMIT "TRUE") set(CDASH_LOCAL "TRUE") ################################################################### ### change install prefix #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCTEST_CONFIGURATION_TYPE:STRING=$ENV{CMAKE_CONFIG_TYPE}") ################################################################### if(WIN32) include(${CTEST_BINARY_DIRECTORY}\\HDFoptions.cmake) set(BINFILEBASE "${FILEROOT}-win${SITE_OS_BITS}") set(SITE_BUILDNAME_SUFFIX "${SRC_FOLDER}-${SITE_BUILDNAME_SUFFIX}") else() include(${CTEST_BINARY_DIRECTORY}/HDFoptions.cmake) set(BINFILEBASE "${FILEROOT}") set(SITE_BUILDNAME_SUFFIX "${SRC_FOLDER}-${SITE_BUILDNAME_SUFFIX}") endif() # ----------------------------------------------------------- # -- Get environment # ----------------------------------------------------------- if (NOT SITE_OS_NAME) ## machine name not provided - attempt to discover with uname ## -- set hostname ## -------------------------- find_program (HOSTNAME_CMD NAMES hostname) exec_program (${HOSTNAME_CMD} ARGS OUTPUT_VARIABLE HOSTNAME) set (CTEST_SITE "${HOSTNAME}${CTEST_SITE_EXT}") find_program (UNAME NAMES uname) macro (getuname name flag) exec_program ("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}") endmacro () getuname (osname -s) getuname (osrel -r) getuname (cpu -m) message (STATUS "Dashboard script uname output: ${osname}-${osrel}-${cpu}\n") set (CTEST_BUILD_NAME "${osname}-${osrel}-${cpu}") else () ## machine name provided ## -------------------------- if (CMAKE_HOST_UNIX) set (CTEST_BUILD_NAME "${SITE_OS_NAME}-${SITE_OS_VERSION}-${SITE_OS_BITS}-${SITE_COMPILER_NAME}-${SITE_COMPILER_VERSION}") else () set (CTEST_BUILD_NAME "${SITE_OS_NAME}-${SITE_OS_VERSION}-${SITE_COMPILER_NAME}") endif () endif () if (SITE_BUILDNAME_SUFFIX) set (CTEST_BUILD_NAME "${SITE_BUILDNAME_SUFFIX}-${CTEST_BUILD_NAME}") endif () set (BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSITE:STRING=${CTEST_SITE} -DBUILDNAME:STRING=${CTEST_BUILD_NAME}") if (NOT USE_ANTTOOLS) #----------------------------------------------------------------------------- # MAC machines need special option #----------------------------------------------------------------------------- if (APPLE) # Compiler choice execute_process (COMMAND xcrun --find cc OUTPUT_VARIABLE XCODE_CC OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process (COMMAND xcrun --find c++ OUTPUT_VARIABLE XCODE_CXX OUTPUT_STRIP_TRAILING_WHITESPACE) set (ENV{CC} "${XCODE_CC}") set (ENV{CXX} "${XCODE_CXX}") set (BUILD_OPTIONS "${BUILD_OPTIONS} -DCTEST_USE_LAUNCHERS:BOOL=ON -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF") endif () endif () #----------------------------------------------------------------------------- set (NEED_REPOSITORY_CHECKOUT 0) set (CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"") # Use multiple CPU cores to build include (ProcessorCount) ProcessorCount (N) if (NOT N EQUAL 0) if (MAX_PROC_COUNT) if (N GREATER MAX_PROC_COUNT) set (N ${MAX_PROC_COUNT}) endif () endif () if (NOT WIN32) set (CTEST_BUILD_FLAGS -j${N}) endif () set (ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N}) endif () foreach (req CTEST_CMAKE_GENERATOR CTEST_SITE CTEST_BUILD_NAME ) if (NOT DEFINED ${req}) message (FATAL_ERROR "The containing script must set ${req}") endif () endforeach () #----------------------------------------------------------------------------- # Initialize the CTEST commands #------------------------------ set (CTEST_CONFIGURE_TOOLSET "") if (CMAKE_GENERATOR_TOOLSET) set (CTEST_CONFIGURE_TOOLSET "-T${CMAKE_GENERATOR_TOOLSET}") endif () set (CTEST_CONFIGURE_ARCH "") if (CMAKE_GENERATOR_ARCHITECTURE) set (CTEST_CONFIGURE_ARCH "-A${CMAKE_GENERATOR_ARCHITECTURE}") endif () set (CTEST_CONFIGURE_COMMAND "${CTEST_CMAKE_COMMAND} -DCMAKE_BUILD_TYPE:STRING=${CTEST_CONFIGURATION_TYPE} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_CONFIGURE_ARCH}\" \"${CTEST_CONFIGURE_TOOLSET}\" \"${CTEST_SOURCE_DIRECTORY}\"" ) #----------------------------------------------------------------------------- ## -- set output to english set (ENV{LC_MESSAGES} "en_EN") # Print summary information. foreach (v CTEST_SITE CTEST_BUILD_NAME CTEST_SOURCE_DIRECTORY CTEST_BINARY_DIRECTORY CTEST_CMAKE_GENERATOR CTEST_CONFIGURATION_TYPE CTEST_GIT_COMMAND CTEST_CHECKOUT_COMMAND CTEST_CONFIGURE_COMMAND CTEST_SCRIPT_DIRECTORY CTEST_USE_LAUNCHERS BINFILEBASE ) set (vars "${vars} ${v}=[${${v}}]\n") endforeach () message (STATUS "Dashboard script configuration:\n${vars}\n") #----------------------------------------------------------------------------- ################################################################### ######### Following is for submission to CDash ############ ################################################################### if (NOT DEFINED MODEL) set (MODEL "Experimental") endif () #----------------------------------------------------------------------------- ## NORMAL process ## -- LOCAL_UPDATE updates the source folder from svn ## -- LOCAL_SUBMIT reports to CDash server ## -- LOCAL_SKIP_TEST skips the test process (only builds) ## -- LOCAL_MEMCHECK_TEST executes the Valgrind testing ## -- LOCAL_COVERAGE_TEST executes code coverage process ## -------------------------- ctest_start (${MODEL} TRACK ${MODEL}) ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res) if (LOCAL_SUBMIT) ctest_submit (PARTS Update Configure Notes) endif () if (${res} LESS 0 OR ${res} GREATER 0) file (APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed Configure: ${res}\n") endif () ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND RETURN_VALUE res NUMBER_ERRORS errval) if (LOCAL_SUBMIT) ctest_submit (PARTS Build) endif () if (${res} LESS 0 OR ${res} GREATER 0 OR ${errval} GREATER 0) file (APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed ${errval} Build: ${res}\n") endif () if (NOT LOCAL_BATCH_TEST) ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args} RETURN_VALUE res) else () execute_process (COMMAND ${LOCAL_BATCH_SCRIPT_COMMAND} ${LOCAL_BATCH_SCRIPT_NAME}) endif () if (LOCAL_SUBMIT) ctest_submit (PARTS Test) endif () if (${res} LESS 0 OR ${res} GREATER 0) file (APPEND ${CTEST_SCRIPT_DIRECTORY}/FailedCTest.txt "Failed Tests: ${res}\n") endif ()