diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/netcdf-cxx4 | |
Diffstat (limited to 'vcpkg/ports/netcdf-cxx4')
| -rw-r--r-- | vcpkg/ports/netcdf-cxx4/export-cmake-targets.patch | 49 | ||||
| -rw-r--r-- | vcpkg/ports/netcdf-cxx4/fix-dependecy-hdf5.patch | 41 | ||||
| -rw-r--r-- | vcpkg/ports/netcdf-cxx4/netCDFCxxConfig.cmake.in | 29 | ||||
| -rw-r--r-- | vcpkg/ports/netcdf-cxx4/portfile.cmake | 41 | ||||
| -rw-r--r-- | vcpkg/ports/netcdf-cxx4/vcpkg.json | 19 |
5 files changed, 179 insertions, 0 deletions
diff --git a/vcpkg/ports/netcdf-cxx4/export-cmake-targets.patch b/vcpkg/ports/netcdf-cxx4/export-cmake-targets.patch new file mode 100644 index 0000000..b46ef39 --- /dev/null +++ b/vcpkg/ports/netcdf-cxx4/export-cmake-targets.patch @@ -0,0 +1,49 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f06fcc0..a19ab28 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -622,9 +622,23 @@ write_basic_package_version_file( + VERSION ${NCXX_VERSION} + COMPATIBILITY SameMajorVersion + ) ++ ++install( ++ EXPORT netcdf-cxx4Targets ++ FILE netcdf-cxx4Targets.cmake ++ NAMESPACE netCDF:: ++ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/netCDFCxx ++ ) + ++configure_package_config_file( ++ "${CMAKE_CURRENT_SOURCE_DIR}/netCDFCxxConfig.cmake.in" ++ "${CMAKE_CURRENT_BINARY_DIR}/netCDFCxxConfig.cmake" ++ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/netCDFCxx" ++ ) ++ + install( + FILES ++ "${CMAKE_CURRENT_BINARY_DIR}/netCDFCxxConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/netCDF/netCDFCxxConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/netCDFCxx + COMPONENT headers +diff --git a/cxx4/CMakeLists.txt b/cxx4/CMakeLists.txt +index b433786..5ef4bed 100644 +--- a/cxx4/CMakeLists.txt ++++ b/cxx4/CMakeLists.txt +@@ -32,7 +32,7 @@ SET(ALL_TLL_LIBS ${ALL_TLL_LIBS} ${HDF5_C_LIBRARY_hdf5}) + SET(ALL_TLL_LIBS ${ALL_TLL_LIBS} ${EXTRA_DEPS} PARENT_SCOPE) + + ADD_LIBRARY(netcdf-cxx4 ${CXX_SOURCES}) +-TARGET_INCLUDE_DIRECTORIES(netcdf-cxx4 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") ++TARGET_INCLUDE_DIRECTORIES(netcdf-cxx4 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> $<INSTALL_INTERFACE:include>) + TARGET_LINK_LIBRARIES(netcdf-cxx4 ${ALL_TLL_LIBS}) + SET_TARGET_PROPERTIES(netcdf-cxx4 PROPERTIES + VERSION ${NCXX_LIB_VERSION} +@@ -49,6 +49,7 @@ INSTALL( + ) + INSTALL( + TARGETS netcdf-cxx4 ++ EXPORT netcdf-cxx4Targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} diff --git a/vcpkg/ports/netcdf-cxx4/fix-dependecy-hdf5.patch b/vcpkg/ports/netcdf-cxx4/fix-dependecy-hdf5.patch new file mode 100644 index 0000000..73b9a0d --- /dev/null +++ b/vcpkg/ports/netcdf-cxx4/fix-dependecy-hdf5.patch @@ -0,0 +1,41 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 60c699d..f06fcc0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -395,14 +395,20 @@ ENDIF(NC_HAS_DEF_VAR_FILTER) + ### + # Find HDF5 + ### +-IF(MSVC) ++IF(0) + SET(SEARCH_PACKAGE_NAME ${HDF5_PACKAGE_NAME}) + FIND_PACKAGE(HDF5 NAMES ${SEARCH_PACKAGE_NAME} COMPONENTS C HL NO_MODULES REQUIRED ${NC_HDF5_LINK_TYPE}) + ELSE(MSVC) +- FIND_PACKAGE(HDF5 COMPONENTS C HL REQUIRED) ++ FIND_PACKAGE(hdf5 CONFIG REQUIRED) ++ set(HDF5_FOUND ${hdf5_FOUND}) ++ if (NOT HDF5_USE_STATIC_LIBRARIES) ++ set(HDF5_C_LIBRARY_hdf5 hdf5::hdf5-shared hdf5::hdf5_hl-shared) ++ else() ++ set(HDF5_C_LIBRARY_hdf5 hdf5::hdf5-static hdf5::hdf5_hl-static) ++ endif() + ENDIF(MSVC) + +-CHECK_LIBRARY_EXISTS(${HDF5_C_LIBRARY_hdf5} H5free_memory "" HAVE_H5FREE_MEMORY) ++set(HAVE_H5FREE_MEMORY ON) + IF(NOT HAVE_H5FREE_MEMORY) + MESSAGE(STATUS "Plugin support requires libhdf5 with H5Free support. Your libhdf5 install does not provide H5Free. Please install a newer version of libhdf5 if you require plugin compression support.") + SET(NC_HAS_DEF_VAR_FILTER "") +diff --git a/plugins/CMakeLists.txt b/plugins/CMakeLists.txt +index 30a4a96..1809d29 100644 +--- a/plugins/CMakeLists.txt ++++ b/plugins/CMakeLists.txt +@@ -23,7 +23,7 @@ SET_TARGET_PROPERTIES(test_bzip2 PROPERTIES OUTPUT_NAME "bzip2") + SET_TARGET_PROPERTIES(test_bzip2 PROPERTIES LIBRARY_OUTPUT_NAME "h5bzip2") + SET_TARGET_PROPERTIES(test_bzip2 PROPERTIES ARCHIVE_OUTPUT_NAME "h5bzip2") + SET_TARGET_PROPERTIES(test_bzip2 PROPERTIES RUNTIME_OUTPUT_NAME "h5bzip2") +-TARGET_LINK_LIBRARIES(test_bzip2 ${ALL_TLL_LIBS}) ++TARGET_LINK_LIBRARIES(test_bzip2 ${ALL_TLL_LIBS} ${HDF5_C_LIBRARY_hdf5}) + + ADD_LIBRARY(misc MODULE ${libmisc_SOURCES}) + SET_TARGET_PROPERTIES(misc PROPERTIES LIBRARY_OUTPUT_NAME "misc") diff --git a/vcpkg/ports/netcdf-cxx4/netCDFCxxConfig.cmake.in b/vcpkg/ports/netcdf-cxx4/netCDFCxxConfig.cmake.in new file mode 100644 index 0000000..430d3d9 --- /dev/null +++ b/vcpkg/ports/netcdf-cxx4/netCDFCxxConfig.cmake.in @@ -0,0 +1,29 @@ +# NetCDF CXX Configuration Summary
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+
+if (@netCDF_FOUND@)
+ if(EXISTS "@netCDF_ROOT@")
+ set(netCDF_ROOT "@netCDF_ROOT@")
+ endif()
+ if(EXISTS "@netCDF_DIR@")
+ set(netCDF_DIR "@netCDF_DIR@")
+ endif()
+ find_dependency(netCDF)
+ set(NETCDF_C_LIBRARY ${netCDF_LIBRARIES})
+ set(NETCDF_C_INCLUDE_DIR ${netCDF_INCLUDE_DIR})
+else()
+ set(NETCDF_C_LIBRARY "@NETCDF_C_LIBRARY@")
+ set(NETCDF_C_INCLUDE_DIR "@NETCDF_C_INCLUDE_DIR@")
+endif()
+
+if (NOT TARGET netCDF::netcdf)
+ add_library(netCDF::netcdf UNKNOWN IMPORTED)
+ set_target_properties(netCDF::netcdf PROPERTIES
+ IMPORTED_LOCATION "${NETCDF_C_LIBRARY}"
+ INTERFACE_INCLUDE_DIRECTORIES "${NETCDF_C_INCLUDE_DIR}"
+ )
+endif()
+
+include("${CMAKE_CURRENT_LIST_DIR}/netcdf-cxx4Targets.cmake")
\ No newline at end of file diff --git a/vcpkg/ports/netcdf-cxx4/portfile.cmake b/vcpkg/ports/netcdf-cxx4/portfile.cmake new file mode 100644 index 0000000..aa420c5 --- /dev/null +++ b/vcpkg/ports/netcdf-cxx4/portfile.cmake @@ -0,0 +1,41 @@ +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" HDF5_USE_STATIC_LIBRARIES) + +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO Unidata/netcdf-cxx4 + REF f8882188267488ef801691e69ad072e3eb217ad8 # v4.3.1 + SHA512 9816acf221d196e21af19d4c3d85484934916e7c018e9b2c96aab9f5660b2f08c5db9cd8254ba3fa5f0aa5f5c5ad7bd3a3aaba559e5e640c5349d44e07a20ed3 + HEAD_REF master + PATCHES + fix-dependecy-hdf5.patch + export-cmake-targets.patch +) + +#Provided by upstream https://github.com/Unidata/netcdf-cxx4/blob/master/netCDFCxxConfig.cmake.in +file(COPY "${CMAKE_CURRENT_LIST_DIR}/netCDFCxxConfig.cmake.in" DESTINATION "${SOURCE_PATH}") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DNCXX_ENABLE_TESTS=OFF + -DCMAKE_INSTALL_CMAKECONFIGDIR=share/netCDFCxx + -DHDF5_USE_STATIC_LIBRARIES=${HDF5_USE_STATIC_LIBRARIES} + # OPTIONS_RELEASE -DOPTIMIZE=1 + # OPTIONS_DEBUG -DDEBUGGABLE=1 +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/netCDFCxx PACKAGE_NAME netCDFCxx) +vcpkg_copy_pdbs() + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") + +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") +endif() + +# Handle copyright +file(INSTALL "${SOURCE_PATH}/COPYRIGHT" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/vcpkg/ports/netcdf-cxx4/vcpkg.json b/vcpkg/ports/netcdf-cxx4/vcpkg.json new file mode 100644 index 0000000..ff189f7 --- /dev/null +++ b/vcpkg/ports/netcdf-cxx4/vcpkg.json @@ -0,0 +1,19 @@ +{ + "name": "netcdf-cxx4", + "version": "4.3.1", + "port-version": 5, + "description": "a set of machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data.", + "homepage": "https://github.com/Unidata/netcdf-cxx4", + "dependencies": [ + "hdf5", + "netcdf-c", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |