[matio] Update, cleanup, export CMake config (#48308)

This commit is contained in:
Kai Pastor
2025-11-17 21:02:03 +01:00
committed by GitHub
parent 6bc2e5411b
commit 98405903df
11 changed files with 129 additions and 50 deletions

View File

@@ -0,0 +1,40 @@
diff --git a/cmake/src.cmake b/cmake/src.cmake
index 8f60bcf..0dc5c53 100644
--- a/cmake/src.cmake
+++ b/cmake/src.cmake
@@ -60,8 +60,9 @@ endif()
add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
target_include_directories(${PROJECT_NAME}
- INTERFACE ${PROJECT_SOURCE_DIR}/src
- PUBLIC ${PROJECT_BINARY_DIR}/src
+ INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+ PUBLIC $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/src>
)
if(STDINT_MSVC)
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/visual_studio)
@@ -117,3 +118,23 @@ install(TARGETS ${PROJECT_NAME} EXPORT lib${PROJECT_NAME}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)
+install(EXPORT lib${PROJECT_NAME}
+ FILE matio-targets.cmake
+ NAMESPACE ${PROJECT_NAME}::
+ DESTINATION share/matio
+)
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/matio-config.cmake" "
+include(CMakeFindDependencyMacro)
+if(\"${MATIO_WITH_HDF5}\" AND NOT TARGET MATIO::HDF5)
+ find_dependency(HDF5)
+ add_library(MATIO::HDF5 ALIAS HDF5::HDF5)
+endif()
+if(\"${MATIO_WITH_ZLIB}\" AND NOT TARGET MATIO::ZLIB)
+ find_dependency(ZLIB)
+ add_library(MATIO::ZLIB ALIAS ZLIB::ZLIB)
+endif()
+include(\"\${CMAKE_CURRENT_LIST_DIR}/matio-targets.cmake\")
+")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/matio-config.cmake"
+ DESTINATION share/matio
+)

View File

@@ -1,28 +0,0 @@
diff --git a/cmake/thirdParties.cmake b/cmake/thirdParties.cmake
index 41d8529..392d455 100644
--- a/cmake/thirdParties.cmake
+++ b/cmake/thirdParties.cmake
@@ -19,7 +19,7 @@ if(MATIO_WITH_HDF5)
endif()
set(HDF5_FOUND TRUE)
else()
- find_package(HDF5)
+ find_package(HDF5 CONFIG REQUIRED)
if(HDF5_FOUND)
set(HDF_MIN_VER 1.8)
if(HDF5_VERSION VERSION_LESS ${HDF_MIN_VER})
@@ -44,9 +44,12 @@ if(HDF5_FOUND)
elseif(TARGET hdf5)
# target from hdf5 1.8 config
target_link_libraries(MATIO::HDF5 INTERFACE hdf5)
- elseif(TARGET HDF5::HDF5)
+ elseif(TARGET hdf5::hdf5-shared)
# target defined in CMake FindHDF5 (since 3.19)
- target_link_libraries(MATIO::HDF5 INTERFACE HDF5::HDF5)
+ target_link_libraries(MATIO::HDF5 INTERFACE hdf5::hdf5-shared)
+ elseif(TARGET hdf5::hdf5-static)
+ # target defined in CMake FindHDF5 (since 3.19)
+ target_link_libraries(MATIO::HDF5 INTERFACE hdf5-static)
else()
# results from CMake FindHDF5
set_target_properties(MATIO::HDF5 PROPERTIES

View File

@@ -2,30 +2,39 @@ vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO tbeu/matio
REF "v${VERSION}"
SHA512 358318a249e22f5228516309d267593b8da9005de015dc0f59645fbfd7a5001e10be9144f32437acc2f6921d952e03adbaf8b9ca5b6620e191346bb569c04780
SHA512 170a97fa639f16f1290c1fa7b15f4b10296db216a35d901ebd75141c462db9cf4243b4fffa6aa823eed0a33aa8c5a927f562487a1558867c53f11f343d673f10
HEAD_REF master
PATCHES fix-dependencies.patch
PATCHES
cmake-config.diff
)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_SHARED)
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
extended-sparse MATIO_EXTENDED_SPARSE
mat73 MATIO_WITH_HDF5
mat73 MATIO_MAT73
mat73 VCPKG_LOCK_FIND_PACKAGE_HDF5
zlib MATIO_WITH_ZLIB
extended-sparse MATIO_EXTENDED_SPARSE
pic MATIO_PIC
zlib VCPKG_LOCK_FIND_PACKAGE_ZLIB
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS ${FEATURE_OPTIONS}
OPTIONS
${FEATURE_OPTIONS}
-DMATIO_BUILD_TESTING=OFF
-DMATIO_PIC=OFF # Flags provided by the toolchain
-DMATIO_SHARED=${BUILD_SHARED}
-DMATIO_USE_CONAN=OFF
MAYBE_UNUSED_VARIABLES
VCPKG_LOCK_FIND_PACKAGE_HDF5
VCPKG_LOCK_FIND_PACKAGE_ZLIB
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup()
set(prefix "${CURRENT_INSTALLED_DIR}")
set(exec_prefix [[${prefix}]])
@@ -37,12 +46,10 @@ if(NOT VCPKG_BUILD_TYPE)
set(includedir [[${prefix}/../include]])
file(INSTALL "${SOURCE_PATH}/matio.pc" DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig")
endif()
vcpkg_copy_pdbs()
vcpkg_fixup_pkgconfig()
vcpkg_copy_tools(TOOL_NAMES matdump AUTO_CLEAN)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(INSTALL "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")

View File

@@ -1,5 +0,0 @@
matio can be imported via CMake FindPkgConfig module:
find_package(PkgConfig REQUIRED)
pkg_check_modules(matio REQUIRED IMPORTED_TARGET matio)
target_link_libraries(main PRIVATE PkgConfig::matio)

View File

@@ -1,6 +1,6 @@
{
"name": "matio",
"version": "1.5.28",
"version": "1.5.29",
"description": "MATLAB MAT File I/O Library",
"homepage": "https://github.com/tbeu/matio",
"license": "BSD-2-Clause",
@@ -8,6 +8,10 @@
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
],
"default-features": [
@@ -34,9 +38,6 @@
}
]
},
"pic": {
"description": "Enable position-independent code (PIC), i.e., compilation with the -fPIC flag"
},
"zlib": {
"description": "Check for zlib library",
"dependencies": [

View File

@@ -1104,9 +1104,7 @@ mapnik:arm64-uwp = cascade
mapnik:x64-uwp = cascade
marble:x64-uwp = cascade
mathgl[hdf5,qt5]:arm64-windows = cascade
matio[hdf5,mat73]:arm64-uwp = cascade
matio[hdf5,mat73]:arm64-windows = cascade
matio[hdf5,mat73]:x64-uwp = cascade
matio[hdf5,mat73](uwp) = cascade
mdl-sdk:x64-uwp = cascade
mesa[default-features,gles1,gles2,offscreen,opengl]:x64-uwp = cascade
mesa[llvm]:x64-uwp = cascade

View File

@@ -0,0 +1,25 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO tbeu/matio-eigen-example
REF 5bbc27b18d544dcbdd7bfb821e4ef843301d4a95
SHA512 c74ef6ee94a1c2723bef4868a36894b6431acd5806386284a4be3c5a43c573edcb2d477bc23031f56f5110e231b1ff2d5aa227e79845f1b7a7b50909a905c303
HEAD_REF master
PATCHES
vcpkg.diff
)
vcpkg_download_distfile(EIGEN_MATIO_HEADER
URLS "https://github.com/tbeu/eigen-matio/raw/b29e109083b9836471565f8d06f44a76a11d0def/MATio"
FILENAME "tbeu/matio-eigen-MATio-b29e109"
SHA512 06c7fe74a8e91d08dba6ff804ee0c925130d9280c916cf8d4c739f4c7dbf421cb00225783fa22e1e02bac03c49ed024dcc35fef0d8edeec7a724ce3406f3fbf1
)
file(COPY_FILE "${EIGEN_MATIO_HEADER}" "${SOURCE_PATH}/include/MATio")
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
"-DEIGEN_MATIO_DIR=${SOURCE_PATH}/include"
)
vcpkg_cmake_build()

