Kaynağa Gözat

yasm: fix gcc 15 build `std=c23` (#7092)

* yasm: fix gcc 15 build `std=c23`

* try fixup

* fix

* clean

* test for build

* try rely over cmake

* try fix version for cmake

* use autoconf for mingw/msys2

* Update xmake.lua

* fixup

* Update xmake.lua

* Update xmake.lua

---------

Co-authored-by: star9029 <[email protected]>
Saikari 5 ay önce
ebeveyn
işleme
c90c2855a1

+ 24 - 0
packages/y/yasm/patches/fix-bool-gcc15.diff

@@ -0,0 +1,24 @@
+diff --git a/libyasm/bitvect.h b/libyasm/bitvect.h
+index 3aee3a5..9b84bf3 100644
+--- a/libyasm/bitvect.h
++++ b/libyasm/bitvect.h
+@@ -80,11 +80,15 @@ typedef  Z_longword         *Z_longwordptr;
+ #ifdef __cplusplus
+     typedef bool boolean;
+ #else
+-    #ifdef MACOS_TRADITIONAL
++     #ifdef MACOS_TRADITIONAL
+         #define boolean Boolean
+-    #else
+-        typedef enum boolean { false = FALSE, true = TRUE } boolean;
+-    #endif
++     #else
++        #if __STDC_VERSION__ < 202311L
++            typedef enum boolean { false = FALSE, true = TRUE } boolean;
++        #else
++            typedef bool boolean;
++        #endif
++     #endif
+ #endif
+ 
+ /*****************************************************************************/

+ 69 - 0
packages/y/yasm/patches/upd-min-cmake.diff

@@ -0,0 +1,69 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 8df871cf7..2eafe3fde 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,5 +1,5 @@
+ PROJECT(yasm)
+-CMAKE_MINIMUM_REQUIRED(VERSION 2.4)
++CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
+ if (COMMAND cmake_policy)
+     cmake_policy(SET CMP0003 NEW)
+ endif (COMMAND cmake_policy)
+diff --git a/cmake/modules/YasmMacros.cmake b/cmake/modules/YasmMacros.cmake
+index ab1be00e9..e6006b31c 100644
+--- a/cmake/modules/YasmMacros.cmake
++++ b/cmake/modules/YasmMacros.cmake
+@@ -58,31 +58,28 @@ macro (YASM_ADD_MODULE _module_NAME)
+ endmacro (YASM_ADD_MODULE)
+ 
+ macro (YASM_GENPERF _in_NAME _out_NAME)
+-    get_target_property(_tmp_GENPERF_EXE genperf LOCATION)
+     add_custom_command(
+         OUTPUT ${_out_NAME}
+-        COMMAND ${_tmp_GENPERF_EXE} ${_in_NAME} ${_out_NAME}
+-        DEPENDS ${_tmp_GENPERF_EXE}
++        COMMAND $<TARGET_FILE:genperf> ${_in_NAME} ${_out_NAME}
++        DEPENDS genperf
+         MAIN_DEPENDENCY ${_in_NAME}
+         )
+ endmacro (YASM_GENPERF)
+ 
+ macro (YASM_RE2C _in_NAME _out_NAME)
+-    get_target_property(_tmp_RE2C_EXE re2c LOCATION)
+     add_custom_command(
+         OUTPUT ${_out_NAME}
+-        COMMAND ${_tmp_RE2C_EXE} ${ARGN} -o ${_out_NAME} ${_in_NAME}
+-        DEPENDS ${_tmp_RE2C_EXE}
++        COMMAND $<TARGET_FILE:re2c> ${ARGN} -o ${_out_NAME} ${_in_NAME}
++        DEPENDS re2c
+         MAIN_DEPENDENCY ${_in_NAME}
+         )
+ endmacro (YASM_RE2C)
+ 
+ macro (YASM_GENMACRO _in_NAME _out_NAME _var_NAME)
+-    get_target_property(_tmp_GENMACRO_EXE genmacro LOCATION)
+     add_custom_command(
+         OUTPUT ${_out_NAME}
+-        COMMAND ${_tmp_GENMACRO_EXE} ${_out_NAME} ${_var_NAME} ${_in_NAME}
+-        DEPENDS ${_tmp_GENMACRO_EXE}
++        COMMAND $<TARGET_FILE:genmacro> ${_out_NAME} ${_var_NAME} ${_in_NAME}
++        DEPENDS genmacro
+         MAIN_DEPENDENCY ${_in_NAME}
+         )
+ endmacro (YASM_GENMACRO)
+diff --git a/modules/preprocs/nasm/CMakeLists.txt b/modules/preprocs/nasm/CMakeLists.txt
+index e10a9dd12..31e7a0345 100644
+--- a/modules/preprocs/nasm/CMakeLists.txt
++++ b/modules/preprocs/nasm/CMakeLists.txt
+@@ -1,9 +1,8 @@
+ add_executable(genversion preprocs/nasm/genversion.c)
+-get_target_property(_tmp_GENVERSION_EXE genversion LOCATION)
+ add_custom_command(
+     OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.mac
+-    COMMAND ${_tmp_GENVERSION_EXE} ${CMAKE_CURRENT_BINARY_DIR}/version.mac
+-    DEPENDS ${_tmp_GENVERSION_EXE}
++    COMMAND $<TARGET_FILE:genversion> ${CMAKE_CURRENT_BINARY_DIR}/version.mac
++    DEPENDS genversion
+     )
+ 
+ YASM_GENMACRO(

+ 19 - 25
packages/y/yasm/xmake.lua

@@ -1,39 +1,33 @@
 package("yasm")
-
     set_kind("binary")
     set_homepage("https://yasm.tortall.net/")
     set_description("Modular BSD reimplementation of NASM.")
 
-    if is_host("windows") then
-        if os.arch() == "x64" then
-            add_urls("https://github.com/yasm/yasm/releases/download/$(version)/vsyasm-$(version)-win64.zip",
-                     "http://www.tortall.net/projects/yasm/releases/vsyasm-$(version)-win64.zip")
-            add_versions("1.3.0", "6D991CA77E3827AADE0091C87C89CB4C9FA6AD097AFCEA95EA736482BAE707E2")
-        else
-            add_urls("https://github.com/yasm/yasm/releases/download/$(version)/vsyasm-$(version)-win32.zip",
-                     "http://www.tortall.net/projects/yasm/releases/vsyasm-$(version)-win32.zip")
-            add_versions("1.3.0", "FF4585E2A03E7015B0B1D406D4231267C2D3733968FFC6FC633E586C85C16DA5")
-        end
-    else
-        add_urls("https://www.tortall.net/projects/yasm/releases/yasm-$(version).tar.gz",
-                 "https://ftp.openbsd.org/pub/OpenBSD/distfiles/yasm-$(version).tar.gz")
-        add_versions("1.3.0", "3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f")
-    end
+    add_urls("https://www.tortall.net/projects/yasm/releases/yasm-$(version).tar.gz",
+             "https://ftp.openbsd.org/pub/OpenBSD/distfiles/yasm-$(version).tar.gz")
 
-    on_install("@windows", "@mingw", "@msys", function (package)
-        os.mv("vsyasm.exe", "yasm.exe")
-        os.cp("*", package:installdir("bin"))
-    end)
-    
-    on_install("@linux", "@macosx", function (package)
+    add_versions("1.3.0", "3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f")
+
+    add_patches("1.3.0", path.join(os.scriptdir(), "patches", "fix-bool-gcc15.diff"), "bc58964451aec9495e1bd4ebb8f6a035dc7b01be6a041cba3fcf90decba7d6e1")
+    add_patches("1.3.0", path.join(os.scriptdir(), "patches", "upd-min-cmake.diff"), "5c234e51f03502970104027f1580b733d89109144b85ee0b3b5366febab28623")
+
+    add_deps("cmake", "python 3.x", {kind = "binary"})
+
+    on_install("@msys", function (package)
         local configs = {"--disable-python"}
-        if package:debug() then
+        if package:is_debug() then
             table.insert(configs, "--enable-debug")
         end
-        import("package.tools.autoconf").install(package)
+        import("package.tools.autoconf").install(package, configs)
+    end)
+
+    on_install("@windows", "@linux", "@macosx", "@bsd", function (package)
+        local configs = {"-DYASM_BUILD_TESTS=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"))
+        import("package.tools.cmake").install(package, configs)
     end)
 
     on_test(function (package)
         os.vrun("yasm --version")
     end)
-