Skip to content

Commit d1bf9de

Browse files
committed
Update patch from upstream
Need to make sure these are baselined against 4.8.1
1 parent f8e1148 commit d1bf9de

File tree

1 file changed

+97
-32
lines changed

1 file changed

+97
-32
lines changed

recipe/patches/fix_cmake.patch

Lines changed: 97 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,68 @@
1-
commit ebbe3b438edd54b801b6465b8ab1b36b013ff96d
2-
Author: Ward Fisher <wfisher@ucar.edu>
3-
Date: Mon Aug 30 09:10:14 2021 -0600
4-
5-
Revamping the HDF5_VERSION logic.
6-
71
diff --git a/CMakeLists.txt b/CMakeLists.txt
8-
index 498cf8975..7ecd7f576 100644
92
--- a/CMakeLists.txt
103
+++ b/CMakeLists.txt
11-
@@ -670,12 +670,28 @@ IF(USE_HDF5)
4+
@@ -606,11 +606,20 @@ ENDIF(ENABLE_STRICT_NULL_BYTE_HEADER_PADDING)
5+
##
6+
SET(USE_HDF5 ${ENABLE_HDF5})
7+
IF(USE_HDF5)
8+
+
9+
+ ##
10+
+ # Assert HDF5 version meets minimum required version.
11+
+ ##
12+
+ SET(HDF5_VERSION_REQUIRED 1.8.10)
13+
+
14+
+
15+
##
16+
# Accommodate developers who have hdf5 libraries and
17+
# headers on their system, but do not have a the hdf
18+
# .cmake files. If this is the case, they should
19+
# specify HDF5_HL_LIBRARY, HDF5_LIBRARY, HDF5_INCLUDE_DIR manually.
20+
+ #
21+
+ # This script will attempt to determine the version of the HDF5 library programatically.
22+
##
23+
IF(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR)
24+
SET(HDF5_LIBRARIES ${HDF5_C_LIBRARY} ${HDF5_HL_LIBRARY})
25+
@@ -620,6 +629,31 @@ IF(USE_HDF5)
26+
INCLUDE_DIRECTORIES(${HDF5_INCLUDE_DIR})
27+
MESSAGE(STATUS "Using HDF5 C Library: ${HDF5_C_LIBRARY}")
28+
MESSAGE(STATUS "Using HDF5 HL LIbrary: ${HDF5_HL_LIBRARY}")
29+
+ if (EXISTS "${HDF5_INCLUDE_DIR}/H5pubconf.h")
30+
+ file(READ "${HDF5_INCLUDE_DIR}/H5pubconf.h" _hdf5_version_lines
31+
+ REGEX "#define[ \t]+H5_VERSION")
32+
+ string(REGEX REPLACE ".*H5_VERSION .*\"\(.*\)\".*" "\\1" _hdf5_version "${_hdf5_version_lines}")
33+
+ set(HDF5_VERSION "${_hdf5_version}" CACHE STRING "")
34+
+ unset(_hdf5_version)
35+
+ unset(_hdf5_version_lines)
36+
+ endif ()
37+
+ MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}")
38+
+ ###
39+
+ # If HDF5_VERSION is still empty, we have a problem.
40+
+ # Error out.
41+
+ ###
42+
+ IF("${HDF5_VERSION}" STREQUAL "")
43+
+ MESSAGE(FATAL_ERR "Unable to determine HDF5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}. Please ensure that libhdf5 is installed and accessible.")
44+
+ ENDIF()
45+
+
46+
+ ###
47+
+ # Now that we know HDF5_VERSION isn't empty, we can check for minimum required version,
48+
+ # and toggle various options.
49+
+ ###
50+
+ IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
51+
+ MESSAGE(FATAL_ERROR "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
52+
+ ENDIF()
53+
+
54+
ELSE(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) # We are seeking out HDF5 with Find Package.
55+
###
56+
# For now we assume that if we are building netcdf
57+
@@ -657,25 +691,49 @@ IF(USE_HDF5)
58+
# HDF5 variables we need to munge.
1259
##
13-
SET(HDF5_VERSION_REQUIRED 1.8.10)
1460

61+
- ##
62+
- # Assert HDF5 version meets minimum required version.
63+
- ##
64+
- SET(HDF5_VERSION_REQUIRED 1.8.10)
65+
-
1566
+ # Some versions of HDF5 set HDF5_VERSION_STRING instead of HDF5_VERSION
1667
IF(HDF5_VERSION_STRING AND NOT HDF5_VERSION)
1768
SET(HDF5_VERSION ${HDF5_VERSION_STRING})
@@ -24,27 +75,24 @@ index 498cf8975..7ecd7f576 100644
2475
IF("${HDF5_VERSION}" STREQUAL "")
2576
- MESSAGE(STATUS "Unable to determine hdf5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}")
2677
- ELSE()
78+
- IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
79+
- MESSAGE(FATAL_ERROR
80+
- "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
81+
- ELSE()
2782
+ MESSAGE(STATUS "HDF5_VERSION not detected. Attempting to determine programatically.")
2883
+ IF (EXISTS "${HDF5_INCLUDE_DIR}/H5pubconf.h")
2984
+ file(READ "${HDF5_INCLUDE_DIR}/H5pubconf.h" _hdf5_version_lines
3085
+ REGEX "#define[ \t]+H5_VERSION")
3186
+ string(REGEX REPLACE ".*H5_VERSION .*\"\(.*\)\".*" "\\1" _hdf5_version "${_hdf5_version_lines}")
32-
+ set(HDF5_VERSION "${_hdf5_version}")
87+
+ set(HDF5_VERSION "${_hdf5_version}" CACHE STRING "")
3388
+ unset(_hdf5_version)
3489
+ 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)
90+
MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}")
4391
ENDIF()
92+
+ ELSE()
93+
+ SET(HDF5_VERSION ${HDF5_VERSION} CACHE STRING "")
4494
ENDIF()
4595

