From 58db7babe40a10916a1c3b7667eaaeb5d48c2fb8 Mon Sep 17 00:00:00 2001 From: Allen Byrne Date: Tue, 6 Oct 2015 13:48:50 -0500 Subject: [svn-r27973] Update to new style usage --- config/cmake/scripts/CTestScript.cmake | 35 +++---- config/cmake/scripts/HDF518config.cmake | 145 +++++++++++++++++++-------- release_docs/INSTALL_CMake.txt | 168 +++++++++++++++++++++++--------- release_docs/USING_HDF5_CMake.txt | 82 +++++++++++----- 4 files changed, 301 insertions(+), 129 deletions(-) diff --git a/config/cmake/scripts/CTestScript.cmake b/config/cmake/scripts/CTestScript.cmake index 0cd686a..9d0953e 100755 --- a/config/cmake/scripts/CTestScript.cmake +++ b/config/cmake/scripts/CTestScript.cmake @@ -4,9 +4,9 @@ cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) # For any comments please contact cdashhelp@hdfgroup.org # ######################################################## -# ----------------------------------------------------------- +# ----------------------------------------------------------- # -- Get environment -# ----------------------------------------------------------- +# ----------------------------------------------------------- if(NOT SITE_OS_NAME) ## machine name not provided - attempt to discover with uname ## -- set hostname @@ -18,7 +18,7 @@ if(NOT SITE_OS_NAME) macro(getuname name flag) exec_program("${UNAME}" ARGS "${flag}" OUTPUT_VARIABLE "${name}") endmacro(getuname) - + getuname(osname -s) getuname(osrel -r) getuname(cpu -m) @@ -45,7 +45,7 @@ else(NOT SITE_OS_NAME) endif() set(BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DSITE:STRING=${CTEST_SITE} -DBUILDNAME:STRING=${CTEST_BUILD_NAME}") endif(NOT SITE_OS_NAME) - + #----------------------------------------------------------------------------- # MAC machines need special option #----------------------------------------------------------------------------- @@ -72,14 +72,15 @@ if(CTEST_USE_TAR_SOURCE) message(STATUS "extracting... [${CMAKE_EXECUTABLE_NAME} -E tar -xvf ${CTEST_USE_TAR_SOURCE}.tar]") execute_process(COMMAND ${CMAKE_EXECUTABLE_NAME} -E tar -xvf ${CTEST_DASHBOARD_ROOT}/${CTEST_USE_TAR_SOURCE}.tar RESULT_VARIABLE rv) endif() - + if(NOT rv EQUAL 0) message(STATUS "extracting... [error-(${rv}) clean up]") file(REMOVE_RECURSE "${CTEST_SOURCE_DIRECTORY}") message(FATAL_ERROR "error: extract of ${CTEST_USE_TAR_SOURCE} failed") endif() - + file(RENAME ${CTEST_DASHBOARD_ROOT}/${CTEST_USE_TAR_SOURCE} ${CTEST_SOURCE_DIRECTORY}) + set(LOCAL_SKIP_UPDATE "TRUE") else(CTEST_USE_TAR_SOURCE) if(LOCAL_UPDATE) if(CTEST_USE_GIT_SOURCE) @@ -120,7 +121,7 @@ else(CTEST_USE_TAR_SOURCE) if(NOT EXISTS "${CTEST_SOURCE_DIRECTORY}") set(NEED_REPOSITORY_CHECKOUT 1) endif() - + if(NOT CTEST_REPO_VERSION) set(CTEST_REPO_VERSION "HEAD") endif() @@ -135,7 +136,7 @@ else(CTEST_USE_TAR_SOURCE) endif(CTEST_USE_GIT_SOURCE) endif(LOCAL_UPDATE) endif(CTEST_USE_TAR_SOURCE) - + #----------------------------------------------------------------------------- ## Clear the build directory ## -------------------------- @@ -155,7 +156,7 @@ if(NOT N EQUAL 0) endif() set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${N}) endif() - + #----------------------------------------------------------------------------- # Send the main script as a note. list(APPEND CTEST_NOTES_FILES @@ -163,7 +164,7 @@ list(APPEND CTEST_NOTES_FILES "${CMAKE_CURRENT_LIST_FILE}" "${CTEST_SOURCE_DIRECTORY}/config/cmake/cacheinit.cmake" ) - + #----------------------------------------------------------------------------- # Check for required variables. # -------------------------- @@ -176,7 +177,7 @@ foreach(req message(FATAL_ERROR "The containing script must set ${req}") endif() endforeach(req) - + #----------------------------------------------------------------------------- # Initialize the CTEST commands #------------------------------ @@ -193,11 +194,11 @@ else() "${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}\"" ) endif() - + #----------------------------------------------------------------------------- ## -- set output to english set($ENV{LC_MESSAGES} "en_EN") - + # Print summary information. foreach(v CTEST_SITE @@ -215,7 +216,7 @@ foreach(v set(vars "${vars} ${v}=[${${v}}]\n") endforeach(v) message(STATUS "Dashboard script configuration:\n${vars}\n") - + #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- ## NORMAL process @@ -235,12 +236,12 @@ message(STATUS "Dashboard script configuration:\n${vars}\n") if(LOCAL_SUBMIT) ctest_submit (PARTS Update Configure Notes) endif() - + ctest_build (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND) if(LOCAL_SUBMIT) ctest_submit (PARTS Build) endif() - + if(NOT LOCAL_SKIP_TEST) if(NOT LOCAL_MEMCHECK_TEST) ctest_test (BUILD "${CTEST_BINARY_DIRECTORY}" APPEND ${ctest_test_args} RETURN_VALUE res) @@ -263,7 +264,7 @@ message(STATUS "Dashboard script configuration:\n${vars}\n") endif() endif() endif(NOT LOCAL_SKIP_TEST) - + if(NOT LOCAL_MEMCHECK_TEST AND NOT LOCAL_NO_PACKAGE) ##----------------------------------------------- ## Package the product diff --git a/config/cmake/scripts/HDF518config.cmake b/config/cmake/scripts/HDF518config.cmake index aee5389..897bcbe 100755 --- a/config/cmake/scripts/HDF518config.cmake +++ b/config/cmake/scripts/HDF518config.cmake @@ -1,16 +1,89 @@ -########################################################################## -### For Windows ${CTEST_SCRIPT_ARG} is one of ### -### [64-VS2013, 32-VS2013, 64-VS2012, 32-VS2012] ### -### ctest -S HDF518config.cmake,32-VS2012 -C Release -VV -O hdf518.log ### -### ### -### Other platforms do not use ${CTEST_SCRIPT_ARG} ### -### ctest -S HDF518config.cmake -C Release -VV -O hdf518.log ### -########################################################################## +########################################################################################## +### ${CTEST_SCRIPT_ARG} is of the form OPTION=VALUE ### +### BUILD_GENERATOR required [Unix, VS2013, VS201364, VS2012, VS201264] ### +### ctest -S HDF518config.cmake,BUILD_GENERATOR=VS201264 -C Release -V -O hdf518.log ### +########################################################################################## cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) -set(CTEST_SOURCE_VERSION 1.8.15) -set(CTEST_SOURCE_VERSEXT "") -set(CTEST_SOURCE_NAME hdf5-${CTEST_SOURCE_VERSION}${CTEST_SOURCE_VERSEXT}) +############################################################################ +# Usage: +# ctest -S HDF518config.cmake,OPTION=VALUE -C Release -VV -O test.log +# where valid options for OPTION are: +# BUILD_GENERATOR - The cmake build generator: +# Unix * Unix Makefiles +# VS2013 * Visual Studio 12 2013 +# VS201364 * Visual Studio 12 2013 Win64 +# VS2012 * Visual Studio 11 2012 +# VS201264 * Visual Studio 11 2012 Win64 +# +# INSTALLDIR - root folder where hdf5 is installed +# CTEST_BUILD_CONFIGURATION - Release, Debug, etc +# CTEST_SOURCE_NAME - source folder +# STATICLIBRARIES - Build/use static libraries +# NO_MAC_FORTRAN - Yes to be SHARED on a Mac +############################################################################## + +set(CTEST_SOURCE_VERSION 1.9) + +############################################################################## +# handle input parameters to script. +#BUILD_GENERATOR - which CMake generator to use, required +#INSTALLDIR - HDF5-1.9 root folder +#CTEST_BUILD_CONFIGURATION - Release, Debug, RelWithDebInfo +#CTEST_SOURCE_NAME - name of source folder; HDF5-1.9 +#STATICLIBRARIES - Default is YES +#NO_MAC_FORTRAN - set to TRUE to allow shared libs on a Mac +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 + 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() + +# build generator must be defined +if(NOT DEFINED BUILD_GENERATOR) + message(FATAL_ERROR "BUILD_GENERATOR must be defined - Unix, VS2013, VS201364, VS2012, or VS201264") +else() + if(${BUILD_GENERATOR} STREQUAL "Unix") + set(CMAKE_GENERATOR "Unix Makefiles") + elseif(${BUILD_GENERATOR} STREQUAL "VS2013") + set(CMAKE_GENERATOR "Visual Studio 12 2013") + elseif(${BUILD_GENERATOR} STREQUAL "VS201364") + set(CMAKE_GENERATOR "Visual Studio 12 2013 Win64") + elseif(${BUILD_GENERATOR} STREQUAL "VS2012") + set(CMAKE_GENERATOR "Visual Studio 11 2012") + elseif(${BUILD_GENERATOR} STREQUAL "VS201264") + set(CMAKE_GENERATOR "Visual Studio 11 2012 Win64") + else() + message(FATAL_ERROR "Invalid BUILD_GENERATOR must be - Unix, VS2013, VS201364, VS2012, or VS201264") + endif() +endif() + +if(NOT DEFINED INSTALLDIR) + if(WIN32) + set(INSTALLDIR "/usr/local/myhdf5") + else() + set(INSTALLDIR "C:\\Program\ Files\\myhdf5") + endif() +endif() +if(NOT DEFINED CTEST_BUILD_CONFIGURATION) + set(CTEST_BUILD_CONFIGURATION "Release") +endif() +if(NOT DEFINED CTEST_SOURCE_NAME) + set(CTEST_SOURCE_NAME "hdf5-${CTEST_SOURCE_VERSION}${CTEST_SOURCE_VERSEXT}") +endif() +if(NOT DEFINED STATICLIBRARIES) + set(STATICLIBRARIES "YES") +endif() +if(NOT DEFINED FORTRANLIBRARIES) + set(FORTRANLIBRARIES "NO") +endif() + set(CTEST_BINARY_NAME "build") set(CTEST_DASHBOARD_ROOT "${CTEST_SCRIPT_DIRECTORY}") if(WIN32) @@ -22,40 +95,30 @@ else() endif() ################################################################### -### Following Line is one of [Release, RelWithDebInfo, Debug] ##### -set(CTEST_BUILD_CONFIGURATION "Release") -################################################################### - -################################################################### ######### Following describes compiler ############ if(WIN32) set(SITE_OS_NAME "Windows") set(SITE_OS_VERSION "WIN7") - if(${CTEST_SCRIPT_ARG} STREQUAL "64-VS2013") - set(CTEST_CMAKE_GENERATOR "Visual Studio 12 2013 Win64") + if(${BUILD_GENERATOR} STREQUAL "VS201364") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2013") set(SITE_COMPILER_VERSION "12") - elseif(${CTEST_SCRIPT_ARG} STREQUAL "32-VS2013") - set(CTEST_CMAKE_GENERATOR "Visual Studio 12 2013") + elseif(${BUILD_GENERATOR} STREQUAL "VS2013") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2013") set(SITE_COMPILER_VERSION "12") - elseif(${CTEST_SCRIPT_ARG} STREQUAL "64-VS2012") - set(CTEST_CMAKE_GENERATOR "Visual Studio 11 2012 Win64") + elseif(${BUILD_GENERATOR} STREQUAL "VS201264") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2012") set(SITE_COMPILER_VERSION "11") - elseif(${CTEST_SCRIPT_ARG} STREQUAL "32-VS2012") - set(CTEST_CMAKE_GENERATOR "Visual Studio 11 2012") + elseif(${BUILD_GENERATOR} STREQUAL "VS2012") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2012") set(SITE_COMPILER_VERSION "11") endif() ## Set the following to unique id your computer ## - set(CTEST_SITE "WIN7${CTEST_SCRIPT_ARG}.XXXX") + set(CTEST_SITE "WIN7${BUILD_GENERATOR}.XXXX") else() - set(CTEST_CMAKE_GENERATOR "Unix Makefiles") ## Set the following to unique id your computer ## if(APPLE) set(CTEST_SITE "MAC.XXXX") @@ -69,9 +132,6 @@ endif() ######### Following is for submission to CDash ############ ################################################################### set(MODEL "Experimental") -######### Following describes computer ############ -## following is optional to describe build ## -set(SITE_BUILDNAME_SUFFIX "STATIC") ################################################################### ################################################################### @@ -85,19 +145,25 @@ set(SITE_BUILDNAME_SUFFIX "STATIC") #set(LOCAL_NO_PACKAGE "TRUE") ##### Following controls source update ##### #set(LOCAL_UPDATE "TRUE") -set(REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8") +set(REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/trunk") #uncomment to use a compressed source file: *.tar on linux or mac *.zip on windows -#set(CTEST_USE_TAR_SOURCE "${CTEST_SOURCE_VERSION}${CTEST_SOURCE_VERSEXT}") +#set(CTEST_USE_TAR_SOURCE "${CTEST_SOURCE_VERSION}") ################################################################### ################################################################### #### Change default configuration of options in config/cmake/cacheinit.cmake file ### #### format: set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DXXX:YY=ZZZZ") -### uncomment/comment or change the following lines for configuration options +################################################################### +if(STATICLIBRARIES) + set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF") + ######### Following describes computer ############ + ## following is optional to describe build ## + set(SITE_BUILDNAME_SUFFIX "STATIC") +endif(STATICLIBRARIES) +################################################################### -### comment the following line or change OFF to ON in order to build shared libraries -set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF") +### uncomment/comment and change the following lines for other configuration options #### ext libraries #### ### ext libs from tgz @@ -112,10 +178,11 @@ set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF") #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_ENCODING:BOOL=OFF") #### fortran #### -### enable Fortran 2003 depends on HDF5_BUILD_FORTRAN -set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_F2003:BOOL=ON") -### disable Fortran; change OFF to ON in order to build FORTRAN libraries -set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF") +if(FORTRANLIBRARIES) + set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=ON") + ### enable Fortran 2003 depends on HDF5_BUILD_FORTRAN + set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_F2003:BOOL=ON") +endif(FORTRANLIBRARIES) ### disable test program builds #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_TESTING:BOOL=OFF") @@ -126,7 +193,7 @@ set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF") set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_PACKAGE_EXTLIBS:BOOL=ON") ### change install prefix -#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH=install") +set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH=${INSTALLDIR}") ################################################################### diff --git a/release_docs/INSTALL_CMake.txt b/release_docs/INSTALL_CMake.txt index 5cc9baf..783c30d 100644 --- a/release_docs/INSTALL_CMake.txt +++ b/release_docs/INSTALL_CMake.txt @@ -51,7 +51,7 @@ The following files referenced below are available at the HDF web site: http://www.hdfgroup.org/HDF5/release/cmakebuild.html Single compressed file with all the files needed, including source: - hdf5-1.8.15-CMake.zip or hdf5-1.8.15-CMake.tar.gz + hdf5-1.8.16-CMake.zip or hdf5-1.8.16-CMake.tar.gz Individual files ----------------------------------------------- @@ -84,15 +84,15 @@ To build HDF5 with the SZIP and ZLIB external libraries you will need to: following options: On 32-bit Windows with Visual Studio 2012, execute: - ctest -S HDF518config.cmake,32-VS2012 -C Release -VV -O hdf5.log + ctest -S HDF518config.cmake,BUILD_GENERATOR=VS2012 -C Release -VV -O hdf5.log On 64-bit Windows with Visual Studio 2012, execute: - ctest -S HDF518config.cmake,64-VS2012 -C Release -VV -O hdf5.log + ctest -S HDF518config.cmake,BUILD_GENERATOR=VS201264 -C Release -VV -O hdf5.log On 32-bit Windows with Visual Studio 2013, execute: - ctest -S HDF518config.cmake,32-VS2013 -C Release -VV -O hdf5.log + ctest -S HDF518config.cmake,BUILD_GENERATOR=VS2013 -C Release -VV -O hdf5.log On 64-bit Windows with Visual Studio 2013, execute: - ctest -S HDF518config.cmake,64-VS2013 -C Release -VV -O hdf5.log + ctest -S HDF518config.cmake,BUILD_GENERATOR=VS201364 -C Release -VV -O hdf5.log On Linux and Mac, execute: - ctest -S HDF518config.cmake -C Release -VV -O hdf5.log + ctest -S HDF518config.cmake,BUILD_GENERATOR=Unix -C Release -VV -O hdf5.log The command above will configure, build, test, and create an install package in the myhdfstuff folder. It will have the format: @@ -181,10 +181,10 @@ Notes: This short set of instructions is written for users who want to 5. Configure the C library, tools and tests with one of the following commands: On Windows 32 bit - cmake -G "Visual Studio 11 2012" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.8."X" + cmake -G "Visual Studio 12 2013" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.8."X" On Windows 64 bit - cmake -G "Visual Studio 11 2012 Win64" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.8."X" + cmake -G "Visual Studio 12 2013 Win64" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ..\hdf5-1.8."X" On Linux and Mac cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE:STRING=Release -DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_TESTING:BOOL=ON -DHDF5_BUILD_TOOLS:BOOL=ON ../hdf5-1.8."X" @@ -297,7 +297,7 @@ IV. Further considerations the settings for the developers' environment. Then the only options needed on the command line are those options that are different. Example using HDF default cache file: - cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 11 2012" \ + cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 12 2013" \ -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF \ -DCMAKE_BUILD_TYPE:STRING=Release .. @@ -395,11 +395,9 @@ These five steps are described in detail below. ######################## # EXTERNAL cache entries ######################## - set (BUILD_SHARED_LIBS ON CACHE BOOL "Build Shared Libraries" FORCE) - set (BUILD_TESTING ON CACHE BOOL "Build HDF5 Unit Testing" FORCE) + set (CMAKE_INSTALL_FRAMEWORK_PREFIX "Library/Frameworks" CACHE STRING "Frameworks installation directory" FORCE) set (HDF_PACKAGE_EXT "" CACHE STRING "Name of HDF package extension" FORCE) set (HDF5_BUILD_FORTRAN ON CACHE BOOL "Build FORTRAN support" FORCE) - set (HDF5_ENABLE_F2003 ON CACHE BOOL "Enable FORTRAN 2003 Standard" FORCE) set (HDF5_BUILD_GENERATORS OFF CACHE BOOL "Build Test Generators" FORCE) set (HDF5_ENABLE_Z_LIB_SUPPORT ON CACHE BOOL "Enable Zlib Filters" FORCE) set (HDF5_ENABLE_SZIP_SUPPORT ON CACHE BOOL "Use SZip Filter" FORCE) @@ -417,6 +415,7 @@ These five steps are described in detail below. set (HDF5_USE_FOLDERS ON CACHE BOOL "Enable folder grouping of projects in IDEs." FORCE) set (HDF5_USE_16_API_DEFAULT OFF CACHE BOOL "Use the HDF5 1.6.x API by default" FORCE) set (HDF5_ENABLE_THREADSAFE OFF CACHE BOOL "(WINDOWS)Enable Threadsafety" FORCE) + set (HDF_TEST_EXPRESS "2" CACHE STRING "Control testing framework (0-3)" FORCE) set (HDF5_PACKAGE_EXTLIBS OFF CACHE BOOL "(WINDOWS)CPACK - include external libraries" FORCE) set (HDF5_NO_PACKAGES OFF CACHE BOOL "CPACK - Disable packaging" FORCE) set (HDF5_ALLOW_EXTERNAL_SUPPORT "NO" CACHE STRING "Allow External Library Building (NO SVN TGZ)" FORCE) @@ -448,7 +447,7 @@ These five steps are described in detail below. 2.2 Preferred command line example on Windows in c:\MyHDFstuff\hdf5\build directory: - cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 11 2012" \ + cmake -C ../config/cmake/cacheinit.cmake -G "Visual Studio 12 2013" \ -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_Z_LIB_SUPPORT:BOOL=OFF \ -DCMAKE_BUILD_TYPE:STRING=Release .. @@ -595,6 +594,7 @@ HDF5_STRICT_FORMAT_CHECKS "Whether to perform strict file format checks" HDF5_TEST_VFD "Execute tests with different VFDs" OFF HDF5_USE_16_API_DEFAULT "Use the HDF5 1.6.x API by default" OFF HDF5_USE_FOLDERS "Enable folder grouping of projects in IDEs." OFF +HDF5_WANT_DATA_ACCURACY "IF data accuracy is guaranteed during data conversions" ON HDF5_WANT_DCONV_EXCEPTION "exception handling functions is checked during data conversions" ON HDF5_ENABLE_THREADSAFE "Enable Threadsafety" OFF if (APPLE) @@ -639,20 +639,98 @@ VIII. Options for Platform Configuration Files Below is the HDF518config.cmake ctest script with extra comments. Execute: - ctest -S HDF518config.cmake -C Release -V -O hdf518.log + ctest -S HDF518config.cmake,BUILD_GENERATOR=xxx -C Release -V -O hdf518.log The same scripts can be used on Linux, Mac OSX or a Windows machine by adding an option (${CTEST_SCRIPT_ARG}) to the platform configuration script. -######################################################################### -### For Windows ${CTEST_SCRIPT_ARG} is one of ### -### [64-VS2013, 32-VS2013, 64-VS2012, 32-VS2012] ### -### ctest -S HDF518config.cmake,32-VS2012 -C Release -V -O hdf518.log ### -######################################################################### +########################################################################################## +### ${CTEST_SCRIPT_ARG} is of the form OPTION=VALUE ### +### BUILD_GENERATOR required [Unix, VS2013, VS201364, VS2012, VS201264] ### +### ctest -S HDF518config.cmake,BUILD_GENERATOR=VS201264 -C Release -V -O hdf518.log ### +########################################################################################## cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) -set(CTEST_SOURCE_VERSION 1.8.16) -set(CTEST_SOURCE_NAME hdf5-${CTEST_SOURCE_VERSION}) +############################################################################ +# Usage: +# ctest -S HDF518config.cmake,OPTION=VALUE -C Release -VV -O test.log +# where valid options for OPTION are: +# BUILD_GENERATOR - The cmake build generator: +# Unix * Unix Makefiles +# VS2013 * Visual Studio 12 2013 +# VS201364 * Visual Studio 12 2013 Win64 +# VS2012 * Visual Studio 11 2012 +# VS201264 * Visual Studio 11 2012 Win64 +# +# INSTALLDIR - root folder where hdf5 is installed +# CTEST_BUILD_CONFIGURATION - Release, Debug, etc +# CTEST_SOURCE_NAME - source folder +# STATICLIBRARIES - Build/use static libraries +# NO_MAC_FORTRAN - Yes to be SHARED on a Mac +############################################################################## + +set(CTEST_SOURCE_VERSION 1.9) +set(CTEST_SOURCE_VERSEXT "") + +############################################################################## +# handle input parameters to script. +#BUILD_GENERATOR - which CMake generator to use, required +#INSTALLDIR - HDF5-1.9 root folder +#CTEST_BUILD_CONFIGURATION - Release, Debug, RelWithDebInfo +#CTEST_SOURCE_NAME - name of source folder; HDF5-1.9 +#STATICLIBRARIES - Default is YES +#NO_MAC_FORTRAN - set to TRUE to allow shared libs on a Mac +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 + 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() + +# build generator must be defined +if(NOT DEFINED BUILD_GENERATOR) + message(FATAL_ERROR "BUILD_GENERATOR must be defined - Unix, VS2013, VS201364, VS2012, or VS201264") +else() + if(${BUILD_GENERATOR} STREQUAL "Unix") + set(CMAKE_GENERATOR "Unix Makefiles") + elseif(${BUILD_GENERATOR} STREQUAL "VS2013") + set(CMAKE_GENERATOR "Visual Studio 12 2013") + elseif(${BUILD_GENERATOR} STREQUAL "VS201364") + set(CMAKE_GENERATOR "Visual Studio 12 2013 Win64") + elseif(${BUILD_GENERATOR} STREQUAL "VS2012") + set(CMAKE_GENERATOR "Visual Studio 11 2012") + elseif(${BUILD_GENERATOR} STREQUAL "VS201264") + set(CMAKE_GENERATOR "Visual Studio 11 2012 Win64") + else() + message(FATAL_ERROR "Invalid BUILD_GENERATOR must be - Unix, VS2013, VS201364, VS2012, or VS201264") + endif() +endif() + +if(NOT DEFINED INSTALLDIR) + if(WIN32) + set(INSTALLDIR "/usr/local/myhdf5") + else() + set(INSTALLDIR "C:\\Program\ Files\\myhdf5") + endif() +endif() +if(NOT DEFINED CTEST_BUILD_CONFIGURATION) + set(CTEST_BUILD_CONFIGURATION "Release") +endif() +if(NOT DEFINED CTEST_SOURCE_NAME) + set(CTEST_SOURCE_NAME "hdf5-${CTEST_SOURCE_VERSION}${CTEST_SOURCE_VERSEXT}") +endif() +if(NOT DEFINED STATICLIBRARIES) + set(STATICLIBRARIES "YES") +endif() +if(NOT DEFINED FORTRANLIBRARIES) + set(FORTRANLIBRARIES "NO") +endif() + set(CTEST_BINARY_NAME "build") set(CTEST_DASHBOARD_ROOT "${CTEST_SCRIPT_DIRECTORY}") if(WIN32) @@ -664,40 +742,30 @@ else() endif() ################################################################### -### Following Line is one of [Release, RelWithDebInfo, Debug] ##### -set(CTEST_BUILD_CONFIGURATION "Release") -################################################################### - -################################################################### ######### Following describes compiler ############ if(WIN32) set(SITE_OS_NAME "Windows") set(SITE_OS_VERSION "WIN7") - if(${CTEST_SCRIPT_ARG} STREQUAL "64-VS2013") - set(CTEST_CMAKE_GENERATOR "Visual Studio 12 2013 Win64") + if(${BUILD_GENERATOR} STREQUAL "VS201364") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2013") set(SITE_COMPILER_VERSION "12") - elseif(${CTEST_SCRIPT_ARG} STREQUAL "32-VS2013") - set(CTEST_CMAKE_GENERATOR "Visual Studio 12 2013") + elseif(${BUILD_GENERATOR} STREQUAL "VS2013") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2013") set(SITE_COMPILER_VERSION "12") - elseif(${CTEST_SCRIPT_ARG} STREQUAL "64-VS2012") - set(CTEST_CMAKE_GENERATOR "Visual Studio 11 2012 Win64") + elseif(${BUILD_GENERATOR} STREQUAL "VS201264") set(SITE_OS_BITS "64") set(SITE_COMPILER_NAME "vs2012") set(SITE_COMPILER_VERSION "11") - elseif(${CTEST_SCRIPT_ARG} STREQUAL "32-VS2012") - set(CTEST_CMAKE_GENERATOR "Visual Studio 11 2012") + elseif(${BUILD_GENERATOR} STREQUAL "VS2012") set(SITE_OS_BITS "32") set(SITE_COMPILER_NAME "vs2012") set(SITE_COMPILER_VERSION "11") endif() ## Set the following to unique id your computer ## - set(CTEST_SITE "WIN7${CTEST_SCRIPT_ARG}.XXXX") + set(CTEST_SITE "WIN7${BUILD_GENERATOR}.XXXX") else() - set(CTEST_CMAKE_GENERATOR "Unix Makefiles") ## Set the following to unique id your computer ## if(APPLE) set(CTEST_SITE "MAC.XXXX") @@ -711,9 +779,6 @@ endif() ######### Following is for submission to CDash ############ ################################################################### set(MODEL "Experimental") -######### Following describes computer ############ -## following is optional to describe build ## -set(SITE_BUILDNAME_SUFFIX "STATIC") ################################################################### ################################################################### @@ -727,7 +792,7 @@ set(SITE_BUILDNAME_SUFFIX "STATIC") #set(LOCAL_NO_PACKAGE "TRUE") ##### Following controls source update ##### #set(LOCAL_UPDATE "TRUE") -set(REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8") +set(REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/trunk") #uncomment to use a compressed source file: *.tar on linux or mac *.zip on windows #set(CTEST_USE_TAR_SOURCE "${CTEST_SOURCE_VERSION}") ################################################################### @@ -736,10 +801,16 @@ set(REPOSITORY_URL "http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8") #### Change default configuration of options in config/cmake/cacheinit.cmake file ### #### format: set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DXXX:YY=ZZZZ") -### uncomment/comment and change the following lines for configuration options +################################################################### +if(STATICLIBRARIES) + set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF") + ######### Following describes computer ############ + ## following is optional to describe build ## + set(SITE_BUILDNAME_SUFFIX "STATIC") +endif(STATICLIBRARIES) +################################################################### -### comment the following line or change OFF to ON in order to build shared libraries -set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF") +### uncomment/comment and change the following lines for other configuration options #### ext libraries #### ### ext libs from tgz @@ -754,10 +825,11 @@ set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ALLOW_EXTERNAL_SUPPORT:STRING #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF") #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_SZIP_ENCODING:BOOL=OFF") #### fortran #### -### enable Fortran 2003 depends on HDF5_BUILD_FORTRAN -set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_F2003:BOOL=ON") -### disable Fortran; change OFF to ON in order to build FORTRAN libraries -set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF") +if(FORTRANLIBRARIES) + set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=ON") + ### enable Fortran 2003 depends on HDF5_BUILD_FORTRAN + set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_ENABLE_F2003:BOOL=ON") +endif(FORTRANLIBRARIES) ### disable test program builds #set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DBUILD_TESTING:BOOL=OFF") @@ -768,7 +840,7 @@ set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_BUILD_FORTRAN:BOOL=OFF") set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DHDF5_PACKAGE_EXTLIBS:BOOL=ON") ### change install prefix -#set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH=install") +set(ADD_BUILD_OPTIONS "${ADD_BUILD_OPTIONS} -DCMAKE_INSTALL_PREFIX:PATH=${INSTALLDIR}") ################################################################### diff --git a/release_docs/USING_HDF5_CMake.txt b/release_docs/USING_HDF5_CMake.txt index 578f957..c48bca5 100644 --- a/release_docs/USING_HDF5_CMake.txt +++ b/release_docs/USING_HDF5_CMake.txt @@ -99,12 +99,12 @@ These steps are described in more detail below. * MinGW Makefiles * NMake Makefiles * Unix Makefiles - * Visual Studio 12 - * Visual Studio 12 Win64 - * Visual Studio 11 - * Visual Studio 11 Win64 - * Visual Studio 10 - * Visual Studio 10 Win64 + * Visual Studio 12 2013 + * Visual Studio 12 2013 Win64 + * Visual Studio 11 2012 + * Visual Studio 11 2012 Win64 + * Visual Studio 10 2010 + * Visual Studio 10 2010 Win64 is: * BUILD_TESTING:BOOL=ON @@ -114,7 +114,7 @@ These steps are described in more detail below. 2.1 Visual CMake users, click the Configure button. If this is the first time you are running cmake-gui in this directory, you will be prompted for the - generator you wish to use (for example on Windows, Visual Studio 10). + generator you wish to use (for example on Windows, Visual Studio 12 2013). CMake will read in the CMakeLists.txt files from the source directory and display options for the HDF5 project. After the first configure you can adjust the cache settings and/or specify locations of other programs. @@ -176,8 +176,8 @@ These steps are described in more detail below. III. Minimum C Project Files for CMake ======================================================================== -Create a CMakeLists.txt file at the source root. Include the -following text in the file: +Given the preconditions in section I, create a CMakeLists.txt file at the +source root. Include the following text in the file: ########################################################## cmake_minimum_required (VERSION 3.1.0) @@ -206,18 +206,15 @@ add_test (NAME test_example COMMAND ${example}) IV. APPENDIX ======================================================================== -Below is an example of the ctest script used by The HDF Group. See the -Appendix in the INSTALL_CMake.txt file for the CTestScript.cmake file used -by this script. Adjust the values as necessary. Note that the source folder -is entered on the command line and the build folder is created as a sub-folder. -Windows should adjust the forward slash to double backslashes, except for -the HDF_DIR environment variable. +Below is an example of a ctest script that can be used to build the examples. +Adjust the values as necessary. Note that the source folder is entered on the +command line and the build folder is created as a sub-folder. Windows should +adjust the forward slash to double backslashes, except for the HDF_DIR +environment variable. -NOTE: these files are available at the HDF web site: +NOTE: this file is available at the HDF web site: http://www.hdfgroup.org/HDF5/release/cmakebuild.html - CTestScript.cmake - HDF518_Examples.cmake @@ -228,22 +225,24 @@ ctest cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) ############################################################################ -# Product specific script, HDF518_Examples.cmake, that uses the -# CTestScript.cmake file (see Appendix in the CMake.txt). Usage: +# Product specific script, HDF518_Examples.cmake. Usage: # ctest -S HDF518_Examples.cmake,OPTION=VALUE -C Release -VV -O test.log # where valid options for OPTION are: +# BUILD_GENERATOR - The cmake build generator: +# Unix * Unix Makefiles +# VS2013 * Visual Studio 12 2013 +# VS201364 * Visual Studio 12 2013 Win64 +# VS2012 * Visual Studio 11 2012 +# VS201264 * Visual Studio 11 2012 Win64 +# # INSTALLDIR - root folder where hdf5 is installed # CTEST_BUILD_CONFIGURATION - Release, Debug, etc # CTEST_SOURCE_NAME - source folder # STATICLIBRARIES - Build/use static libraries # NO_MAC_FORTRAN - Yes to be SHARED on a Mac ############################################################################################################### - -set(CTEST_CMAKE_GENERATOR "@CMAKE_GENERATOR@") -set(CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY}) -#set(BUILD_OPTIONS "${BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=ON") - # handle input parameters to script. +#BUILD_GENERATOR - which CMake generator to use, required #INSTALLDIR - HDF5-1.8 root folder #CTEST_BUILD_CONFIGURATION - Release, Debug, RelWithDebInfo #CTEST_SOURCE_NAME - name of source folder; HDF4Examples @@ -260,8 +259,34 @@ if(DEFINED CTEST_SCRIPT_ARG) endif() endforeach() endif() + +# build generator must be defined +if(NOT DEFINED BUILD_GENERATOR) + message(FATAL_ERROR "BUILD_GENERATOR must be defined - Unix, VS2013, VS201364, VS2012, or VS201264") +else() + if(${BUILD_GENERATOR} STREQUAL "Unix") + set(CMAKE_GENERATOR "Unix Makefiles") + elseif(${BUILD_GENERATOR} STREQUAL "VS2013") + set(CMAKE_GENERATOR "Visual Studio 12 2013") + elseif(${BUILD_GENERATOR} STREQUAL "VS201364") + set(CMAKE_GENERATOR "Visual Studio 12 2013 Win64") + elseif(${BUILD_GENERATOR} STREQUAL "VS2012") + set(CMAKE_GENERATOR "Visual Studio 11 2012") + elseif(${BUILD_GENERATOR} STREQUAL "VS201264") + set(CMAKE_GENERATOR "Visual Studio 11 2012 Win64") + else() + message(FATAL_ERROR "Invalid BUILD_GENERATOR must be - Unix, VS2013, VS201364, VS2012, or VS201264") + endif() +endif() +set(CTEST_CMAKE_GENERATOR "${CMAKE_GENERATOR}") +set(CTEST_DASHBOARD_ROOT ${CTEST_SCRIPT_DIRECTORY}) + if(NOT DEFINED INSTALLDIR) + if(WIN32) set(INSTALLDIR "/usr/local/myhdf5") + else() + set(INSTALLDIR "C:\\Program\ Files\\myhdf5") + endif() endif() if(NOT DEFINED CTEST_BUILD_CONFIGURATION) set(CTEST_BUILD_CONFIGURATION "Release") @@ -272,6 +297,9 @@ endif() if(NOT DEFINED STATICLIBRARIES) set(STATICLIBRARIES "YES") endif() +if(NOT DEFINED FORTRANLIBRARIES) + set(FORTRANLIBRARIES "NO") +endif() #TAR_SOURCE - name of tarfile #if(NOT DEFINED TAR_SOURCE) @@ -281,6 +309,10 @@ endif() ############################################################################################################### # Adjust the following SET Commands as needed ############################################################################################################### +if(FORTRANLIBRARIES) + set(BUILD_OPTIONS "${BUILD_OPTIONS} -DHDF_BUILD_FORTRAN:BOOL=ON") +endif(FORTRANLIBRARIES) + if(WIN32) if(STATICLIBRARIES) set(BUILD_OPTIONS "${BUILD_OPTIONS} -DBUILD_SHARED_LIBS:BOOL=OFF") -- cgit v0.12