|
1 | | -commit 793ae8c2b4cc651d9c6670bb03ebb0740987f4f6 |
2 | | -Author: Ryan May <rmay@ucar.edu> |
3 | | -Date: Wed Aug 25 16:29:45 2021 -0600 |
| 1 | +commit ebbe3b438edd54b801b6465b8ab1b36b013ff96d |
| 2 | +Author: Ward Fisher <wfisher@ucar.edu> |
| 3 | +Date: Mon Aug 30 09:10:14 2021 -0600 |
4 | 4 |
|
5 | | - Revert "Simply version check logic" |
6 | | - |
7 | | - This reverts commit e755a08f11dc7a3b31039a912334505bdd90ecd8. |
| 5 | + Revamping the HDF5_VERSION logic. |
8 | 6 |
|
9 | 7 | diff --git a/CMakeLists.txt b/CMakeLists.txt |
10 | | -index e1b620fee..dc95eeae9 100644 |
| 8 | +index 498cf8975..7ecd7f576 100644 |
11 | 9 | --- a/CMakeLists.txt |
12 | 10 | +++ b/CMakeLists.txt |
13 | | -@@ -818,11 +818,19 @@ IF(USE_HDF5) |
| 11 | +@@ -670,12 +670,28 @@ IF(USE_HDF5) |
| 12 | + ## |
| 13 | + SET(HDF5_VERSION_REQUIRED 1.8.10) |
14 | 14 |
|
15 | | - # Check to see if HDF5 library is 1.10.6 or greater. |
16 | | - # Used to control path name conversion |
| 15 | ++ # Some versions of HDF5 set HDF5_VERSION_STRING instead of HDF5_VERSION |
| 16 | + IF(HDF5_VERSION_STRING AND NOT HDF5_VERSION) |
| 17 | + SET(HDF5_VERSION ${HDF5_VERSION_STRING}) |
| 18 | + ENDIF() |
| 19 | ++ |
| 20 | ++ |
| 21 | ++ ### |
| 22 | ++ # If HDF5_VERSION is undefined, attempt to determine it programatically. |
| 23 | ++ ### |
| 24 | + IF("${HDF5_VERSION}" STREQUAL "") |
| 25 | +- MESSAGE(STATUS "Unable to determine hdf5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}") |
| 26 | +- ELSE() |
| 27 | ++ MESSAGE(STATUS "HDF5_VERSION not detected. Attempting to determine programatically.") |
| 28 | ++ IF (EXISTS "${HDF5_INCLUDE_DIR}/H5pubconf.h") |
| 29 | ++ file(READ "${HDF5_INCLUDE_DIR}/H5pubconf.h" _hdf5_version_lines |
| 30 | ++ REGEX "#define[ \t]+H5_VERSION") |
| 31 | ++ string(REGEX REPLACE ".*H5_VERSION .*\"\(.*\)\".*" "\\1" _hdf5_version "${_hdf5_version_lines}") |
| 32 | ++ set(HDF5_VERSION "${_hdf5_version}") |
| 33 | ++ unset(_hdf5_version) |
| 34 | ++ unset(_hdf5_version_lines) |
| 35 | ++ MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}") |
| 36 | ++ ENDIF() |
| 37 | ++ |
| 38 | ++ ELSE() # Original HDF5_VERSION blank check. |
| 39 | + IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED}) |
| 40 | + MESSAGE(FATAL_ERROR |
| 41 | + "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.") |
| 42 | +@@ -684,6 +700,29 @@ IF(USE_HDF5) |
| 43 | + ENDIF() |
| 44 | + ENDIF() |
| 45 | + |
| 46 | ++ |
| 47 | ++ |
| 48 | ++ ### |
| 49 | ++ # If HDF5_VERSION is still empty, we have a problem. |
| 50 | ++ # Error out. |
| 51 | ++ ### |
| 52 | ++ IF("${HDF5_VERSION}" STREQUAL "") |
| 53 | ++ MESSAGE(FATAL_ERR "Unable to determine HDF5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}. Please ensure that libhdf5 is installed and accessible.") |
| 54 | ++ ENDIF() |
| 55 | ++ |
| 56 | ++ #### |
| 57 | ++ # Check to see if HDF5 library is 1.10.6 or greater. |
| 58 | ++ # Used to control path name conversion |
| 59 | ++ #### |
| 60 | ++ IF(${HDF5_VERSION} VERSION_GREATER "1.10.5") |
| 61 | ++ SET(HDF5_UTF8_PATHS ON) |
| 62 | ++ ELSE() |
| 63 | ++ SET(HDF5_UTF8_PATHS OFF) |
| 64 | ++ ENDIF() |
| 65 | ++ |
| 66 | ++ MESSAGE("-- HDF5_UTF8_PATHS (HDF5 version 1.10.6+): ${HDF5_UTF8_PATHS}") |
| 67 | ++ |
| 68 | ++ |
| 69 | + ## |
| 70 | + # Include the HDF5 include directory. |
| 71 | + ## |
| 72 | +@@ -718,6 +757,10 @@ IF(USE_HDF5) |
| 73 | + ENDIF(${HDF5_VERSION} VERSION_GREATER "1.8.15") |
| 74 | + |
| 75 | + ELSE(MSVC) |
| 76 | ++ #### |
| 77 | ++ # Environmental variables in Windows when using MSVC |
| 78 | ++ # are a hot mess between versions. |
| 79 | ++ #### |
| 80 | + |
| 81 | + IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARY) |
| 82 | + SET(HDF5_C_LIBRARY ${HDF5_hdf5_LIBRARY}) |
| 83 | +@@ -816,16 +859,6 @@ IF(USE_HDF5) |
| 84 | + SET(HAS_PAR_FILTERS no CACHE STRING "") |
| 85 | + ENDIF() |
| 86 | + |
| 87 | +- # Check to see if HDF5 library is 1.10.6 or greater. |
| 88 | +- # Used to control path name conversion |
17 | 89 | - IF(${HDF5_VERSION} VERSION_GREATER "1.10.5") |
18 | 90 | - SET(HDF5_UTF8_PATHS ON) |
19 | 91 | - ELSE() |
20 | 92 | - SET(HDF5_UTF8_PATHS OFF) |
21 | 93 | - ENDIF() |
22 | | -+ # Check HDF5 version |
23 | | -+ SET(HDF5_UTF8_PATHS OFF) |
24 | | -+ CHECK_C_SOURCE_COMPILES(" |
25 | | -+ #include <H5public.h> |
26 | | -+ int main() { |
27 | | -+#if (H5_VERS_MAJOR*10000 + H5_VERS_MINOR*100 + H5_VERS_RELEASE < 11006) |
28 | | -+ choke me; |
29 | | -+#endif |
30 | | -+ }" HDF5_VERSION_1106) |
31 | | -+ |
32 | | -+ IF(HDF5_VERSION_1106) |
33 | | -+ SET(HDF5_UTF8_PATHS ON) |
34 | | -+ ENDIF(HDF5_VERSION_1106) |
35 | | - |
36 | | - MESSAGE("-- Checking for HDF5 version 1.10.6 or later: ${HDF5_UTF8_PATHS}") |
37 | | - |
38 | | -diff --git a/nc_test4/CMakeLists.txt b/nc_test4/CMakeLists.txt |
39 | | -index c5c345005..d4f97bfd7 100644 |
40 | | ---- a/nc_test4/CMakeLists.txt |
41 | | -+++ b/nc_test4/CMakeLists.txt |
42 | | -@@ -47,10 +47,6 @@ ENDIF(ENABLE_FILTER_TESTING) |
43 | | - |
44 | | - ENDIF(BUILD_UTILITIES) |
45 | | - |
46 | | --IF(${HDF5_VERSION} VERSION_GREATER "1.10.0") |
47 | | -- SET(NC4_TESTS ${NC4_TESTS} tst_virtual_datasets) |
48 | | --ENDIF(${HDF5_VERSION} VERSION_GREATER "1.10.0") |
49 | 94 | - |
50 | | - ## |
51 | | - # The shell script, run_empty_vlen_test.sh, |
52 | | - # depends on the 'tst_empty_vlen_unlim' binary. |
| 95 | +- MESSAGE("-- Checking for HDF5 version 1.10.6 or later: ${HDF5_UTF8_PATHS}") |
| 96 | +- |
| 97 | + FIND_PATH(HAVE_HDF5_H hdf5.h PATHS ${HDF5_INCLUDE_DIR} NO_DEFAULT_PATH) |
| 98 | + FIND_PATH(HAVE_HDF5_H hdf5.h) |
| 99 | + IF(NOT HAVE_HDF5_H) |
0 commit comments