46-
+
47-
+
4896
+ ###
4997
+ # If HDF5_VERSION is still empty, we have a problem.
5098
+ # Error out.
@@ -53,23 +101,21 @@ index 498cf8975..7ecd7f576 100644
53101
+ MESSAGE(FATAL_ERR "Unable to determine HDF5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}. Please ensure that libhdf5 is installed and accessible.")
54102
+ ENDIF()
55103
+
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()
104+
+ ###
105+
+ # Now that we know HDF5_VERSION isn't empty, we can check for minimum required version,
106+
+ # and toggle various options.
107+
+ ###
65108
+
66-
+ MESSAGE("-- HDF5_UTF8_PATHS (HDF5 version 1.10.6+): ${HDF5_UTF8_PATHS}")
109+
+ IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
110+
+ MESSAGE(FATAL_ERROR "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
111+
+ ENDIF()
67112
+
113+
+
68114
+
69115
##
70116
# Include the HDF5 include directory.
71117
##
72-
@@ -718,6 +757,10 @@ IF(USE_HDF5)
118+
@@ -710,6 +768,10 @@ IF(USE_HDF5)
73119
ENDIF(${HDF5_VERSION} VERSION_GREATER "1.8.15")
74120

75121
ELSE(MSVC)
@@ -80,7 +126,26 @@ index 498cf8975..7ecd7f576 100644
80126

81127
IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARY)
82128
SET(HDF5_C_LIBRARY ${HDF5_hdf5_LIBRARY})
83-
@@ -816,16 +859,6 @@ IF(USE_HDF5)
129+
@@ -756,6 +818,18 @@ IF(USE_HDF5)
130+
MESSAGE(STATUS "HDF5 has szip.")
131+
ENDIF()
132+
133+
+ ####
134+
+ # Check to see if HDF5 library is 1.10.6 or greater.
135+
+ # Used to control path name conversion
136+
+ ####
137+
+ IF(${HDF5_VERSION} VERSION_GREATER "1.10.5")
138+
+ SET(HDF5_UTF8_PATHS ON)
139+
+ ELSE()
140+
+ SET(HDF5_UTF8_PATHS OFF)
141+
+ ENDIF()
142+
+
143+
+ MESSAGE("-- HDF5_UTF8_PATHS (HDF5 version 1.10.6+): ${HDF5_UTF8_PATHS}")
144+
+
145+
# Find out if HDF5 was built with parallel support.
146+
# Do that by checking for the targets H5Pget_fapl_mpiposx and
147+
# H5Pget_fapl_mpio in ${HDF5_LIB}.
148+
@@ -808,16 +882,6 @@ IF(USE_HDF5)
84149
SET(HAS_PAR_FILTERS no CACHE STRING "")
85150
ENDIF()
86151

0 commit comments

Comments
 (0)