瀏覽代碼

fann: update to 2024.04.16 (#7385)

* fann: update to 2024.04.16

* cl

* re

* re

* retry for osx

* retry windows

* use c++11 test not c test

* re

* simplify test

* fixup

* retry winx86

* re-check osx with openmp+libomp

* retry osx

* re for ndk

* libomp seems to be required dep
Saikari 2 月之前
父節點
當前提交
ee51ffcbc2
共有 2 個文件被更改,包括 141 次插入5 次删除
  1. 93 0
      packages/f/fann/patches/2024.04.16/fix-install.diff
  2. 48 5
      packages/f/fann/xmake.lua

+ 93 - 0
packages/f/fann/patches/2024.04.16/fix-install.diff

@@ -0,0 +1,93 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index ac3ff73..27f9a35 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -25,13 +25,20 @@ SET(floatfann_LIB_SRCS
+ 
+ ADD_LIBRARY(floatfann SHARED ${floatfann_LIB_SRCS})
+ ADD_LIBRARY(floatfann_static STATIC ${floatfann_LIB_SRCS})
++if (BUILD_SHARED_LIBS)
++SET_TARGET_PROPERTIES(floatfann_static PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(floatfann_target floatfann)
++else ()
++SET_TARGET_PROPERTIES(floatfann PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(floatfann_target floatfann_static)
++endif ()
+ 
+ SET_TARGET_PROPERTIES(floatfann PROPERTIES VERSION ${FANN_VERSION_STRING} SOVERSION ${FANN_VERSION_MAJOR})
+ SET_TARGET_PROPERTIES(floatfann_static PROPERTIES VERSION ${FANN_VERSION_STRING} SOVERSION ${FANN_VERSION_MAJOR})
+ if (UNIX)
+   SET_TARGET_PROPERTIES(floatfann_static PROPERTIES OUTPUT_NAME floatfann)
+ endif(UNIX)
+-INSTALL(TARGETS floatfann floatfann_static LIBRARY DESTINATION ${LIB_INSTALL_DIR}
++INSTALL(TARGETS ${floatfann_target} LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+         ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+         RUNTIME DESTINATION ${BIN_INSTALL_DIR} )
+ 
+@@ -44,13 +51,20 @@ SET(doublefann_LIB_SRCS
+ 
+ ADD_LIBRARY(doublefann SHARED ${doublefann_LIB_SRCS})
+ ADD_LIBRARY(doublefann_static STATIC ${doublefann_LIB_SRCS})
++if (BUILD_SHARED_LIBS)
++SET_TARGET_PROPERTIES(doublefann_static PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(doublefann_target doublefann)
++else ()
++SET_TARGET_PROPERTIES(doublefann PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(doublefann_target doublefann_static)
++endif ()
+ 
+ SET_TARGET_PROPERTIES(doublefann PROPERTIES VERSION ${FANN_VERSION_STRING} SOVERSION ${FANN_VERSION_MAJOR})
+ SET_TARGET_PROPERTIES(doublefann_static PROPERTIES VERSION ${FANN_VERSION_STRING} SOVERSION ${FANN_VERSION_MAJOR})
+ if (UNIX)
+   SET_TARGET_PROPERTIES(doublefann_static PROPERTIES OUTPUT_NAME doublefann)
+ endif(UNIX)
+-INSTALL(TARGETS doublefann doublefann_static LIBRARY DESTINATION ${LIB_INSTALL_DIR}
++INSTALL(TARGETS ${doublefann_target} LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+         ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+         RUNTIME DESTINATION ${BIN_INSTALL_DIR} )
+ 
+@@ -63,6 +77,13 @@ SET(fixedfann_LIB_SRCS
+ 
+ ADD_LIBRARY(fixedfann SHARED ${fixedfann_LIB_SRCS})
+ ADD_LIBRARY(fixedfann_static STATIC ${fixedfann_LIB_SRCS})
++if (BUILD_SHARED_LIBS)
++SET_TARGET_PROPERTIES(fixedfann_static PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(fixedfann_target fixedfann)
++else ()
++SET_TARGET_PROPERTIES(fixedfann PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(fixedfann_target fixedfann_static)
++endif ()
+ 
+ if(NOT MSVC)
+ TARGET_LINK_LIBRARIES(fixedfann m)
+@@ -74,7 +95,7 @@ SET_TARGET_PROPERTIES(fixedfann_static PROPERTIES VERSION ${FANN_VERSION_STRING}
+ if (UNIX)
+   SET_TARGET_PROPERTIES(fixedfann_static PROPERTIES OUTPUT_NAME fixedfann)
+ endif(UNIX)
+-INSTALL(TARGETS fixedfann fixedfann_static LIBRARY DESTINATION ${LIB_INSTALL_DIR}
++INSTALL(TARGETS ${fixedfann_target} LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+         ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+         RUNTIME DESTINATION ${BIN_INSTALL_DIR} )
+ 
+@@ -87,6 +108,13 @@ SET(fann_LIB_SRCS
+ 
+ ADD_LIBRARY(fann SHARED ${fann_LIB_SRCS})
+ ADD_LIBRARY(fann_static STATIC ${fann_LIB_SRCS})
++if (BUILD_SHARED_LIBS)
++SET_TARGET_PROPERTIES(fann_static PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(fann_target fann)
++else ()
++SET_TARGET_PROPERTIES(fann PROPERTIES EXCLUDE_FROM_ALL 1)
++SET(fann_target fann_static)
++endif ()
+ 
+ if(NOT MSVC)
+ TARGET_LINK_LIBRARIES(fann m)
+@@ -98,6 +126,6 @@ SET_TARGET_PROPERTIES(fann_static PROPERTIES VERSION ${FANN_VERSION_STRING} SOVE
+ if (UNIX)
+   SET_TARGET_PROPERTIES(fann_static PROPERTIES OUTPUT_NAME fann)
+ endif(UNIX)
+-INSTALL(TARGETS fann fann_static LIBRARY DESTINATION ${LIB_INSTALL_DIR}
++INSTALL(TARGETS ${fann_target} LIBRARY DESTINATION ${LIB_INSTALL_DIR}
+         ARCHIVE DESTINATION ${LIB_INSTALL_DIR}
+         RUNTIME DESTINATION ${BIN_INSTALL_DIR} )

+ 48 - 5
packages/f/fann/xmake.lua

@@ -4,19 +4,62 @@ package("fann")
     set_license("LGPL-2.1")
 
     add_urls("https://github.com/libfann/fann.git")
+
+    add_versions("2024.04.16", "1783cbf6239a597c4d29f694e227e22b8d4f4bf6")
     add_versions("2021.03.14", "a3cd24e528d6a865915a4fed6e8fac164ff8bfdc")
 
+    add_patches("2024.04.16", "patches/2024.04.16/fix-install.diff", "61da5085b942221f7b35419416bb506efd398ae83ba58b738a57de0bb5df1bdc")
+
     add_deps("cmake")
 
-    on_install("linux", "macosx", "windows", function (package)
-        local configs = {}
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+    if is_plat("linux", "bsd") then
+        add_syslinks("m")
+    end
+
+    if on_check then
+        on_check("android", function (package)
+            local ndk = package:toolchain("ndk")
+            local ndk_sdkver = ndk:config("ndk_sdkver")
+            assert(ndk_sdkver and tonumber(ndk_sdkver) > 25, "package(fann): need ndk api level > 25")
+        end)
+    end
+
+    on_load(function (package)
+        if package:is_plat("windows") and not package:config("shared") then
+            package:add("defines", "FANN_NO_DLL")
+        end
+        if package:is_plat("mingw", "msys") and not is_subhost("macosx") then
+            package:add("ldflags", "-fopenmp")
+        end
+        if package:is_plat("windows", "macosx") then
+            package:add("deps", "openmp")
+        elseif package:is_plat("macosx", "linux", "cross", "android", "mingw", "msys", "bsd") then
+            package:add("deps", "libomp")
+        end
+    end)
+
+    on_install("windows", "macosx", "linux", "cross", "android", "mingw", "msys", "bsd", function (package)
+        if package:is_plat("windows") and package:check_sizeof("void*") == "4" then
+            io.replace("src/include/fann.h", [[#define FANN_API __stdcall]], [[#define FANN_API]], {plain = true})
+        end
+        local configs = {"-DCMAKE_POLICY_DEFAULT_CMP0057=NEW"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
         table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
         io.replace("CMakeLists.txt", "ADD_SUBDIRECTORY( tests )", "", {plain = true})
         io.replace("CMakeLists.txt", "ADD_SUBDIRECTORY( lib/googletest )", "", {plain = true})
-        import("package.tools.cmake").install(package, configs)
+        local opt = {}
+        if package:is_plat("macosx") then
+            opt.packagedeps = "libomp"
+        end
+        import("package.tools.cmake").install(package, configs, opt)
     end)
 
     on_test(function (package)
-        assert(package:has_cfuncs("fann_run", {includes = "floatfann.h"}))
+        assert(package:check_cxxsnippets({test = [[
+            #include <fann.h>
+            void test() {
+                struct fann_train_data *train_data;
+                fann_scale_train_data(train_data, -1, 1);
+            }
+        ]]}, {configs = {languages = "c++11"}}))
     end)