early-access version 2853

This commit is contained in:
pineappleEA
2022-07-23 03:01:36 +02:00
parent 1f2b5081b5
commit 1f111bb69c
8955 changed files with 418777 additions and 999 deletions

View File

@@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c36908b..390ac0a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -944,7 +944,7 @@ OPTION(ENABLE_BYTERANGE "Enable byte-range access to remote datasets.." OFF)
# Check for the math library so it can be explicitly linked.
IF(NOT WIN32)
- FIND_LIBRARY(HAVE_LIBM NAMES math m libm)
+ FIND_LIBRARY(HAVE_LIBM NAMES m libm math)
MESSAGE(STATUS "Found Math library: ${HAVE_LIBM}")
IF(NOT HAVE_LIBM)
MESSAGE(FATAL_ERROR "Unable to find the math library.")

View File

@@ -0,0 +1,34 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b93a141..c3763a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -957,7 +957,14 @@ OPTION(ENABLE_DAP_REMOTE_TESTS "Enable DAP remote tests." ON)
SET(REMOTETESTSERVERS "remotetest.unidata.ucar.edu" CACHE STRING "test servers to use for remote test")
# See if we have libzip
-FIND_PACKAGE(Zip)
+if(ENABLE_NCZARR_ZIP)
+ find_package(libzip CONFIG REQUIRED)
+ set(Zip_LIBRARIES libzip::zip)
+ set(Zip_FOUND TRUE)
+else()
+ set(Zip_LIBRARIES "")
+ set(Zip_FOUND FALSE)
+endif()
# Define a test flag for have curl library
IF(Zip_FOUND)
diff --git a/netCDFConfig.cmake.in b/netCDFConfig.cmake.in
index b3be259..72b4b25 100644
--- a/netCDFConfig.cmake.in
+++ b/netCDFConfig.cmake.in
@@ -15,6 +15,9 @@ set(netCDF_LIBRARIES netCDF::netcdf)
include(CMakeFindDependencyMacro)
find_dependency(HDF5 CONFIG)
find_dependency(CURL CONFIG)
+if(@ENABLE_NCZARR_ZIP@)
+ find_dependency(libzip CONFIG)
+endif()
include("${CMAKE_CURRENT_LIST_DIR}/netCDFTargets.cmake")
# Compiling Options

View File

@@ -0,0 +1,11 @@
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1207,7 +1207,8 @@
IF(NOT HDF5_PARALLEL)
SET(USE_PARALLEL OFF CACHE BOOL "")
MESSAGE(STATUS "Cannot find HDF5 library built with parallel support. Disabling parallel build.")
ELSE()
FIND_PACKAGE(MPI REQUIRED)
+ list(REMOVE_ITEM MPI_C_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
SET(HDF5_PARALLEL ON CACHE BOOL "")
SET(USE_PARALLEL ON CACHE BOOL "")

View File

@@ -0,0 +1,13 @@
diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt
index be72612..5e1692f 100644
--- a/liblib/CMakeLists.txt
+++ b/liblib/CMakeLists.txt
@@ -67,7 +67,7 @@ ENDIF()
SET(TLL_LIBS "")
-SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM} ${ZLIB_LIBRARY})
+SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM})
# Add extra dependencies specified via NC_EXTRA_DEPS
SET(TLL_LIBS ${TLL_LIBS} ${EXTRA_DEPS})

View File

@@ -0,0 +1,19 @@
diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt
index 9e126ec..1363d35 100644
--- a/liblib/CMakeLists.txt
+++ b/liblib/CMakeLists.txt
@@ -79,8 +79,14 @@ ENDIF()
IF(USE_HDF5)
if(TARGET hdf5::hdf5-shared)
SET(TLL_LIBS ${TLL_LIBS} hdf5::hdf5-shared hdf5::hdf5_hl-shared)
+ if(USE_PARALLEL)
+ list(APPEND TLL_LIBS ${MPI_C_LIBRARIES})
+ endif()
else()
SET(TLL_LIBS ${TLL_LIBS} hdf5::hdf5-static hdf5::hdf5_hl-static)
+ if(USE_PARALLEL)
+ list(APPEND TLL_LIBS ${MPI_C_LIBRARIES})
+ endif()
endif()
elseif(0)
IF(NOT MSVC)

