Переглянути джерело

update swig (#1840)

* update swig

* update freeglut

* update dav1d

* fix arm64 freeglut

* fix swig

* fix dav1d
Hoildkv 2 роки тому
батько
коміт
e87ebadb4d

+ 9 - 3
packages/d/dav1d/xmake.lua

@@ -6,20 +6,26 @@ package("dav1d")
 
     add_urls("https://downloads.videolan.org/pub/videolan/dav1d/$(version)/dav1d-$(version).tar.xz")
     add_versions("0.9.0", "cfae88e8067c9b2e5b96d95a7a00155c353376fe9b992a96b4336e0eab19f9f6")
+    add_versions("1.1.0", "fb57aae7875f28c30fb3dbae4a3683d27e2f91dde09ce5c60c22cef9bc58dfd1")
 
-    add_deps("nasm", "meson")
+    add_deps("nasm", "meson", "ninja")
     if is_plat("linux") then
         add_syslinks("pthread", "dl")
     end
 
     on_install("windows", "macosx", "linux|x86_64", function (package)
-        local configs = {"--libdir=lib", "-Denable_tests=false"}
+        local configs = {"-Denable_tests=false"}
         table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
+        if package:is_plat("windows") and package:is_cross() then
+            table.insert(configs, "-Denable_asm=false") -- arm asm requires bash and gas-preprocessor
+        end
         import("package.tools.meson").install(package, configs)
         package:addenv("PATH", "bin")
     end)
 
     on_test(function (package)
-        os.vrun("dav1d -v")
+        if not package:is_cross() then
+            os.vrun("dav1d -v")
+        end
         assert(package:has_cfuncs("dav1d_default_settings", {includes = "dav1d/dav1d.h"}))
     end)

+ 0 - 31
packages/f/freeglut/patches/3.2.1/gcc10.patch

@@ -1,31 +0,0 @@
-diff --git a/src/fg_gl2.h b/src/fg_gl2.h
-index ab8ba5c..a1a52da 100644
---- a/src/fg_gl2.h
-+++ b/src/fg_gl2.h
-@@ -67,12 +67,18 @@ 
- typedef void (APIENTRY *FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint);
- typedef void (APIENTRY *FGH_PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
- 
--FGH_PFNGLGENBUFFERSPROC fghGenBuffers;
--FGH_PFNGLDELETEBUFFERSPROC fghDeleteBuffers;
--FGH_PFNGLBINDBUFFERPROC fghBindBuffer;
--FGH_PFNGLBUFFERDATAPROC fghBufferData;
--FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC fghEnableVertexAttribArray;
--FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC fghDisableVertexAttribArray;
--FGH_PFNGLVERTEXATTRIBPOINTERPROC fghVertexAttribPointer;
-+#if __GNUC__ > 9
-+#define FG_ATTRIBUTE_COMMON __attribute__((__common__))
-+#else
-+#define FG_ATTRIBUTE_COMMON
-+#endif
-+
-+FGH_PFNGLGENBUFFERSPROC FG_ATTRIBUTE_COMMON fghGenBuffers;
-+FGH_PFNGLDELETEBUFFERSPROC FG_ATTRIBUTE_COMMON fghDeleteBuffers;
-+FGH_PFNGLBINDBUFFERPROC FG_ATTRIBUTE_COMMON fghBindBuffer;
-+FGH_PFNGLBUFFERDATAPROC FG_ATTRIBUTE_COMMON fghBufferData;
-+FGH_PFNGLENABLEVERTEXATTRIBARRAYPROC FG_ATTRIBUTE_COMMON fghEnableVertexAttribArray;
-+FGH_PFNGLDISABLEVERTEXATTRIBARRAYPROC FG_ATTRIBUTE_COMMON fghDisableVertexAttribArray;
-+FGH_PFNGLVERTEXATTRIBPOINTERPROC FG_ATTRIBUTE_COMMON fghVertexAttribPointer;
- 
- #    endif
- 

+ 17 - 0
packages/f/freeglut/patches/3.4.0/arm64.patch

@@ -0,0 +1,17 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 832d8672..9e6cfcb6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -447,7 +447,11 @@ IF(WIN32)
+         # doesn't hurt for older compilers:
+         # http://public.kitware.com/Bug/view.php?id=11240#c22768
+         IF (CMAKE_CL_64)
+-            SET_TARGET_PROPERTIES(freeglut_static PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
++            IF ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
++                SET_TARGET_PROPERTIES(freeglut_static PROPERTIES STATIC_LIBRARY_FLAGS "/machine:ARM64")
++            ELSE()
++                SET_TARGET_PROPERTIES(freeglut_static PROPERTIES STATIC_LIBRARY_FLAGS "/machine:x64")
++            ENDIF()
+         ENDIF()
+     ENDIF()
+ ELSE()

+ 11 - 8
packages/f/freeglut/xmake.lua

@@ -4,16 +4,13 @@ package("freeglut")
     set_description("A free-software/open-source alternative to the OpenGL Utility Toolkit (GLUT) library.")
     set_license("MIT")
 
-    set_urls("https://github.com/FreeGLUTProject/freeglut/releases/download/v$(version)/freeglut-$(version).tar.gz")
-    add_versions("3.0.0", "2a43be8515b01ea82bcfa17d29ae0d40bd128342f0930cd1f375f1ff999f76a2")
-    add_versions("3.2.1", "d4000e02102acaf259998c870e25214739d1f16f67f99cb35e4f46841399da68")
-    add_versions("3.2.2", "c5944a082df0bba96b5756dddb1f75d0cd72ce27b5395c6c1dde85c2ff297a50")
+    add_urls("https://github.com/FreeGLUTProject/freeglut/archive/refs/tags/$(version).zip",
+             "https://github.com/FreeGLUTProject/freeglut.git")
+    add_versions("v3.4.0", "8aed768c71dd5ec0676216bc25e23fa928cc628c82e54ecca261385ccfcee93a")
 
-    add_patches("3.2.1", path.join(os.scriptdir(), "patches", "3.2.1", "gcc10.patch"), "26cf5026249c9e288080a75a1e9b40b3fa74a4048321cc93907f1476c5a6508b")
+    add_patches("v3.4.0", path.join(os.scriptdir(), "patches", "3.4.0", "arm64.patch"), "a96b538e218ca478c7678aad62b724226dcdf11371da58d1287b95dbe241d00e")
 
-    if is_plat("linux", "windows") then
-        add_deps("cmake")
-    end
+    add_deps("cmake")
 
     if is_plat("linux") then
         add_deps("libx11", "libxi", "libxxf86vm", "libxrandr", "libxrender")
@@ -50,6 +47,12 @@ package("freeglut")
             else
                 table.insert(configs, "-DCMAKE_C_FLAGS=-DFREEGLUT_LIB_PRAGMAS=0 -DFREEGLUT_STATIC=1")
             end
+            if package:is_arch("arm64") then
+                local vs = import("core.tool.toolchain").load("msvc"):config("vs")
+                assert(tonumber(vs) >= 2022, "freeglut requires Visual Studio 2022 and later for arm targets")
+                table.insert(configs, "-DCMAKE_SYSTEM_NAME=Windows")
+                table.insert(configs, "-DCMAKE_SYSTEM_PROCESSOR=ARM64")
+            end
         end
         if package:config("pic") ~= false then
             table.insert(configs, "-DCMAKE_POSITION_INDEPENDENT_CODE=ON")

+ 25 - 6
packages/s/swig/xmake.lua

@@ -8,14 +8,26 @@ package("swig")
     if is_host("windows") then
         add_urls("https://sourceforge.net/projects/swig/files/swigwin/swigwin-$(version)/swigwin-$(version).zip")
         add_versions("4.0.2", "daadb32f19fe818cb9b0015243233fc81584844c11a48436385e87c050346559")
+        add_versions("4.1.1", "2ec3107e24606db535d77ef3dbf246dc6eccbf1d5c868dce365d7f7fb19a1a51")
     else
         add_urls("https://sourceforge.net/projects/swig/files/swig/swig-$(version)/swig-$(version).tar.gz")
         add_versions("4.0.2", "d53be9730d8d58a16bf0cbd1f8ac0c0c3e1090573168bfa151b01eb47fa906fc")
+        add_versions("4.1.1", "2af08aced8fcd65cdb5cc62426768914bedc735b1c250325203716f78e39ac9b")
     end
 
-    if is_host("macosx", "linux") then
-        add_deps("pcre", {host = true})
-    end
+    on_load("@macosx", "@linux", function (package)
+        if package:version():ge("4.1") then
+            package:add("deps", "pcre2", {host = true})
+        else
+            package:add("deps", "pcre", {host = true})
+        end
+    end)
+
+    on_fetch(function (package, opt)
+        if opt.system then
+            return package:find_tool("swig")
+        end
+    end)
 
     on_install("@windows", function (package)
         os.cp("*|Doc|Examples", package:installdir())
@@ -24,9 +36,16 @@ package("swig")
 
     on_install("@macosx", "@linux", function (package)
         local configs = {}
-        local pcre = package:dep("pcre")
-        if pcre and not pcre:is_system() then
-            table.insert(configs, "--with-pcre-prefix=" .. pcre:installdir())
+        if package:version():ge("4.1") then
+            local pcre2 = package:dep("pcre2")
+            if pcre2 and not pcre2:is_system() then
+                table.insert(configs, "--with-pcre2-prefix=" .. pcre2:installdir())
+            end
+        else
+            local pcre = package:dep("pcre")
+            if pcre and not pcre:is_system() then
+                table.insert(configs, "--with-pcre-prefix=" .. pcre:installdir())
+            end
         end
         import("package.tools.autoconf").install(package, configs)
     end)