From 4bd122ad9c82464d8d1271e448e510a5d40f4596 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 13 May 2015 09:59:43 -0400 Subject: [PATCH 1/2] FindHDF5: Check for a few H5pubconf*.h name variants Some distros package H5pubconf.h as "H5pubconf-32.h" or "H5pubconf-64.h" depending on the architecture. Look for all of these names. --- Modules/FindHDF5.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake index 0d58e132c..f65e7f960 100644 --- a/Modules/FindHDF5.cmake +++ b/Modules/FindHDF5.cmake @@ -336,14 +336,16 @@ if( NOT HDF5_FOUND ) # HDF5 was compiled with parallel IO support set( HDF5_IS_PARALLEL FALSE ) foreach( _dir IN LISTS HDF5_INCLUDE_DIRS ) - if( EXISTS "${_dir}/H5pubconf.h" ) - file( STRINGS "${_dir}/H5pubconf.h" + foreach(_hdr "${_dir}/H5pubconf.h" "${_dir}/H5pubconf-64.h" "${_dir}/H5pubconf-32.h") + if( EXISTS "${_hdr}" ) + file( STRINGS "${_hdr}" HDF5_HAVE_PARALLEL_DEFINE REGEX "HAVE_PARALLEL 1" ) if( HDF5_HAVE_PARALLEL_DEFINE ) set( HDF5_IS_PARALLEL TRUE ) endif() endif() + endforeach() endforeach() set( HDF5_IS_PARALLEL ${HDF5_IS_PARALLEL} CACHE BOOL "HDF5 library compiled with parallel IO support" ) From 5685817874e25bb1e8b112e66186eec4345c4635 Mon Sep 17 00:00:00 2001 From: Axel Huebl Date: Mon, 11 May 2015 15:22:28 +0200 Subject: [PATCH 2/2] FindHDF5: Add version support Detect the HDF5 version and set HDF5_VERSION just as we detect HDF5_IS_PARALLEL from the header already. --- Modules/FindHDF5.cmake | 19 ++++++++++++++++--- Tests/CMakeOnly/AllFindModules/CMakeLists.txt | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Modules/FindHDF5.cmake b/Modules/FindHDF5.cmake index f65e7f960..3bd6f1e68 100644 --- a/Modules/FindHDF5.cmake +++ b/Modules/FindHDF5.cmake @@ -51,6 +51,7 @@ # bindings. # HDF5_LIBRARIES - Required libraries for all requested bindings # HDF5_FOUND - true if HDF5 was found on the system +# HDF5_VERSION - HDF5 version in format Major.Minor.Release # HDF5_LIBRARY_DIRS - the full set of library directories # HDF5_IS_PARALLEL - Whether or not HDF5 was found with parallel IO support # HDF5_C_COMPILER_EXECUTABLE - the path to the HDF5 C wrapper compiler @@ -59,6 +60,7 @@ # HDF5_DIFF_EXECUTABLE - the path to the HDF5 dataset comparison tool #============================================================================= +# Copyright 2015 Axel Huebl, Helmholtz-Zentrum Dresden - Rossendorf # Copyright 2009 Kitware, Inc. # # Distributed under the OSI-approved BSD License (the "License"); @@ -335,6 +337,7 @@ if( NOT HDF5_FOUND ) # If the HDF5 include directory was found, open H5pubconf.h to determine if # HDF5 was compiled with parallel IO support set( HDF5_IS_PARALLEL FALSE ) + set( HDF5_VERSION "" ) foreach( _dir IN LISTS HDF5_INCLUDE_DIRS ) foreach(_hdr "${_dir}/H5pubconf.h" "${_dir}/H5pubconf-64.h" "${_dir}/H5pubconf-32.h") if( EXISTS "${_hdr}" ) @@ -344,6 +347,16 @@ if( NOT HDF5_FOUND ) if( HDF5_HAVE_PARALLEL_DEFINE ) set( HDF5_IS_PARALLEL TRUE ) endif() + unset(HDF5_HAVE_PARALLEL_DEFINE) + + file( STRINGS "${_hdr}" + HDF5_VERSION_DEFINE + REGEX "^[ \t]*#[ \t]*define[ \t]+H5_VERSION[ \t]+" ) + if( "${HDF5_VERSION_DEFINE}" MATCHES + "H5_VERSION[ \t]+\"([0-9]+\\.[0-9]+\\.[0-9]+).*\"" ) + set( HDF5_VERSION "${CMAKE_MATCH_1}" ) + endif() + unset(HDF5_VERSION_DEFINE) endif() endforeach() endforeach() @@ -359,8 +372,8 @@ if( NOT HDF5_FOUND ) endif() -find_package_handle_standard_args( HDF5 DEFAULT_MSG - HDF5_LIBRARIES - HDF5_INCLUDE_DIRS +find_package_handle_standard_args( HDF5 + REQUIRED_VARS HDF5_LIBRARIES HDF5_INCLUDE_DIRS + VERSION_VAR HDF5_VERSION ) diff --git a/Tests/CMakeOnly/AllFindModules/CMakeLists.txt b/Tests/CMakeOnly/AllFindModules/CMakeLists.txt index 15493be41..bdc25639c 100644 --- a/Tests/CMakeOnly/AllFindModules/CMakeLists.txt +++ b/Tests/CMakeOnly/AllFindModules/CMakeLists.txt @@ -86,8 +86,8 @@ foreach(VTEST ALSA ARMADILLO BZIP2 CUPS CURL EXPAT FREETYPE GETTEXT GIT HG check_version_string(${VTEST} ${VTEST}_VERSION_STRING) endforeach() -foreach(VTEST BISON Boost CUDA DOXYGEN FLEX GIF GTK2 LibArchive OPENSCENEGRAPH - RUBY SWIG) +foreach(VTEST BISON Boost CUDA DOXYGEN FLEX GIF GTK2 + HDF5 LibArchive OPENSCENEGRAPH RUBY SWIG) check_version_string(${VTEST} ${VTEST}_VERSION) endforeach()