aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Warren <s.warren@garvan.org.au>2019-03-06 06:09:22 +1100
committerPhil Christensen <philc@microsoft.com>2019-03-05 11:09:22 -0800
commita9f8430961f9d8bf2a9560767100bcc433004e24 (patch)
treecb9f11e607614da225986b3fd72070ccad42dcdf
parenta51c0f42975fcf754dd9a2a934027e1617c4c6b5 (diff)
downloadvcpkg-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.cmake6
-rw-r--r--ports/hdf5/vcpkg-cmake-wrapper.cmake29
-rw-r--r--scripts/buildsystems/vcpkg.cmake13
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)