mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-01-19 03:13:03 +08:00
[netcdf-c] Update to 4.7.3 and switched to use targets to generate valid targets (#9361)
* fix netcdf configure errors and generated targets * remove target_path since cmake searches in name* * bump control * netcdf update to 4.7.3 and use targets instead of libraries in cmake * remove config from the zlib find_dependency call because there is no config. The target is supplied by a cmake module itself * move usage of hdf5 target to an further up in the cmakelists.txt and use config also on linux * fix dynamic builds * remove code from portfile * remove commenting from patch and simply delete the lines
This commit is contained in:
parent
7dc8ecbc08
commit
d400f3d50b
@ -1,5 +1,5 @@
|
||||
Source: netcdf-c
|
||||
Version: 4.7.0-5
|
||||
Version: 4.7.3
|
||||
Build-Depends: hdf5, curl
|
||||
Homepage: https://github.com/Unidata/netcdf-c
|
||||
Description: a set of self-describing, machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.
|
||||
|
@ -1,28 +0,0 @@
|
||||
diff --git a/include/ncconfigure.h b/include/ncconfigure.h
|
||||
index 2c5b2c8..d397790 100644
|
||||
--- a/include/ncconfigure.h
|
||||
+++ b/include/ncconfigure.h
|
||||
@@ -25,20 +25,20 @@ missing functions should be
|
||||
defined and missing types defined.
|
||||
*/
|
||||
|
||||
-#ifndef HAVE_STRDUP
|
||||
+#ifndef strdup
|
||||
extern char* strdup(const char*);
|
||||
#endif
|
||||
|
||||
/* handle null arguments */
|
||||
#ifndef nulldup
|
||||
-#ifdef HAVE_STRDUP
|
||||
+#ifdef strdup
|
||||
#define nulldup(s) ((s)==NULL?NULL:strdup(s))
|
||||
#else
|
||||
char *nulldup(const char* s);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
-#ifdef _MSC_VER
|
||||
+#ifdef _WIN32
|
||||
#ifndef HAVE_SSIZE_T
|
||||
#include <basetsd.h>
|
||||
typedef SSIZE_T ssize_t;
|
@ -1,27 +0,0 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index a3874c13..36f15beb 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -599,11 +599,10 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
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)
|
||||
+ SET(HDF5_USE_STATIC_LIBRARIES ON)
|
||||
ENDIF(NC_FIND_SHARED_LIBS)
|
||||
|
||||
#####
|
||||
@@ -614,8 +615,7 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
# had worked.
|
||||
#####
|
||||
IF(MSVC)
|
||||
- SET(SEARCH_PACKAGE_NAME ${HDF5_PACKAGE_NAME})
|
||||
- FIND_PACKAGE(HDF5 NAMES ${SEARCH_PACKAGE_NAME} COMPONENTS C HL NO_MODULES REQUIRED ${NC_HDF5_LINK_TYPE})
|
||||
+ FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED)
|
||||
ELSE(MSVC)
|
||||
FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED)
|
||||
ENDIF(MSVC)
|
@ -1,13 +0,0 @@
|
||||
diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt
|
||||
index ea9b0294..3c7f427d 100644
|
||||
--- a/liblib/CMakeLists.txt
|
||||
+++ b/liblib/CMakeLists.txt
|
||||
@@ -83,7 +83,7 @@ IF(USE_HDF5 OR USE_NETCDF4)
|
||||
# HDF5_HL_LIBRARY.
|
||||
SET(TLL_LIBS ${HDF5_HL_LIBRARIES} ${HDF5_C_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
|
||||
ELSE() # Windows CMake defines HDF5_LIBRARIES.
|
||||
- SET(TLL_LIBS ${HDF5_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
|
||||
+ SET(TLL_LIBS ${HDF5_HL_LIBRARIES} ${HDF5_C_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
@ -1,14 +0,0 @@
|
||||
diff --git a/libhdf5/CMakeLists.txt b/libhdf5/CMakeLists.txt
|
||||
index f3c7bbc..34fc2ab 100644
|
||||
--- a/libhdf5/CMakeLists.txt
|
||||
+++ b/libhdf5/CMakeLists.txt
|
||||
@@ -20,3 +20,9 @@ add_library(netcdfhdf5 OBJECT ${libnchdf5_SOURCES})
|
||||
|
||||
# Remember to package this file for CMake builds.
|
||||
ADD_EXTRA_DIST(${libnchdf5_SOURCES} CMakeLists.txt)
|
||||
+
|
||||
+if(HDF5_BUILD_SHARED_LIBS)
|
||||
+ target_link_libraries(netcdfhdf5 PRIVATE hdf5::hdf5-shared hdf5::hdf5_hl-shared)
|
||||
+else()
|
||||
+ target_link_libraries(netcdfhdf5 PRIVATE hdf5::hdf5-static hdf5::hdf5_hl-static)
|
||||
+endif()
|
@ -1,24 +1,19 @@
|
||||
include(vcpkg_common_functions)
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO Unidata/netcdf-c
|
||||
REF v4.7.0
|
||||
SHA512 6602799780105c60ac8c873ed4055c1512dc8bebf98de01e1cce572d113ffb3bf3ca522475b93255c415340f672c55dc6785e0bdbcc39055314683da1d02141a
|
||||
REF b7cd387bee8c661141fabb490f4969587c008c55 # v4.7.3
|
||||
SHA512 a55391620fac61e4975fe62907ca21049911afce6190fc12d183d24133a32aae8cd223b97a3fe57fc82d8bdca1a7db451046e3be3c379051624d48b1f56c0332
|
||||
HEAD_REF master
|
||||
PATCHES
|
||||
no-install-deps.patch
|
||||
config-pkg-location.patch
|
||||
transitive-hdf5.patch
|
||||
hdf5.patch
|
||||
hdf5_2.patch
|
||||
fix-build-error-on-linux.patch
|
||||
hdf5_3.patch
|
||||
use_targets.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(VCPKG_CRT_LINKAGE STREQUAL "static")
|
||||
set(NC_USE_STATIC_CRT ON)
|
||||
@ -28,7 +23,7 @@ endif()
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
DISABLE_PARALLEL_CONFIGURE
|
||||
DISABLE_PARALLEL_CONFIGURE # netcdf-c configures in the source!
|
||||
PREFER_NINJA
|
||||
OPTIONS
|
||||
-DBUILD_UTILITIES=OFF
|
||||
|
@ -1,13 +0,0 @@
|
||||
diff --git a/netCDFConfig.cmake.in b/netCDFConfig.cmake.in
|
||||
index 6f4ccf8..14a3743 100644
|
||||
--- a/netCDFConfig.cmake.in
|
||||
+++ b/netCDFConfig.cmake.in
|
||||
@@ -11,6 +11,8 @@ set_and_check(netCDF_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
|
||||
|
||||
set(netCDF_LIBRARIES netcdf)
|
||||
|
||||
+find_package(HDF5 COMPONENTS C HL CONFIG REQUIRED)
|
||||
+
|
||||
# include target information
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/netCDFTargets.cmake")
|
||||
|
168
ports/netcdf-c/use_targets.patch
Normal file
168
ports/netcdf-c/use_targets.patch
Normal file
@ -0,0 +1,168 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 1ce05e0fe..7671d7b1e 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -431,7 +431,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()
|
||||
###
|
||||
@@ -599,15 +599,6 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
# 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.
|
||||
@@ -620,9 +620,9 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
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)
|
||||
-
|
||||
+
|
||||
##
|
||||
# Next, check the HDF5 version. This will inform which
|
||||
# HDF5 variables we need to munge.
|
||||
@@ -695,6 +695,19 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
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)
|
||||
|
||||
# There is a missing case in the above code so default it
|
||||
@@ -721,16 +733,11 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pset_all_coll_metadata_ops "" HDF5_HAS_COLL_METADATA_OPS)
|
||||
|
||||
#Check to see if H5Z_SZIP exists in HDF5_Libraries. If so, we must use szip.
|
||||
- CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Z_SZIP "" USE_SZIP)
|
||||
+ set(USE_SZIP ${HDF5_ENABLE_SZIP_SUPPORT})
|
||||
IF(USE_SZIP)
|
||||
- FIND_LIBRARY(SZIP NAMES szip sz)
|
||||
- IF(SZIP)
|
||||
+ #FIND_LIBRARY(SZIP NAMES szip sz)
|
||||
+ #IF(SZIP)
|
||||
SET(HAVE_H5Z_SZIP 1)
|
||||
- SET(SZIP_LIBRARY ${SZIP})
|
||||
- SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${SZIP})
|
||||
- ELSE()
|
||||
- MESSAGE(FATAL_ERROR "HDF5 Requires SZIP, but cannot find libszip or libsz.")
|
||||
- ENDIF()
|
||||
ENDIF()
|
||||
|
||||
CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5Pset_libver_bounds "" HAVE_H5PSET_LIBVER_BOUNDS)
|
||||
@@ -764,8 +776,7 @@ IF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
ENDIF(USE_HDF5 OR ENABLE_NETCDF_4)
|
||||
|
||||
# See if we have libcurl
|
||||
-FIND_PACKAGE(CURL)
|
||||
-ADD_DEFINITIONS(-DCURL_STATICLIB=1)
|
||||
+FIND_PACKAGE(CURL CONFIG)
|
||||
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIRS})
|
||||
|
||||
# Check to see if CURLOPT_USERNAME is defined.
|
||||
@@ -1890,7 +1902,6 @@ ENDIF()
|
||||
|
||||
STRING(REPLACE ";" " " LINKFLAGS "${LINKFLAGS}")
|
||||
|
||||
-LIST(REMOVE_DUPLICATES NC_LIBS)
|
||||
LIST(REMOVE_DUPLICATES LINKFLAGS)
|
||||
|
||||
SET(LIBS ${NC_LIBS})
|
||||
diff --git a/liblib/CMakeLists.txt b/liblib/CMakeLists.txt
|
||||
index ea9b02949..ec7851f37 100644
|
||||
--- a/liblib/CMakeLists.txt
|
||||
+++ b/liblib/CMakeLists.txt
|
||||
@@ -58,7 +58,7 @@ ENDIF()
|
||||
|
||||
SET(TLL_LIBS "")
|
||||
|
||||
-SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM} ${ZLIB_LIBRARY})
|
||||
+SET(TLL_LIBS ${TLL_LIBS} ${HAVE_LIBM} ZLIB::ZLIB)
|
||||
|
||||
# Add extra dependencies specified via NC_EXTRA_DEPS
|
||||
SET(TLL_LIBS ${TLL_LIBS} ${EXTRA_DEPS})
|
||||
@@ -68,27 +68,15 @@ IF(HAVE_LIBDL)
|
||||
ENDIF()
|
||||
|
||||
IF(USE_HDF5 OR USE_NETCDF4)
|
||||
- IF(NOT MSVC)
|
||||
- # Some version of cmake define HDF5_hdf5_LIBRARY instead of
|
||||
- # HDF5_LIBRARY. Same with HDF5_HL_LIBRARIES
|
||||
- IF(HDF5_hdf5_LIBRARY AND NOT HDF5_C_LIBRARIES)
|
||||
- SET(HDF5_C_LIBRARIES ${HDF5_hdf5_LIBRARY})
|
||||
- ENDIF()
|
||||
- IF(HDF5_hdf5_hl_LIBRARY AND NOT HDF5_HL_LIBRARIES)
|
||||
- SET(HDF5_HL_LIBRARIES ${HDF5_hdf5_hl_LIBRARY})
|
||||
- ENDIF()
|
||||
- # The order of the libraries is important here for static
|
||||
- # builds:
|
||||
- # Make sure that HDF5_C_LIBRARY appears *after*
|
||||
- # HDF5_HL_LIBRARY.
|
||||
- SET(TLL_LIBS ${HDF5_HL_LIBRARIES} ${HDF5_C_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
|
||||
- ELSE() # Windows CMake defines HDF5_LIBRARIES.
|
||||
- SET(TLL_LIBS ${HDF5_LIBRARIES} ${TLL_LIBS} ${SZIP_LIBRARY})
|
||||
- ENDIF()
|
||||
+ 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()
|
||||
ENDIF()
|
||||
|
||||
IF(USE_DAP)
|
||||
- SET(TLL_LIBS ${TLL_LIBS} ${CURL_LIBRARY})
|
||||
+ SET(TLL_LIBS ${TLL_LIBS} CURL::libcurl)
|
||||
ENDIF()
|
||||
|
||||
IF(USE_HDF4)
|
||||
@@ -100,7 +88,6 @@ IF(ENABLE_PNETCDF AND PNETCDF)
|
||||
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 c89cf3e67..b81f35a1b 100644
|
||||
--- a/netCDFConfig.cmake.in
|
||||
+++ b/netCDFConfig.cmake.in
|
||||
@@ -12,6 +12,10 @@ set_and_check(netCDF_LIB_DIR "@PACKAGE_CMAKE_INSTALL_LIBDIR@")
|
||||
set(netCDF_LIBRARIES netcdf)
|
||||
|
||||
# include target information
|
||||
+include(CMakeFindDependencyMacro)
|
||||
+find_dependency(ZLIB)
|
||||
+find_dependency(HDF5 CONFIG)
|
||||
+find_dependency(CURL CONFIG)
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/netCDFTargets.cmake")
|
||||
|
||||
# Compiling Options
|
Loading…
Reference in New Issue
Block a user