From 8dd246fb2c1838a1c5ec0fe19701c2fe2e7b58d8 Mon Sep 17 00:00:00 2001 From: Albert Cheng Date: Wed, 12 Dec 2012 14:37:20 -0500 Subject: [svn-r23094] cmakehdf5 is a build command script similar to buildhdf5. This is an initial implementation and is known to work in Jam only. More porting is in progress. Tested: Jam --- bin/cmakehdf5 | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100755 bin/cmakehdf5 diff --git a/bin/cmakehdf5 b/bin/cmakehdf5 new file mode 100755 index 0000000..ac59d14 --- /dev/null +++ b/bin/cmakehdf5 @@ -0,0 +1,175 @@ +#! /bin/sh +# Build and Test HDF5 using cmake. +# Author: Allen Byrne +# Albert Cheng +# Creation Date: Nov 2012 + +# Copyright: The HDF Group, 2012 + +# Debug: remove the comment hash if you want DPRINT to do echo +DPRINT=: +#DPRINT=echo + +# variable names +progname=`basename $0` # program name +cminfile="cmakemin.$$" # Cmake minimum file +cfgfile=$progname.$$ # configure file +$DPRINT $cfgfile + +# Remove temporary generated files if exit 0 +trap "rm -f $cminfile $cfgfile" 0 + +#========== +# main +#========== +# First generate the two needed input files, the $cimnfile and $cfgfile. +# Then use ctest to use the two input files. + +# This works only in Jam for now. +# Exit if not running in Jam. +if [ `hostname` != jam ]; then + echo This is known to work in Jam for now. + echo It may fail in other machines. + echo Support for more platforms is coming. + echo +fi + + +#========== +# 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 2.8.6 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") + +# -- CDash variables +#set (LOCAL_NO_SUBMIT TRUE) +set (MODEL "Experimental") +set (CDASH_LOCAL TRUE) +set (SITE_BUILDNAME_SUFFIX "SHARED") + +# -- URL set for internal check, default is to not update +set (LOCAL_SKIP_UPDATE TRUE) +set (REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8") +# -- Standard build options +set (ADD_BUILD_OPTIONS "-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/hdf5.1.8 -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING=\"SVN\" -DHDF5_PACKAGE_EXTLIBS:BOOL=ON") + +# ----------------------------------------------------------- +# -- 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) + message ("Dashboard script uname output: ${osname}-${osrel}-${cpu}\n") + + if (SITE_BUILDNAME_SUFFIX) + set (CTEST_BUILD_NAME "AT-${osname}-${osrel}-${cpu}-${SITE_BUILDNAME_SUFFIX}") + else (SITE_BUILDNAME_SUFFIX) + set (CTEST_BUILD_NAME "AT-${osname}-${osrel}-${cpu}") + endif (SITE_BUILDNAME_SUFFIX) +# ----------------------------------------------------------- + +set (BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSITE:STRING=${CTEST_SITE} -DBUILDNAME:STRING=${CTEST_BUILD_NAME}") + +# ----------------------------------------------------------- +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) + ctest_empty_binary_directory (${CTEST_BINARY_DIRECTORY}) +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) + +# Print summary information. +foreach (v + CTEST_SITE + CTEST_BUILD_NAME + CTEST_SOURCE_DIRECTORY + CTEST_BINARY_DIRECTORY + CTEST_CMAKE_GENERATOR + CTEST_BUILD_CONFIGURATION + CTEST_GIT_COMMAND + CTEST_CHECKOUT_COMMAND + CTEST_CONFIGURE_COMMAND + CTEST_SCRIPT_DIRECTORY + CTEST_USE_LAUNCHERS + ) + set (vars "${vars} ${v}=[${${v}}]\n") +endforeach (v) +message ("Dashboard script configuration:\n${vars}\n") +#----------------------------------------------------------------------------- +#-- Do the work +#----------------------------------------------------------------------------- +SET (CTEST_CONFIGURE_COMMAND + "${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}\"") + +CTEST_START (${MODEL}) +if (NOT LOCAL_SKIP_UPDATE) + CTEST_UPDATE (SOURCE "${CTEST_SOURCE_DIRECTORY}") +endif (NOT LOCAL_SKIP_UPDATE) +CTEST_CONFIGURE (BUILD "${CTEST_BINARY_DIRECTORY}") +CTEST_READ_CUSTOM_FILES ("${CTEST_BINARY_DIRECTORY}") +if (NOT LOCAL_NO_SUBMIT) + CTEST_SUBMIT (PARTS Update Configure Notes) +endif (NOT LOCAL_NO_SUBMIT) +CTEST_BUILD (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) +if (NOT LOCAL_NO_SUBMIT) + CTEST_SUBMIT (PARTS Build) +endif (NOT LOCAL_NO_SUBMIT) +if (NOT LOCAL_SKIP_TEST) + CTEST_TEST (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) + if (NOT LOCAL_NO_SUBMIT) + CTEST_SUBMIT (PARTS Test) + endif (NOT LOCAL_NO_SUBMIT) +endif (NOT LOCAL_SKIP_TEST) + +message ("DONE") +EOF + + +# Run ctest +ctest -S $cfgfile -C Release -O testhdf.log -VV -- cgit v0.12