From 202ada4fcf552cd845fa4fd84778281c01b30199 Mon Sep 17 00:00:00 2001 From: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> Date: Wed, 11 Nov 2020 01:37:13 +0800 Subject: [PATCH] [netcdf-cxx4] Export cmake targets (#14405) * [netcdf-cxx4] Update to latest commit and also export targets file * Revert the update to latest commit and make a patch to export cmake targets * Revert the changes in fix-dependecy-hdf5.patch --- ports/netcdf-cxx4/CONTROL | 2 +- ports/netcdf-cxx4/export-cmake-targets.patch | 49 ++++++++++++++++++++ ports/netcdf-cxx4/netCDFCxxConfig.cmake.in | 29 ++++++++++++ ports/netcdf-cxx4/portfile.cmake | 9 +++- 4 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 ports/netcdf-cxx4/export-cmake-targets.patch create mode 100644 ports/netcdf-cxx4/netCDFCxxConfig.cmake.in diff --git a/ports/netcdf-cxx4/CONTROL b/ports/netcdf-cxx4/CONTROL index b628a3825b..cf69865612 100644 --- a/ports/netcdf-cxx4/CONTROL +++ b/ports/netcdf-cxx4/CONTROL @@ -1,6 +1,6 @@ Source: netcdf-cxx4 Version: 4.3.1 -Port-Version: 1 +Port-Version: 2 Build-Depends: hdf5, netcdf-c Homepage: https://github.com/Unidata/netcdf-cxx4 Description: a set of machine-independent data formats that support the creation, access, and sharing of array-oriented scientific data. diff --git a/ports/netcdf-cxx4/export-cmake-targets.patch b/ports/netcdf-cxx4/export-cmake-targets.patch new file mode 100644 index 0000000000..b46ef3947f --- /dev/null +++ b/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 $ $) + 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/ports/netcdf-cxx4/netCDFCxxConfig.cmake.in b/ports/netcdf-cxx4/netCDFCxxConfig.cmake.in new file mode 100644 index 0000000000..430d3d9111 --- /dev/null +++ b/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/ports/netcdf-cxx4/portfile.cmake b/ports/netcdf-cxx4/portfile.cmake index 3efd8e3aa0..f014128045 100644 --- a/ports/netcdf-cxx4/portfile.cmake +++ b/ports/netcdf-cxx4/portfile.cmake @@ -8,12 +8,17 @@ vcpkg_from_github( REF f8882188267488ef801691e69ad072e3eb217ad8 # v4.3.1 SHA512 9816acf221d196e21af19d4c3d85484934916e7c018e9b2c96aab9f5660b2f08c5db9cd8254ba3fa5f0aa5f5c5ad7bd3a3aaba559e5e640c5349d44e07a20ed3 HEAD_REF master - PATCHES fix-dependecy-hdf5.patch + 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_configure_cmake( SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA # Disable this option if project cannot be built with Ninja + PREFER_NINJA OPTIONS -DNCXX_ENABLE_TESTS=OFF -DCMAKE_INSTALL_CMAKECONFIGDIR=share/netCDFCxx