View File

@@ -0,0 +1,13 @@
diff --git a/libsrc/CMakeLists.txt b/libsrc/CMakeLists.txt
index 4583733..20ce3bf 100644
--- a/libsrc/CMakeLists.txt
+++ b/libsrc/CMakeLists.txt
@@ -64,7 +64,7 @@ IF(HAVE_M4)
IF(NOT MSVC)
ADD_CUSTOM_TARGET(manpage ALL
- COMMAND ${NC_M4} ${ARGS_MANPAGE} '${CMAKE_CURRENT_BINARY_DIR}/netcdf.m4' > '${CMAKE_CURRENT_BINARY_DIR}/netcdf.3'
+ COMMAND ${NC_M4} ${ARGS_MANPAGE} "${CMAKE_CURRENT_BINARY_DIR}/netcdf.m4" > "${CMAKE_CURRENT_BINARY_DIR}/netcdf.3" VERBATIM
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)

View File

@@ -0,0 +1,38 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 390ac0a..4bcd909 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2100,6 +2100,21 @@ STRING(REPLACE ";" " " LINKFLAGS "${LINKFLAGS}")
SET(LIBS ${NC_LIBS})
SET(NC_LIBS "-lnetcdf")
+set(NC_LIBS_PRIVATE " ${LIBS} ")
+set(NC_REQUIRES_PRIVATE "")
+macro(replace_pkgconfig_module PATTERN MODULE)
+ if(NC_LIBS_PRIVATE MATCHES " ${PATTERN} ")
+ string(REPLACE "${CMAKE_MATCH_0}" " " NC_LIBS_PRIVATE "${NC_LIBS_PRIVATE}")
+ string(APPEND NC_REQUIRES_PRIVATE " ${MODULE}")
+ endif()
+endmacro()
+replace_pkgconfig_module("-lhdf5_hl" "hdf5_hl")
+replace_pkgconfig_module("-lhdf5" "hdf5")
+replace_pkgconfig_module("-lmpi" "ompi-c")
+replace_pkgconfig_module("-lzip" "libzip")
+replace_pkgconfig_module("-lCURL[^ ]*" "libcurl")
+replace_pkgconfig_module("-lZLIB[^ ]*" "zlib")
+
configure_file(
${netCDF_SOURCE_DIR}/netcdf.pc.in
${netCDF_BINARY_DIR}/netcdf.pc @ONLY)
diff --git a/netcdf.pc.in b/netcdf.pc.in
index 22b5594..a48b7c2 100644
--- a/netcdf.pc.in
+++ b/netcdf.pc.in
@@ -9,5 +9,6 @@ Description: NetCDF Client Library for C
URL: http://www.unidata.ucar.edu/netcdf
Version: @PACKAGE_VERSION@
Libs: -L${libdir} @NC_LIBS@
-Libs.private: @LIBS@
+Libs.private: @NC_LIBS_PRIVATE@
Cflags: -I${includedir}
+Requires.private: @NC_REQUIRES_PRIVATE@

View File