View File

@@ -0,0 +1,18 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9085a40..e3a885e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,7 +10,7 @@ endif()
set(LIBS_DIR ${CMAKE_CURRENT_BINARY_DIR}/libs)
set(EIGEN_MATIO_URL https://raw.githubusercontent.com/tbeu/eigen-matio/master/MATio)
-set(EIGEN_MATIO_DIR ${LIBS_DIR}/include)
+set(EIGEN_MATIO_DIR "${LIBS_DIR}/include" CACHE FILEPATH "Directory of the MATio C++ header")
set(EIGEN_MATIO_DEST ${EIGEN_MATIO_DIR}/MATio)
if(NOT EXISTS EIGEN_MATIO_DEST)
file(DOWNLOAD ${EIGEN_MATIO_URL} ${EIGEN_MATIO_DEST})
@@ -27,4 +27,3 @@ target_compile_features(${EXAMPLE_LIB_NAME} PUBLIC cxx_std_17)
set_target_properties(${EXAMPLE_LIB_NAME} PROPERTIES CXX_EXTENSIONS OFF)
enable_testing()
-add_subdirectory(test)

View File

@@ -0,0 +1,18 @@
{
"name": "vcpkg-ci-matio",
"version-string": "ci",
"description": "Port to validate matio",
"homepage": "https://github.com/microsoft/vcpkg",
"license": "MIT",
"dependencies": [
"eigen3",
{
"name": "matio",
"default-features": false
},
{
"name": "vcpkg-cmake",
"host": true
}
]
}

View File

@@ -6249,7 +6249,7 @@
"port-version": 0
},
"matio": {
"baseline": "1.5.28",
"baseline": "1.5.29",
"port-version": 0
},
"matplotlib-cpp": {

View File

@@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "94836a0a5609ab334bcdb6a158c83e9ec621e6fc",
"version": "1.5.29",
"port-version": 0
},
{
"git-tree": "5c71cc6dfae2b864ddd497890b6723145a250cbf",
"version": "1.5.28",