浏览代码

update mnn to 3.0.5 (#6409)

* update mnn to 3.0.5

* Fix ubuntu arm64 ci

* modify support platforms

* modify platform

* modify support plats

* open on_test

* add iphoneos

* Fix ucrt mismatch

---------

Co-authored-by: star9029 <[email protected]>
fasiondog 6 月之前
父节点
当前提交
9a3a4fa327
共有 2 个文件被更改,包括 35 次插入24 次删除
  1. 1 1
      .github/workflows/ubuntu_arm64.yml
  2. 34 23
      packages/m/mnn/xmake.lua

+ 1 - 1
.github/workflows/ubuntu_arm64.yml

@@ -34,4 +34,4 @@ jobs:
 
 
       - name: Tests
       - name: Tests
         run: |
         run: |
-          xmake l ./scripts/test.lua -D -a arm64-v8a -k ${{ matrix.kind }} -m ${{ matrix.mode }}
+          xmake l ./scripts/test.lua -D -k ${{ matrix.kind }} -m ${{ matrix.mode }}

+ 34 - 23
packages/m/mnn/xmake.lua

@@ -1,12 +1,12 @@
 package("mnn")
 package("mnn")
-
     set_homepage("https://www.mnn.zone/")
     set_homepage("https://www.mnn.zone/")
     set_description("MNN is a highly efficient and lightweight deep learning framework.")
     set_description("MNN is a highly efficient and lightweight deep learning framework.")
     set_license("Apache-2.0")
     set_license("Apache-2.0")
 
 
-    add_urls("https://github.com/alibaba/MNN/archive/$(version).zip",
+    add_urls("https://github.com/alibaba/MNN/archive/refs/tags/$(version).zip",
              "https://github.com/alibaba/MNN.git")
              "https://github.com/alibaba/MNN.git")
 
 
+    add_versions("3.0.5", "23179be245aefe2e1546e94ad6312fde6fdd14c669ff5123ee5a5a9ef14542ef")
     add_versions("1.2.2", "78698b879f796a84d1aeb02f60ee38f6860dfdd03c27d1649aaaf9e0adfc8630")
     add_versions("1.2.2", "78698b879f796a84d1aeb02f60ee38f6860dfdd03c27d1649aaaf9e0adfc8630")
     add_versions("1.2.1", "485ae09558ff5626a63d1467ca81ebe0e17fbc60222c386d8f0e857f487c74d0")
     add_versions("1.2.1", "485ae09558ff5626a63d1467ca81ebe0e17fbc60222c386d8f0e857f487c74d0")
 
 
@@ -24,14 +24,12 @@ package("mnn")
 
 
     add_deps("cmake")
     add_deps("cmake")
 
 
-    add_links("")
-
-    on_load("windows", "linux", "macosx", "android", function (package)
+    on_load("windows|!arm*", "linux", "macosx", "android", "iphoneos|!x86_64", function (package)
         local mnn_path = package:installdir("include")
         local mnn_path = package:installdir("include")
         local mnn_lib_dir = string.sub(mnn_path, 1, string.len(mnn_path) - 7) .. "lib"
         local mnn_lib_dir = string.sub(mnn_path, 1, string.len(mnn_path) - 7) .. "lib"
         if package:config("shared") then
         if package:config("shared") then
-            package:add("ldflags", "-L" .. mnn_lib_dir .. " -lmnn")
-            package:add("shflags", "-L" .. mnn_lib_dir .. " -lmnn")
+            package:add("ldflags", "-L" .. mnn_lib_dir .. " -lMNN")
+            package:add("shflags", "-L" .. mnn_lib_dir .. " -lMNN")
         else
         else
             if package:is_plat("linux", "android", "cross") then
             if package:is_plat("linux", "android", "cross") then
                 package:add("shflags", " -Wl,--whole-archive " .. mnn_lib_dir .. "/libMNN.a -Wl,--no-whole-archive")
                 package:add("shflags", " -Wl,--whole-archive " .. mnn_lib_dir .. "/libMNN.a -Wl,--no-whole-archive")
@@ -63,19 +61,35 @@ package("mnn")
         end
         end
     end)
     end)
 
 
-    on_install("windows", "linux", "macosx", "android", function (package)
-        local configs = {"-DMNN_BUILD_TEST=OFF",
-                         "-DMNN_BUILD_DEMO=OFF",
-                         "-DMNN_SUPPORT_TFLITE_QUAN=ON",
-                         "-DMNN_PORTABLE_BUILD=OFF",
-                         "-DMNN_SEP_BUILD=OFF"}
+    on_install("windows|!arm*", "linux", "macosx", "android", "iphoneos|!x86_64", function (package)
+        if package:is_plat("windows") then
+            io.replace("CMakeLists.txt", "set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded$<$<CONFIG:Debug>:Debug>)", "", {plain = true})
+            io.replace("CMakeLists.txt", "set(CMAKE_MSVC_RUNTIME_LIBRARY ${CMAKE_MSVC_RUNTIME_LIBRARY}DLL)", "", {plain = true})
+            io.replace("CMakeLists.txt",
+                'SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")',
+                'SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")', {plain = true})
+            io.replace("CMakeLists.txt",
+                'SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")',
+                'SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")', {plain = true})
+        end
+
+        local configs = {
+            "-DMNN_BUILD_TEST=OFF",
+            "-DMNN_BUILD_DEMO=OFF",
+            "-DMNN_SUPPORT_TFLITE_QUAN=ON",
+            "-DMNN_PORTABLE_BUILD=OFF",
+            "-DMNN_SEP_BUILD=OFF",
+        }
+        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"))
         table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
         table.insert(configs, "-DMNN_BUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
         table.insert(configs, "-DMNN_BUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        table.insert(configs, "-DMNN_WIN_RUNTIME_MT=" .. (package:has_runtime("MT") and "ON" or "OFF"))
+
         table.insert(configs, "-DMNN_USE_SYSTEM_LIB=" .. (package:config("use_system_lib") and "ON" or "OFF"))
         table.insert(configs, "-DMNN_USE_SYSTEM_LIB=" .. (package:config("use_system_lib") and "ON" or "OFF"))
         table.insert(configs, "-DMNN_USE_THREAD_POOL=" .. (package:config("thread_pool") and "ON" or "OFF"))
         table.insert(configs, "-DMNN_USE_THREAD_POOL=" .. (package:config("thread_pool") and "ON" or "OFF"))
         table.insert(configs, "-DMNN_OPENMP=" .. (package:config("openmp") and "ON" or "OFF"))
         table.insert(configs, "-DMNN_OPENMP=" .. (package:config("openmp") and "ON" or "OFF"))
         if package:config("thread_pool") and package:config("openmp") then
         if package:config("thread_pool") and package:config("openmp") then
-            print("Warning: You are using mnn's thread pool, it will disable openmp!")
+            wprint("You are using mnn's thread pool, it will disable openmp!")
         end
         end
         for _, name in ipairs({"metal", "opencl", "opengl", "vulkan", "arm82", "onednn", "avx512", "cuda", "tensorrt", "coreml"}) do
         for _, name in ipairs({"metal", "opencl", "opengl", "vulkan", "arm82", "onednn", "avx512", "cuda", "tensorrt", "coreml"}) do
             table.insert(configs, "-DMNN_" .. string.upper(name) .. "=" .. (package:config(name) and "ON" or "OFF"))
             table.insert(configs, "-DMNN_" .. string.upper(name) .. "=" .. (package:config(name) and "ON" or "OFF"))
@@ -83,20 +97,17 @@ package("mnn")
         for _, name in ipairs({"train", "quantools", "convert"}) do
         for _, name in ipairs({"train", "quantools", "convert"}) do
             table.insert(configs, "-DMNN_BUILD_" .. string.upper(name) .. "=" .. (package:config(name) and "ON" or "OFF"))
             table.insert(configs, "-DMNN_BUILD_" .. string.upper(name) .. "=" .. (package:config(name) and "ON" or "OFF"))
         end
         end
-        if package:is_plat("windows") then
-            table.insert(configs, "-DMNN_WIN_RUNTIME_MT=" .. (package:config("vs_runtime") and "ON" or "OFF"))
-            io.replace("CMakeLists.txt",
-                'SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /Zi")',
-                'SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")', {plain = true})
-            io.replace("CMakeLists.txt",
-                'SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi")',
-                'SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")', {plain = true})
-        end
         if package:is_plat("android") then
         if package:is_plat("android") then
             table.insert(configs, "-DMNN_USE_SSE=OFF")
             table.insert(configs, "-DMNN_USE_SSE=OFF")
             table.insert(configs, "-DMNN_BUILD_FOR_ANDROID_COMMAND=ON")
             table.insert(configs, "-DMNN_BUILD_FOR_ANDROID_COMMAND=ON")
         end
         end
+        if package:is_plat("iphoneos") then
+            table.insert(configs, '-DARCHS=arm64')
+            table.insert(configs, "-DENABLE_BITCODE=0")
+            table.insert(configs, "-DMNN_ARM82=ON")
+        end
         import("package.tools.cmake").install(package, configs, {buildir = "bd"})
         import("package.tools.cmake").install(package, configs, {buildir = "bd"})
+
         if package:is_plat("windows") then
         if package:is_plat("windows") then
             os.cp("bd/Release/*.exe", package:installdir("bin"))
             os.cp("bd/Release/*.exe", package:installdir("bin"))
             os.cp("bd/Release/*.dll", package:installdir("bin"))
             os.cp("bd/Release/*.dll", package:installdir("bin"))