From 98405903dfe93e9fc75b1f9675f9b839ec01e645 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 17 Nov 2025 21:02:03 +0100 Subject: [PATCH] [matio] Update, cleanup, export CMake config (#48308) --- ports/matio/cmake-config.diff | 40 +++++++++++++++++++ ports/matio/fix-dependencies.patch | 28 ------------- ports/matio/portfile.cmake | 25 +++++++----- ports/matio/usage | 5 --- ports/matio/vcpkg.json | 9 +++-- scripts/ci.feature.baseline.txt | 4 +- .../test_ports/vcpkg-ci-matio/portfile.cmake | 25 ++++++++++++ scripts/test_ports/vcpkg-ci-matio/vcpkg.diff | 18 +++++++++ scripts/test_ports/vcpkg-ci-matio/vcpkg.json | 18 +++++++++ versions/baseline.json | 2 +- versions/m-/matio.json | 5 +++ 11 files changed, 129 insertions(+), 50 deletions(-) create mode 100644 ports/matio/cmake-config.diff delete mode 100644 ports/matio/fix-dependencies.patch delete mode 100644 ports/matio/usage create mode 100644 scripts/test_ports/vcpkg-ci-matio/portfile.cmake create mode 100644 scripts/test_ports/vcpkg-ci-matio/vcpkg.diff create mode 100644 scripts/test_ports/vcpkg-ci-matio/vcpkg.json diff --git a/ports/matio/cmake-config.diff b/ports/matio/cmake-config.diff new file mode 100644 index 0000000000..1970154105 --- /dev/null +++ b/ports/matio/cmake-config.diff @@ -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 $ ++ $ ++ PUBLIC $ + ) + 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 ++) diff --git a/ports/matio/fix-dependencies.patch b/ports/matio/fix-dependencies.patch deleted file mode 100644 index 03304d0832..0000000000 --- a/ports/matio/fix-dependencies.patch +++ /dev/null @@ -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 diff --git a/ports/matio/portfile.cmake b/ports/matio/portfile.cmake index a610348133..ec21992c8e 100644 --- a/ports/matio/portfile.cmake +++ b/ports/matio/portfile.cmake @@ -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") diff --git a/ports/matio/usage b/ports/matio/usage deleted file mode 100644 index 4a697912df..0000000000 --- a/ports/matio/usage +++ /dev/null @@ -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) diff --git a/ports/matio/vcpkg.json b/ports/matio/vcpkg.json index c0f5910b00..a55d35072b 100644 --- a/ports/matio/vcpkg.json +++ b/ports/matio/vcpkg.json @@ -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": [ diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index 11b71a2748..3778a9428e 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -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 diff --git a/scripts/test_ports/vcpkg-ci-matio/portfile.cmake b/scripts/test_ports/vcpkg-ci-matio/portfile.cmake new file mode 100644 index 0000000000..695d9fdc90 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-matio/portfile.cmake @@ -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() diff --git a/scripts/test_ports/vcpkg-ci-matio/vcpkg.diff b/scripts/test_ports/vcpkg-ci-matio/vcpkg.diff new file mode 100644 index 0000000000..1b3bf8187c --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-matio/vcpkg.diff @@ -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) diff --git a/scripts/test_ports/vcpkg-ci-matio/vcpkg.json b/scripts/test_ports/vcpkg-ci-matio/vcpkg.json new file mode 100644 index 0000000000..09e93b627c --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-matio/vcpkg.json @@ -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 + } + ] +} diff --git a/versions/baseline.json b/versions/baseline.json index 22ed67180c..dd61dc6d3a 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -6249,7 +6249,7 @@ "port-version": 0 }, "matio": { - "baseline": "1.5.28", + "baseline": "1.5.29", "port-version": 0 }, "matplotlib-cpp": { diff --git a/versions/m-/matio.json b/versions/m-/matio.json index 76d7a23adc..052827dca0 100644 --- a/versions/m-/matio.json +++ b/versions/m-/matio.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "94836a0a5609ab334bcdb6a158c83e9ec621e6fc", + "version": "1.5.29", + "port-version": 0 + }, { "git-tree": "5c71cc6dfae2b864ddd497890b6723145a250cbf", "version": "1.5.28",