ソースを参照

Auto-update thorvg to v0.13.5 (#4156)

* Update thorvg to v0.13.5

* improve configs

* improve configs

* python: fix mkdir

---------

Co-authored-by: star9029 <[email protected]>
ruki 1 年間 前
コミット
5e0e856f05
2 ファイル変更57 行追加4 行削除
  1. 9 4
      packages/p/python/xmake.lua
  2. 48 0
      packages/t/thorvg/xmake.lua

+ 9 - 4
packages/p/python/xmake.lua

@@ -123,6 +123,7 @@ package("python")
     end)
 
     on_install("@macosx", "@bsd", "@linux", function (package)
+        local version = package:version()
 
         -- init configs
         local configs = {"--enable-ipv6", "--with-ensurepip", "--enable-optimizations"}
@@ -149,7 +150,7 @@ package("python")
                     end
                 end
                 if openssl_dir then
-                    if package:version():ge("3.0") then
+                    if version:ge("3.0") then
                         table.insert(configs, "--with-openssl=" .. openssl_dir)
                     else
                         io.gsub("setup.py", "/usr/local/ssl", openssl_dir)
@@ -230,20 +231,24 @@ package("python")
             table.insert(configs, "LDFLAGS=" .. table.concat(ldflags, " "))
         end
 
+        local pyver = ("python%d.%d"):format(version:major(), version:minor())
+        -- https://github.com/python/cpython/issues/109796
+        if version:ge("3.12.0") then
+            os.mkdir(package:installdir("lib", pyver))
+        end
+
         -- unset these so that installing pip and setuptools puts them where we want
         -- and not into some other Python the user has installed.
         import("package.tools.autoconf").configure(package, configs, {envs = {PYTHONHOME = "", PYTHONPATH = ""}})
         os.vrunv("make", {"-j4", "PYTHONAPPSDIR=" .. package:installdir()})
         os.vrunv("make", {"install", "-j4", "PYTHONAPPSDIR=" .. package:installdir()})
-        if package:version():ge("3.0") then
+        if version:ge("3.0") then
             os.cp(path.join(package:installdir("bin"), "python3"), path.join(package:installdir("bin"), "python"))
             os.cp(path.join(package:installdir("bin"), "python3-config"), path.join(package:installdir("bin"), "python-config"))
         end
 
         -- install wheel
         local python = path.join(package:installdir("bin"), "python")
-        local version = package:version()
-        local pyver = ("python%d.%d"):format(version:major(), version:minor())
         local envs = {
             PATH = package:installdir("bin"),
             PYTHONPATH = package:installdir("lib", pyver, "site-packages"),

+ 48 - 0
packages/t/thorvg/xmake.lua

@@ -6,8 +6,17 @@ package("thorvg")
     add_urls("https://github.com/thorvg/thorvg/archive/refs/tags/$(version).tar.gz",
              "https://github.com/thorvg/thorvg.git")
 
+    add_versions("v0.13.5", "977ed74c3846c9a6acd5765aff776745d40e3c91507b22e51177d59c69afd198")
     add_versions("v0.13.2", "03b5dbb4c73ff221a4bd7243cc0ad377aecff4c3077f5a57ee2902e4122d3218")
 
+    add_configs("engines", {description = "Enable Rasterizer Engine in thorvg", default = {"sw"}, type = "table"})
+    add_configs("loaders", {description = "Enable File Loaders", type = "table"})
+    add_configs("savers", {description = "Enable File Savers", type = "table"})
+    add_configs("tools", {description = "Enable building thorvg tools", type = "table"})
+    add_configs("extra", {description = "Enable support for exceptionally advanced features", type = "table"})
+    add_configs("threads", {description = "Enable the multi-threading task scheduler in thorvg", default = false, type = "boolean"})
+    add_configs("simd", {description = "Enable CPU Vectorization(SIMD) in thorvg", default = false, type = "boolean"})
+    add_configs("log", {description = "Enable log message", default = false, type = "boolean"})
     add_configs("c_api", {description = "Enable API bindings", default = false, type = "boolean"})
     if is_plat("wasm") then
         add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
@@ -18,6 +27,32 @@ package("thorvg")
     end
 
     add_deps("meson", "ninja")
+    if is_plat("windows") then
+        add_deps("pkgconf")
+    end
+
+    on_load(function (package)
+        import("core.base.hashset")
+
+        local loaders = package:config("loaders")
+        if loaders then
+            local loaders = hashset.from(loaders)
+            if loaders then
+                local deps = {jpg = "libjpeg-turbo", png = "libpng", webp = "libwebp"}
+                if loaders:has("all") then
+                    for _, dep in pairs(deps) do
+                        package:add("deps", dep)
+                    end
+                else
+                    for name, dep in pairs(deps) do
+                        if loaders:has(name) then
+                            package:add("deps", dep)
+                        end
+                    end
+                end
+            end
+        end
+    end)
 
     on_install("!android", function (package)
         if package:is_plat("mingw") then
@@ -31,9 +66,22 @@ package("thorvg")
             table.insert(configs, "-Ddefault_library=static")
             package:add("defines", "TVG_STATIC")
         end
+
+        local loaders = package:config("loaders")
+        local savers = package:config("savers")
+        local tools = package:config("tools")
+        local extra = package:config("extra")
+        table.insert(configs, "-Dengines=" .. table.concat(package:config("engines"), ","))
+        table.insert(configs, "-Dloaders=" .. (loaders and table.concat(loaders, ",") or ""))
+        table.insert(configs, "-Dsavers=" .. (savers and table.concat(savers, ",") or ""))
+        table.insert(configs, "-Dtools=" .. (tools and table.concat(tools, ",") or ""))
+        table.insert(configs, "-Dextra=" .. (extra and table.concat(extra, ",") or ""))
         if package:config("c_api") then
             table.insert(configs, "-Dbindings=capi")
         end
+        table.insert(configs, "-Dthreads=" .. (package:config("threads") and "true" or "false"))
+        table.insert(configs, "-Dsimd=" .. (package:config("simd") and "true" or "false"))
+        table.insert(configs, "-Dlog=" .. (package:config("log") and "true" or "false"))
         import("package.tools.meson").install(package, configs)
     end)