Skip to content

Commit 8764146

Browse files
committed
Update patch from upstream
1 parent f8e1148 commit 8764146

File tree

1 file changed

+104
-32
lines changed

1 file changed

+104
-32
lines changed

recipe/patches/fix_cmake.patch

Lines changed: 104 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,75 @@
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
2+
index 498cf8975..5926f471d 100644
93
--- a/CMakeLists.txt
104
+++ b/CMakeLists.txt
11-
@@ -670,12 +670,28 @@ IF(USE_HDF5)
5+
@@ -9,7 +9,7 @@
6+
#Minimum required CMake Version
7+
cmake_minimum_required(VERSION 3.6.1)
8+
9+
-#Project Name
10+
+#Project Name
11+
project(netCDF LANGUAGES C CXX)
12+
set(PACKAGE "netCDF" CACHE STRING "")
13+
14+
@@ -606,11 +606,20 @@ ENDIF(ENABLE_STRICT_NULL_BYTE_HEADER_PADDING)
15+
##
16+
SET(USE_HDF5 ${ENABLE_HDF5})
17+
IF(USE_HDF5)
18+
+
19+
+ ##
20+
+ # Assert HDF5 version meets minimum required version.
21+
+ ##
22+
+ SET(HDF5_VERSION_REQUIRED 1.8.10)
23+
+
24+
+
25+
##
26+
# Accommodate developers who have hdf5 libraries and
27+
# headers on their system, but do not have a the hdf
28+
# .cmake files. If this is the case, they should
29+
# specify HDF5_HL_LIBRARY, HDF5_LIBRARY, HDF5_INCLUDE_DIR manually.
30+
+ #
31+
+ # This script will attempt to determine the version of the HDF5 library programatically.
32+
##
33+
IF(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR)
34+
SET(HDF5_LIBRARIES ${HDF5_C_LIBRARY} ${HDF5_HL_LIBRARY})
35+
@@ -624,10 +633,27 @@ IF(USE_HDF5)
36+
file(READ "${HDF5_INCLUDE_DIR}/H5pubconf.h" _hdf5_version_lines
37+
REGEX "#define[ \t]+H5_VERSION")
38+
string(REGEX REPLACE ".*H5_VERSION .*\"\(.*\)\".*" "\\1" _hdf5_version "${_hdf5_version_lines}")
39+
- set(HDF5_VERSION "${_hdf5_version}")
40+
+ set(HDF5_VERSION "${_hdf5_version}" CACHE STRING "")
41+
unset(_hdf5_version)
42+
unset(_hdf5_version_lines)
43+
endif ()
44+
+ MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}")
45+
+ ###
46+
+ # If HDF5_VERSION is still empty, we have a problem.
47+
+ # Error out.
48+
+ ###
49+
+ IF("${HDF5_VERSION}" STREQUAL "")
50+
+ MESSAGE(FATAL_ERR "Unable to determine HDF5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}. Please ensure that libhdf5 is installed and accessible.")
51+
+ ENDIF()
52+
+
53+
+ ###
54+
+ # Now that we know HDF5_VERSION isn't empty, we can check for minimum required version,
55+
+ # and toggle various options.
56+
+ ###
57+
+ IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
58+
+ MESSAGE(FATAL_ERROR "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
59+
+ ENDIF()
60+
+
61+
ELSE(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR) # We are seeking out HDF5 with Find Package.
62+
###
63+
# For now we assume that if we are building netcdf
64+
@@ -665,25 +691,49 @@ IF(USE_HDF5)
65+
# HDF5 variables we need to munge.
1266
##
13-
SET(HDF5_VERSION_REQUIRED 1.8.10)
1467

68+
- ##
69+
- # Assert HDF5 version meets minimum required version.
70+
- ##
71+
- SET(HDF5_VERSION_REQUIRED 1.8.10)
72+
-
1573
+ # Some versions of HDF5 set HDF5_VERSION_STRING instead of HDF5_VERSION
1674
IF(HDF5_VERSION_STRING AND NOT HDF5_VERSION)
1775
SET(HDF5_VERSION ${HDF5_VERSION_STRING})
@@ -24,27 +82,24 @@ index 498cf8975..7ecd7f576 100644
2482
IF("${HDF5_VERSION}" STREQUAL "")
2583
- MESSAGE(STATUS "Unable to determine hdf5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}")
2684
- ELSE()
85+
- IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
86+
- MESSAGE(FATAL_ERROR
87+
- "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
88+
- ELSE()
2789
+ MESSAGE(STATUS "HDF5_VERSION not detected. Attempting to determine programatically.")
2890
+ IF (EXISTS "${HDF5_INCLUDE_DIR}/H5pubconf.h")
2991
+ file(READ "${HDF5_INCLUDE_DIR}/H5pubconf.h" _hdf5_version_lines
3092
+ REGEX "#define[ \t]+H5_VERSION")
3193
+ string(REGEX REPLACE ".*H5_VERSION .*\"\(.*\)\".*" "\\1" _hdf5_version "${_hdf5_version_lines}")
32-
+ set(HDF5_VERSION "${_hdf5_version}")
94+
+ set(HDF5_VERSION "${_hdf5_version}" CACHE STRING "")
3395
+ unset(_hdf5_version)
3496
+ 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)
97+
MESSAGE(STATUS "Found HDF5 libraries version ${HDF5_VERSION}")
4398
ENDIF()
99+
+ ELSE()
100+
+ SET(HDF5_VERSION ${HDF5_VERSION} CACHE STRING "")
44101
ENDIF()
45102

46-
+
47-
+
48103
+ ###
49104
+ # If HDF5_VERSION is still empty, we have a problem.
50105
+ # Error out.
@@ -53,23 +108,21 @@ index 498cf8975..7ecd7f576 100644
53108
+ MESSAGE(FATAL_ERR "Unable to determine HDF5 version. NetCDF requires at least version ${HDF5_VERSION_REQUIRED}. Please ensure that libhdf5 is installed and accessible.")
54109
+ ENDIF()
55110
+
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()
111+
+ ###
112+
+ # Now that we know HDF5_VERSION isn't empty, we can check for minimum required version,
113+
+ # and toggle various options.
114+
+ ###
65115
+
66-
+ MESSAGE("-- HDF5_UTF8_PATHS (HDF5 version 1.10.6+): ${HDF5_UTF8_PATHS}")
116+
+ IF(${HDF5_VERSION} VERSION_LESS ${HDF5_VERSION_REQUIRED})
117+
+ MESSAGE(FATAL_ERROR "netCDF requires at least HDF5 ${HDF5_VERSION_REQUIRED}. Found ${HDF5_VERSION}.")
118+
+ ENDIF()
67119
+
120+
+
68121
+
69122
##
70123
# Include the HDF5 include directory.
71124
##
72-
@@ -718,6 +757,10 @@ IF(USE_HDF5)
125+
@@ -718,6 +768,10 @@ IF(USE_HDF5)
73126
ENDIF(${HDF5_VERSION} VERSION_GREATER "1.8.15")
74127

75128
ELSE(MSVC)
@@ -80,7 +133,26 @@ index 498cf8975..7ecd7f576 100644
80133

81134
IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARY)
82135
SET(HDF5_C_LIBRARY ${HDF5_hdf5_LIBRARY})
83-
@@ -816,16 +859,6 @@ IF(USE_HDF5)
136+
@@ -764,6 +818,18 @@ IF(USE_HDF5)
137+
MESSAGE(STATUS "HDF5 has szip.")
138+
ENDIF()
139+
140+
+ ####
141+
+ # Check to see if HDF5 library is 1.10.6 or greater.
142+
+ # Used to control path name conversion
143+
+ ####
144+
+ IF(${HDF5_VERSION} VERSION_GREATER "1.10.5")
145+
+ SET(HDF5_UTF8_PATHS ON)
146+
+ ELSE()
147+
+ SET(HDF5_UTF8_PATHS OFF)
148+
+ ENDIF()
149+
+
150+
+ MESSAGE("-- HDF5_UTF8_PATHS (HDF5 version 1.10.6+): ${HDF5_UTF8_PATHS}")
151+
+
152+
# Find out if HDF5 was built with parallel support.
153+
# Do that by checking for the targets H5Pget_fapl_mpiposx and
154+
# H5Pget_fapl_mpio in ${HDF5_LIB}.
155+
@@ -816,16 +882,6 @@ IF(USE_HDF5)
84156
SET(HAS_PAR_FILTERS no CACHE STRING "")
85157
ENDIF()
86158

0 commit comments

Comments
 (0)