aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/netcdf-cxx4
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/netcdf-cxx4')
-rw-r--r--vcpkg/ports/netcdf-cxx4/export-cmake-targets.patch49
-rw-r--r--vcpkg/ports/netcdf-cxx4/fix-dependecy-hdf5.patch41
-rw-r--r--vcpkg/ports/netcdf-cxx4/netCDFCxxConfig.cmake.in29
-rw-r--r--vcpkg/ports/netcdf-cxx4/portfile.cmake41
-rw-r--r--vcpkg/ports/netcdf-cxx4/vcpkg.json19
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
+ }
+ ]
+}