@@ -0,0 +1,13 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6b39f0e..507eb4c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2028,7 +2028,7 @@ ADD_SUBDIRECTORY(docs)
# install them in the binary dir. Grab all of the .libs, put them
# in the libdir.
##
-IF(MSVC)
+IF(MSVC AND NOT DISABLE_INSTALL_DEPENDENCIES)
FILE(GLOB COPY_FILES ${CMAKE_PREFIX_PATH}/lib/*.lib)
INSTALL(FILES ${COPY_FILES}
DESTINATION ${CMAKE_INSTALL_LIBDIR}

95
externals/vcpkg/ports/netcdf-c/portfile.cmake vendored Executable file
View File

@@ -0,0 +1,95 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Unidata/netcdf-c
REF cd6173f472b778fa0e558982c59f7183aa5b8e47 # v4.8.1
SHA512 e965b9c865f31abcd0ae045cb709a41710e72bcf5bd237972cd62688f0f099f1b12be316a448d22315b1c73eb99fae3ea38072e9a3646a4f70ba42507d82f537
HEAD_REF master
PATCHES
no-install-deps.patch
fix-dependency-zlib.patch
use_targets.patch
fix-dependency-libmath.patch
fix-linkage-error.patch
fix-pkgconfig.patch
fix-manpage-msys.patch
fix-dependency-libzip.patch
fix-dependency-mpi.patch
)
#Remove outdated find modules
file(REMOVE "${SOURCE_PATH}/cmake/modules/FindSZIP.cmake")
file(REMOVE "${SOURCE_PATH}/cmake/modules/FindZLIB.cmake")
file(REMOVE "${SOURCE_PATH}/cmake/modules/windows/FindHDF5.cmake")
if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW)
set(CRT_OPTION "")
elseif(VCPKG_CRT_LINKAGE STREQUAL "static")
set(CRT_OPTION -DNC_USE_STATIC_CRT=ON)
else()
set(CRT_OPTION -DNC_USE_STATIC_CRT=OFF)
endif()
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
dap ENABLE_DAP
netcdf-4 ENABLE_NETCDF_4
hdf5 ENABLE_HDF5
nczarr ENABLE_NCZARR
nczarr-zip ENABLE_NCZARR_ZIP
tools BUILD_UTILITIES
)
if(NOT ENABLE_DAP AND NOT ENABLE_NCZARR)
list(APPEND FEATURE_OPTIONS "-DCMAKE_DISABLE_FIND_PACKAGE_CURL=ON")
endif()
if(ENABLE_HDF5)
# Fix hdf5 szip support detection for static linkage.
x_vcpkg_pkgconfig_get_modules(
PREFIX HDF5
MODULES hdf5
LIBRARIES
)
if(HDF5_LIBRARIES_RELEASE MATCHES "szip")
list(APPEND FEATURE_OPTIONS "-DUSE_SZIP=ON")
endif()
endif()
if(VCPKG_TARGET_IS_UWP)
string(APPEND VCPKG_C_FLAGS " /wd4996 /wd4703")
string(APPEND VCPKG_CXX_FLAGS " /wd4996 /wd4703")
endif()
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
DISABLE_PARALLEL_CONFIGURE # netcdf-c configures in the source!
OPTIONS
-DBUILD_TESTING=OFF
-DENABLE_EXAMPLES=OFF
-DENABLE_TESTS=OFF
-DENABLE_FILTER_TESTING=OFF
-DENABLE_DAP_REMOTE_TESTS=OFF
-DDISABLE_INSTALL_DEPENDENCIES=ON
${CRT_OPTION}
${FEATURE_OPTIONS}
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup(PACKAGE_NAME "netcdf" CONFIG_PATH "lib/cmake/netCDF")
vcpkg_fixup_pkgconfig()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin/nc-config" "${CURRENT_PACKAGES_DIR}/bin/nc-config") # invalid
if("tools" IN_LIST FEATURES)
vcpkg_copy_tools(
TOOL_NAMES nccopy ncdump ncgen ncgen3
AUTO_CLEAN
)
elseif(VCPKG_LIBRARY_LINKAGE STREQUAL "static" OR NOT VCPKG_TARGET_IS_WINDOWS)
# delete bin under non-windows because the dynamic libraries get put in lib
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin" "${CURRENT_PACKAGES_DIR}/bin")
endif()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
file(INSTALL "${SOURCE_PATH}/COPYRIGHT" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)

View File

@@ -0,0 +1,137 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 507eb4c..c36908b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -433,7 +433,6 @@ IF(NC_EXTRA_DEPS)
SET(EXTRA_DEPS ${EXTRA_DEPS} "${${_LIB}_DEP}")
ENDFOREACH()
MESSAGE("Extra deps: ${EXTRA_DEPS}")
- LIST(REMOVE_DUPLICATES EXTRA_DEPS)
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${EXTRA_DEPS})
ENDIF()
###
@@ -628,15 +627,6 @@ IF(USE_HDF5)
# we will use a static library. This can be toggled
# by explicitly modifying NC_FIND_SHARED_LIBS.
##
- IF(NC_FIND_SHARED_LIBS)
- SET(NC_HDF5_LINK_TYPE "shared")
- SET(NC_HDF5_LINK_TYPE_UPPER "SHARED")
- ADD_DEFINITIONS(-DH5_BUILT_AS_DYNAMIC_LIB)
- ELSE(NC_FIND_SHARED_LIBS)
- SET(NC_HDF5_LINK_TYPE "static")
- SET(NC_HDF5_LINK_TYPE_UPPER "STATIC")
- ADD_DEFINITIONS(-DH5_BUILT_AS_STATIC_LIB)
- ENDIF(NC_FIND_SHARED_LIBS)
#####
# First, find the C and HL libraries.
@@ -649,7 +639,7 @@ IF(USE_HDF5)
SET(SEARCH_PACKAGE_NAME ${HDF5_PACKAGE_NAME})
FIND_PACKAGE(HDF5 NAMES ${SEARCH_PACKAGE_NAME} COMPONENTS C HL CONFIG REQUIRED ${NC_HDF5_LINK_TYPE})
ELSE(MSVC)
- FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED)
+ FIND_PACKAGE(HDF5 COMPONENTS C HL CONFIG REQUIRED)
ENDIF(MSVC)
##
@@ -726,6 +716,19 @@ IF(USE_HDF5)
SET(HDF5_C_LIBRARY hdf5)
ENDIF()
ENDIF(HDF5_C_LIBRARY AND HDF5_HL_LIBRARY AND HDF5_INCLUDE_DIR)
+
+ if(TARGET hdf5::hdf5-shared)
+ set(HDF5_C_LIBRARY hdf5::hdf5-shared)
+ set(HDF5_C_LIBRARY_hdf5 hdf5::hdf5-shared)
+ set(HDF5_HL_LIBRARIES hdf5::hdf5_hl-shared)
+ ADD_DEFINITIONS(-DH5_BUILT_AS_DYNAMIC_LIB)
+ else()
+ set(HDF5_C_LIBRARY hdf5::hdf5-static)
+ set(HDF5_C_LIBRARY_hdf5 hdf5::hdf5-static)
+ set(HDF5_HL_LIBRARIES hdf5::hdf5_hl-static)
+ ADD_DEFINITIONS(-DH5_BUILT_AS_STATIC_LIB)
+ endif()
+ list(APPEND CMAKE_REQUIRED_LIBRARIES ${HDF5_C_LIBRARY})
FIND_PACKAGE(Threads)
@@ -745,6 +748,8 @@ IF(USE_HDF5)
IF(USE_SZIP)
# If user has specified the `SZIP_LIBRARY`, use it; otherwise try to find...
IF(NOT SZIP_LIBRARY)
+ set(SZIP_LIBRARY "")
+ ELSEIF(0)
FIND_LIBRARY(SZIP PATH NAMES szip sz)
SET(SZIP_LIBRARY ${SZIP})
IF(NOT SZIP)
@@ -847,8 +852,7 @@ IF(USE_HDF5)
ENDIF(USE_HDF5)
# See if we have libcurl
-FIND_PACKAGE(CURL)
-ADD_DEFINITIONS(-DCURL_STATICLIB=1)
+FIND_PACKAGE(CURL CONFIG)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
# Define a test flag for have curl library
@@ -2089,10 +2093,9 @@ IF(NC_LIBS)
STRING(REPLACE "-lhdf5::hdf5_hl-static" "-lhdf5_hl" NC_LIBS ${NC_LIBS})
ENDIF()
-STRING(REPLACE ";" " " LINKFLAGS "${LINKFLAGS}")
-
-LIST(REMOVE_DUPLICATES NC_LIBS)
+LIST(REMOVE_ITEM LINKFLAGS "-L")
LIST(REMOVE_DUPLICATES LINKFLAGS)
+STRING(REPLACE ";" " " LINKFLAGS "${LINKFLAGS}")
SET(LIBS ${NC_LIBS})
SET(NC_LIBS "-lnetcdf")
diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt
index 5e1692f..9e126ec 100644
--- a/liblib/CMakeLists.txt
+++ b/liblib/CMakeLists.txt
@@ -77,6 +77,12 @@ IF(HAVE_LIBDL)
ENDIF()
IF(USE_HDF5)
+ if(TARGET hdf5::hdf5-shared)
+ SET(TLL_LIBS ${TLL_LIBS} hdf5::hdf5-shared hdf5::hdf5_hl-shared)
+ else()
+ SET(TLL_LIBS ${TLL_LIBS} hdf5::hdf5-static hdf5::hdf5_hl-static)
+ endif()
+elseif(0)
IF(NOT MSVC)
# Some version of cmake define HDF5_hdf5_LIBRARY instead of
# HDF5_LIBRARY. Same with HDF5_HL_LIBRARIES
@@ -97,7 +103,7 @@ IF(USE_HDF5)
ENDIF()
IF(FOUND_CURL)
- SET(TLL_LIBS ${TLL_LIBS} ${CURL_LIBRARY})
+ SET(TLL_LIBS ${TLL_LIBS} CURL::libcurl)
ENDIF()
IF(USE_HDF4)
@@ -118,7 +124,6 @@ IF(ENABLE_S3_SDK)
ENDIF()
IF(TLL_LIBS)
- LIST(REMOVE_DUPLICATES TLL_LIBS)
ENDIF()
TARGET_LINK_LIBRARIES(netcdf ${TLL_LIBS})
diff --git a/netCDFConfig.cmake.in b/netCDFConfig.cmake.in
index 9d68eec..b3be259 100644
--- a/netCDFConfig.cmake.in
+++ b/netCDFConfig.cmake.in
@@ -12,6 +12,9 @@ set_and_check(netCDF_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
set(netCDF_LIBRARIES netCDF::netcdf)
# include target information
+include(CMakeFindDependencyMacro)
+find_dependency(HDF5 CONFIG)
+find_dependency(CURL CONFIG)
include("${CMAKE_CURRENT_LIST_DIR}/netCDFTargets.cmake")
# Compiling Options

105
externals/vcpkg/ports/netcdf-c/vcpkg.json vendored Executable file
View File

@@ -0,0 +1,105 @@
{
"name": "netcdf-c",
"version": "4.8.1",
"port-version": 2,
"description": "A set of self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.",
"homepage": "https://github.com/Unidata/netcdf-c",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
],
"default-features": [
"dap",
"nczarr",
"netcdf-4",
"platform-default-features"
],
"features": {
"dap": {
"description": "Build with DAP remote access client support",
"dependencies": [
{
"name": "curl",
"default-features": false
}
]
},
"hdf5": {
"description": "Build with HDF5 support",
"dependencies": [
{
"name": "hdf5",
"default-features": false,
"features": [
"zlib"
]
},
{
"name": "netcdf-c",
"default-features": false,
"features": [
"netcdf-4"
]
},
{
"name": "vcpkg-pkgconfig-get-modules",
"host": true
}
]
},
"nczarr": {
"description": "Build with NCZarr cloud storage access support",
"dependencies": [
{
"name": "netcdf-c",
"default-features": false,
"features": [
"netcdf-4"
]
}
]
},
"nczarr-zip": {
"description": "Build with NCZarr ZIP support",
"dependencies": [
{
"name": "libzip",
"default-features": false
},
{
"name": "netcdf-c",
"default-features": false,
"features": [
"nczarr"
]
}
]
},
"netcdf-4": {
"description": "Build with netCDF-4 support"
},
"platform-default-features": {
"$comment": "Break vcpkg CI cascade.",
"description": "Enable platform-dependent default features",
"dependencies": [
{
"name": "netcdf-c",
"default-features": false,
"features": [
"hdf5"
],
"platform": "!uwp & !(arm64 & windows)"
}
]
},
"tools": {
"description": "Build utilities"
}
}
}