diff options
Diffstat (limited to 'bin/cmakehdf5')
-rwxr-xr-x | bin/cmakehdf5 | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/bin/cmakehdf5 b/bin/cmakehdf5 index 48869cf..772e54c 100755 --- a/bin/cmakehdf5 +++ b/bin/cmakehdf5 @@ -12,6 +12,8 @@ DPRINT=: #DPRINT=echo +# use the ctest scripting method if --script is given +if [ "$1" != "--script" ]; then # variable names # The "extra" number is the step number and easier to see all logfiles in # the sorted order of steps @@ -351,3 +353,267 @@ exit_code=$? # Show a closing time stamp TIMESTAMP exit $exit_code + +else +# --------------- +# older version +# --------------- + +# variable names +progname=`basename $0` # program name +cminfile="cmakemin.$$" # Cmake minimum file +cfgfile=$progname.$$ # configure file +ctest_log=ctest.log # output of ctest script +install_log=install.log # output of installation +$DPRINT $cfgfile + +# Remove temporary generated files if exit 0 +trap "rm -f $cminfile $cfgfile" 0 + +#============= +# Function definitions +#============= +TIMESTAMP() +{ + echo "=====" "`date`" "=====" +} + + +#========== +# main +#========== +# Show a start time stamp +TIMESTAMP + +# Explain what and where log files are. +cat <<EOF +$ctest_log: output of ctest script. +$install_log: output of installation +Log files will be stored in Testing/Temporary: + LastConfigure_<timestamp>.log: output of configure + LastBuild_<timestamp>.log: output of build + LastTest_<timestamp>.log: output of testing + LastTestsFailed_<timestamp>.log: list of failed tests + +EOF + +# First generate the two needed input files, the $cimnfile and $cfgfile. +# Then use ctest to use the two input files. + +#========== +# create the configure file +#========== +# Create the cmake minimum required file to be used by the following +# configure file. Though not absolute needed, it is better to generate +# this file before the configure file. Quote the EOF to preven substitution +# in the text. +#========== +#========== +cat > $cfgfile <<'EOF' +cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +######################################################## +# This dashboard is maintained by The HDF Group +# For any comments please contact cdashhelp@hdfgroup.org +# +######################################################## + +set (CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY}) +set (CTEST_SOURCE_DIRECTORY "../hdf5") +set (CTEST_BINARY_DIRECTORY ".") +set (CTEST_CMAKE_GENERATOR "Unix Makefiles") +set (CTEST_BUILD_CONFIGURATION "Release") +set (CTEST_MAX_N 8) + +# -- CDash variables +set (LOCAL_NO_SUBMIT TRUE) # No CDash submit. +set (MODEL "Experimental") +set (CDASH_LOCAL TRUE) +set (SITE_BUILDNAME_SUFFIX "cmakehdf5") + +# -- URL set for internal check, default is to not update +set (LOCAL_SKIP_UPDATE TRUE) +set (REPOSITORY_URL "http://svn.${hdfgroup_url}/hdf5/branches/hdf5_1_8") +# -- Standard build options +set (ADD_BUILD_OPTIONS "-DCMAKE_INSTALL_PREFIX:PATH=${CTEST_BINARY_DIRECTORY} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=\"SVN\" -DHDF5_PACKAGE_EXTLIBS:BOOL=ON") + +# Use multiple CPU cores to build +include(ProcessorCount) +ProcessorCount(N) +if(NOT N EQUAL 0) + if(N GREATER ${CTEST_MAX_N}) + set(N ${CTEST_MAX_N}) + endif(N GREATER ${CTEST_MAX_N}) + set(CTEST_BUILD_FLAGS -j${N}) + set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N}) +endif() + +# ----------------------------------------------------------- +# -- Get environment +# ----------------------------------------------------------- + ## -- 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) + + getuname (osname -s) + getuname (osrel -r) + getuname (cpu -m) + + if (SITE_BUILDNAME_SUFFIX) + set (CTEST_BUILD_NAME "${osname}-${osrel}-${cpu}-${SITE_BUILDNAME_SUFFIX}") + else (SITE_BUILDNAME_SUFFIX) + set (CTEST_BUILD_NAME "${osname}-${osrel}-${cpu}") + endif (SITE_BUILDNAME_SUFFIX) +# ----------------------------------------------------------- + +set (BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSITE:STRING=${CTEST_SITE} -DBUILDNAME:STRING=${CTEST_BUILD_NAME}") + +#----------------------------------------------------------------------------- +# 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}") + # Shared fortran is not supported, build static + set (BUILD_OPTIONS "${BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF -DCMAKE_ANSI_CFLAGS:STRING=-fPIC") + set (BUILD_OPTIONS "${BUILD_OPTIONS} -DCTEST_USE_LAUNCHERS:BOOL=ON -DCMAKE_BUILD_WITH_INSTALL_RPATH:BOOL=OFF") +endif (APPLE) + + +# ----------------------------------------------------------- +find_package (Subversion) +set (CTEST_UPDATE_COMMAND "${Subversion_SVN_EXECUTABLE}") +# -- Only clean build folder if LOCAL_CLEAR_BUILD is set +if (LOCAL_CLEAR_BUILD) + set (CTEST_START_WITH_EMPTY_BINARY_DIRECTORY TRUE) + if(NOT EXISTS "${CTEST_BINARY_DIRECTORY}") + file(MAKE_DIRECTORY "${CTEST_BINARY_DIRECTORY}") + else() + ctest_empty_binary_directory(${CTEST_BINARY_DIRECTORY}) + endif() +endif (LOCAL_CLEAR_BUILD) + +#----------------------------------------------------------------------------- +# Send the main script as a note. +list (APPEND CTEST_NOTES_FILES + "${CMAKE_CURRENT_LIST_FILE}" + "${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake" + ) + +# Check for required variables. +foreach (req + CTEST_CMAKE_GENERATOR + CTEST_SITE + CTEST_BUILD_NAME + ) + if (NOT DEFINED ${req}) + message(FATAL_ERROR "The containing script must set ${req}") + endif (NOT DEFINED ${req}) +endforeach (req) + +## -- set output to english +set($ENV{LC_MESSAGES} "en_EN") + +#----------------------------------------------------------------------------- +# Initialize the CTEST commands +#------------------------------ +set (CTEST_CMAKE_COMMAND "\"${CMAKE_COMMAND}\"") +set (CTEST_CONFIGURE_COMMAND + "${CTEST_CMAKE_COMMAND} -C \"${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake\" -DCMAKE_BUILD_TYPE:STRING=${CTEST_BUILD_CONFIGURATION} ${BUILD_OPTIONS} \"-G${CTEST_CMAKE_GENERATOR}\" \"${CTEST_SOURCE_DIRECTORY}\"") + +# Print summary information. +foreach (v + CTEST_SITE + CTEST_BUILD_NAME + CTEST_SOURCE_DIRECTORY + CTEST_BINARY_DIRECTORY + CTEST_CMAKE_GENERATOR + CTEST_BUILD_CONFIGURATION + CTEST_CONFIGURE_COMMAND + CTEST_SCRIPT_DIRECTORY + ) + set (vars "${vars} ${v}=[${${v}}]\n") +endforeach (v) +message ("Dashboard script configuration:\n${vars}\n") + +ctest_start (${MODEL} TRACK ${MODEL}) +if (NOT LOCAL_SKIP_UPDATE) + ctest_update (SOURCE "${CTEST_SOURCE_DIRECTORY}") +endif (NOT LOCAL_SKIP_UPDATE) +if(NOT res STREQUAL "0") + message (FATAL_ERROR "Configure FAILED") +endif() +message ("Configure DONE") +configure_file(${CTEST_SOURCE_DIRECTORY}/config/cmake/CTestCustom.cmake ${CTEST_BINARY_DIRECTORY}/CTestCustom.cmake) +ctest_read_custom_files ("${CTEST_BINARY_DIRECTORY}") +ctest_configure (BUILD "${CTEST_BINARY_DIRECTORY}" RETURN_VALUE res) +if (NOT LOCAL_NO_SUBMIT) + ctest_submit (PARTS Update Configure Notes) +endif (NOT LOCAL_NO_SUBMIT) +ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND RETURN_VALUE res) +if (NOT LOCAL_NO_SUBMIT) + ctest_submit (PARTS Build) +endif (NOT LOCAL_NO_SUBMIT) +if(NOT res STREQUAL "0") + message (FATAL_ERROR "Build FAILED") +endif() +message ("build DONE") +if (NOT LOCAL_SKIP_TEST) + ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args} RETURN_VALUE res) + if (NOT LOCAL_NO_SUBMIT) + ctest_submit (PARTS Test) + endif (NOT LOCAL_NO_SUBMIT) + if(NOT res STREQUAL "0") + message (FATAL_ERROR "Test FAILED") + endif() + message ("test DONE") +endif (NOT LOCAL_SKIP_TEST) +if(NOT LOCAL_MEMCHECK_TEST) + ##----------------------------------------------- + ## Package the product + ##----------------------------------------------- + execute_process(COMMAND cpack -C ${CTEST_BUILD_CONFIGURATION} -V + WORKING_DIRECTORY ${CTEST_BINARY_DIRECTORY} + RESULT_VARIABLE cpackResult + OUTPUT_VARIABLE cpackLog + ERROR_VARIABLE cpackLog.err + ) + file(WRITE ${CTEST_BINARY_DIRECTORY}/cpack.log "${cpackLog.err}" "${cpackLog}") +endif(NOT LOCAL_MEMCHECK_TEST) +#----------------------------------------------------------------------------- + +message ("DONE") +EOF + + +# Run ctest +ctest -S $cfgfile -C Release -V -O $ctest_log +exit_code=$? +if [ $exit_code = 0 ]; then + echo CTest script completed without error +else + echo Error encountered CTest script +fi +# Using HDF5-*.sh because actual name is unavailable +install_sh=HDF5-*.sh +echo installing with $install_sh ... +./$install_sh --skip-license > $install_log +exit_code=$? +if [ $exit_code = 0 ]; then + echo Complete without error +else + echo Error encountered +fi +TIMESTAMP +exit $exit_code + +fi + |