diff options
| author | Sean Warren <s.warren@garvan.org.au> | 2019-03-06 06:09:22 +1100 |
|---|---|---|
| committer | Phil Christensen <philc@microsoft.com> | 2019-03-05 11:09:22 -0800 |
| commit | a9f8430961f9d8bf2a9560767100bcc433004e24 (patch) | |
| tree | cb9f11e607614da225986b3fd72070ccad42dcdf | |
| parent | a51c0f42975fcf754dd9a2a934027e1617c4c6b5 (diff) | |
| download | vcpkg-a9f8430961f9d8bf2a9560767100bcc433004e24.tar.gz vcpkg-a9f8430961f9d8bf2a9560767100bcc433004e24.zip | |
[hdf5] Use cmake wrapper to ensure consuming libraries link to szip (#5467)
* [hdf5] Use cmake wrapper to ensure consuming libraries link to szip in static build
* [hdf5] Move hdf5 cmake code from vcpkg.cmake to vcpkg-cmake-wrapper
* [hdf5] Do not force search in config mode
* [hdf5] balance needs of vtk and kealib
| -rw-r--r-- | ports/hdf5/portfile.cmake | 6 | ||||
| -rw-r--r-- | ports/hdf5/vcpkg-cmake-wrapper.cmake | 29 | ||||
| -rw-r--r-- | scripts/buildsystems/vcpkg.cmake | 13 |
3 files changed, 35 insertions, 13 deletions
diff --git a/ports/hdf5/portfile.cmake b/ports/hdf5/portfile.cmake index 1da61178b..61235fab1 100644 --- a/ports/hdf5/portfile.cmake +++ b/ports/hdf5/portfile.cmake @@ -57,5 +57,11 @@ file(RENAME ${CURRENT_PACKAGES_DIR}/share/hdf5/data/COPYING ${CURRENT_PACKAGES_D vcpkg_fixup_cmake_targets(CONFIG_PATH share/hdf5) +configure_file( + ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake + ${CURRENT_PACKAGES_DIR}/share/hdf5 + @ONLY +) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) diff --git a/ports/hdf5/vcpkg-cmake-wrapper.cmake b/ports/hdf5/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..879d2516d --- /dev/null +++ b/ports/hdf5/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,29 @@ +if (NOT PROJECT_NAME STREQUAL "VTK")
+ _find_package(${ARGS} CONFIG)
+ # Fill in missing static/shared targets
+ foreach(HDF5TARGET hdf5 hdf5_hl hdf5_cpp hdf5_hl_cpp)
+ if(TARGET hdf5::${HDF5TARGET}-static AND NOT TARGET hdf5::${HDF5TARGET}-shared)
+ _add_library(hdf5::${HDF5TARGET}-shared INTERFACE IMPORTED)
+ set_target_properties(hdf5::${HDF5TARGET}-shared PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-static")
+ elseif(TARGET hdf5::${HDF5TARGET}-shared AND NOT TARGET hdf5::${HDF5TARGET}-static)
+ _add_library(hdf5::${HDF5TARGET}-static INTERFACE IMPORTED)
+ set_target_properties(hdf5::${HDF5TARGET}-static PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-shared")
+ endif()
+ endforeach()
+else ()
+ _find_package(${ARGS})
+endif()
+
+if("static" STREQUAL "static")
+find_package(SZIP CONFIG REQUIRED)
+foreach(HDF5TARGET hdf5 hdf5_hl hdf5_cpp hdf5_hl_cpp)
+ if(TARGET hdf5::${HDF5TARGET}-static)
+ if (TARGET szip-shared)
+ set_property(TARGET hdf5::${HDF5TARGET}-static APPEND PROPERTY INTERFACE_LINK_LIBRARIES szip-shared)
+ else ()
+ set_property(TARGET hdf5::${HDF5TARGET}-static APPEND PROPERTY INTERFACE_LINK_LIBRARIES szip-static)
+ endif ()
+ endif()
+endforeach()
+endif()
+
diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index a946ce889..733e5432f 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -214,19 +214,6 @@ macro(find_package name) if(TIFF_LIBRARIES) list(APPEND TIFF_LIBRARIES ${LIBLZMA_LIBRARIES}) endif() - elseif(("${name}" STREQUAL "HDF5" OR "${name}" STREQUAL "hdf5") AND NOT PROJECT_NAME STREQUAL "VTK" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/hdf5.h") - # This is a hack to make VTK work. TODO: find another way to suppress the built-in find module. - _find_package(${ARGV} CONFIG) - # Fill in missing static/shared targets - foreach(HDF5TARGET hdf5 hdf5_hl hdf5_cpp hdf5_hl_cpp) - if(TARGET hdf5::${HDF5TARGET}-static AND NOT TARGET hdf5::${HDF5TARGET}-shared) - _add_library(hdf5::${HDF5TARGET}-shared INTERFACE IMPORTED) - set_target_properties(hdf5::${HDF5TARGET}-shared PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-static") - elseif(TARGET hdf5::${HDF5TARGET}-shared AND NOT TARGET hdf5::${HDF5TARGET}-static) - _add_library(hdf5::${HDF5TARGET}-static INTERFACE IMPORTED) - set_target_properties(hdf5::${HDF5TARGET}-static PROPERTIES INTERFACE_LINK_LIBRARIES "hdf5::${HDF5TARGET}-shared") - endif() - endforeach() elseif("${name}" STREQUAL "GSL" AND EXISTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include/gsl") _find_package(${ARGV}) if(GSL_FOUND AND TARGET GSL::gsl) |
