Bläddra i källkod

libminc: add new package (#7820)

* libminc: add new package

* Update xmake.lua
choyy 1 månad sedan
förälder
incheckning
a6e62d08eb
2 ändrade filer med 101 tillägg och 0 borttagningar
  1. 69 0
      packages/l/libminc/patches/2.4.06/libminc.patch
  2. 32 0
      packages/l/libminc/xmake.lua

+ 69 - 0
packages/l/libminc/patches/2.4.06/libminc.patch

@@ -0,0 +1,69 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index caf681a8..2670ac8d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -69,7 +69,8 @@ IF(NOT LIBMINC_EXTERNALLY_CONFIGURED)
+   # external packages
+   FIND_PACKAGE(ZLIB REQUIRED)
+   SET(HDF5_NO_FIND_PACKAGE_CONFIG_FILE ON)
+-  FIND_PACKAGE(HDF5 REQUIRED COMPONENTS C )
++  FIND_PACKAGE(HDF5 REQUIRED NO_MODULE COMPONENTS C )
++  set(HDF5_INCLUDE_DIRS ${HDF5_INCLUDE_DIR})
+   
+   IF(LIBMINC_USE_NIFTI)
+   IF (LIBMINC_USE_SYSTEM_NIFTI)
+@@ -588,7 +589,7 @@ IF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT)
+      ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Use${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINC.cmake 
+      ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${LIBMINC_EXTERNAL_LIB_PREFIX}LIBMINCConfig.cmake
+     DESTINATION 
+-     ${LIBMINC_INSTALL_LIB_DIR}/cmake
++     ${LIBMINC_INSTALL_LIB_DIR}/cmake/LIBMINC
+     COMPONENT Development)
+ ENDIF(LIBMINC_INSTALL_LIB_DIR AND NOT LIBMINC_INSTALL_NO_DEVELOPMENT)
+ 
+diff --git a/LIBMINCConfig.cmake.in b/LIBMINCConfig.cmake.in
+index f8f7eb6d..7f02bced 100644
+--- a/LIBMINCConfig.cmake.in
++++ b/LIBMINCConfig.cmake.in
+@@ -1,7 +1,9 @@
+ # LIBMINC CMake configuration file
+ 
++include(CMakeFindDependencyMacro)
++find_dependency(hdf5 CONFIG)
+ 
+-get_filename_component(LIBMINC_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE)
++get_filename_component(LIBMINC_INSTALL_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
+ get_filename_component(LIBMINC_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH )
+ 
+ set(HAVE_MINC2    1)
+@@ -20,7 +22,7 @@ set(LIBMINC_NIFTI_SUPPORT @LIBMINC_NIFTI_SUPPORT@)
+ #set(ZLIB_LIBRARIES     "@ZLIB_LIBRARY@")
+ #set(NIFTI_LIBRARIES    "@NIFTI_LIBRARIES@")
+ 
+-set(LIBMINC_INCLUDE_DIRS "@LIBMINC_INCLUDE_DIRS_CONFIG@") # ${LIBMINC_INSTALL_PREFIX}/include
++set(LIBMINC_INCLUDE_DIRS "@LIBMINC_INCLUDE_DIRS_CONFIG@" ${HDF5_INCLUDE_DIR}) # ${LIBMINC_INSTALL_PREFIX}/include
+ set(LIBMINC_LIBRARY_DIRS "@LIBMINC_LIBRARY_DIRS_CONFIG@") # ${LIBMINC_INSTALL_PREFIX}/lib
+ set(LIBMINC_USE_FILE     "@LIBMINC_USE_FILE_CONFIG@") # ${LIBMINC_INSTALL_PREFIX}/lib/UseLIBMINC.cmake
+ 
+diff --git a/libcommon/ParseArgv.c b/libcommon/ParseArgv.c
+index 260f5745..e2f6f4a6 100644
+--- a/libcommon/ParseArgv.c
++++ b/libcommon/ParseArgv.c
+@@ -315,7 +315,7 @@ ParseArgv(argcPtr, argv, argTable, flags)
+          }
+          break;
+       case ARGV_FUNC: {
+-         int (*handlerProc)() =  (int (*)())(uintptr_t)infoPtr->src;
++         int (*handlerProc)(void *, const char *, char *) = (int (*)(void *, const char *, char *))(uintptr_t)infoPtr->src;
+ 		
+          if ((*handlerProc)(infoPtr->dst, infoPtr->key,
+                             argv[srcIndex])) {
+@@ -325,7 +325,7 @@ ParseArgv(argcPtr, argv, argTable, flags)
+          break;
+       }
+       case ARGV_GENFUNC: {
+-         int (*handlerProc)() = (int (*)())(uintptr_t)infoPtr->src;
++         int (*handlerProc)(void *, const char *, int, char **) = (int (*)(void *, const char *, int, char **))(uintptr_t)infoPtr->src;
+ 
+          argc = (*handlerProc)(infoPtr->dst, infoPtr->key,
+                                argc, argv+srcIndex);

+ 32 - 0
packages/l/libminc/xmake.lua

@@ -0,0 +1,32 @@
+package("libminc")
+    set_homepage("https://github.com/BIC-MNI/libminc")
+    set_description("libminc is the core library and API of the MINC toolkit")
+
+    set_urls("https://github.com/BIC-MNI/libminc/archive/refs/tags/release-$(version).tar.gz",
+             "https://github.com/BIC-MNI/libminc.git")
+    add_versions("2.4.06", "2d8b01e67322507000dbfa3e46fa38e12d5c72eb535b169a33a6c5c53202cf90")
+
+    add_patches("2.4.06", "patches/2.4.06/libminc.patch", "56205cec43d1e7d10664ff45df2fcdd50102f97b8c6ad60ca0d541957a05626f")
+
+    if is_plat("windows") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
+
+    add_deps("cmake", "hdf5", "zlib")
+    if is_plat("linux") then
+        add_extsources("apt::libminc-dev")
+    end
+
+    on_install("windows", "linux", "macosx", "bsd", function (package)
+        io.replace("CMakeLists.txt", "${HDF5_LIBRARY}", "hdf5::hdf5-" .. (package:dep("hdf5"):config("shared") and "shared" or "static"), {plain = true})
+        local configs = {
+            "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"),
+            "-DLIBMINC_BUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"),
+            "-DBUILD_TESTING=OFF",
+        }
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("miopen_volume", {includes = "minc2.h"}))
+    end)