Procházet zdrojové kódy

Merge remote-tracking branch 'upstream/dev' into bmf

star9029 před 1 rokem
rodič
revize
bd1695e8bc
100 změnil soubory, kde provedl 1686 přidání a 250 odebrání
  1. 1 1
      .github/workflows/deploy.yml
  2. 1 3
      .github/workflows/fedora.yml
  3. 17 0
      packages/1/11zip/port/xmake.lua
  4. 28 0
      packages/1/11zip/xmake.lua
  5. 3 0
      packages/a/abseil/xmake.lua
  6. 1 0
      packages/a/actor-framework/xmake.lua
  7. 13 12
      packages/a/ada/xmake.lua
  8. 27 0
      packages/a/ade/patches/0.1.2/cmake-mingw.patch
  9. 8 1
      packages/a/ade/xmake.lua
  10. 27 0
      packages/a/algo_plus/xmake.lua
  11. 50 0
      packages/a/antlr4-runtime/xmake.lua
  12. 1 0
      packages/a/arduinojson/xmake.lua
  13. 1 0
      packages/a/argparse/xmake.lua
  14. 22 0
      packages/a/asio2/patches/2.9/remove-const.patch
  15. 7 4
      packages/a/asio2/xmake.lua
  16. 1 0
      packages/a/assimp/xmake.lua
  17. 4 0
      packages/a/async_simple/xmake.lua
  18. 3 0
      packages/a/aws-c-cal/xmake.lua
  19. 1 0
      packages/a/aws-c-common/xmake.lua
  20. 1 0
      packages/a/aws-c-http/xmake.lua
  21. 2 0
      packages/a/aws-c-io/xmake.lua
  22. 1 0
      packages/a/aws-c-s3/xmake.lua
  23. 3 0
      packages/a/aws-crt-cpp/xmake.lua
  24. 60 0
      packages/a/aws-lc/xmake.lua
  25. 1 0
      packages/b/b2/xmake.lua
  26. 68 16
      packages/b/backward-cpp/xmake.lua
  27. 21 14
      packages/b/bdwgc/xmake.lua
  28. 21 7
      packages/b/bgfx/xmake.lua
  29. 26 1
      packages/b/binutils/xmake.lua
  30. 29 0
      packages/b/blake3/port/xmake.lua
  31. 10 37
      packages/b/blake3/xmake.lua
  32. 1 0
      packages/b/blosc/xmake.lua
  33. 22 0
      packages/b/boost/patches/1.85.0/fix-v144.patch
  34. 131 54
      packages/b/boost/xmake.lua
  35. 1 0
      packages/b/botan/xmake.lua
  36. 28 0
      packages/b/bredis/xmake.lua
  37. 25 4
      packages/b/bvh/xmake.lua
  38. 34 0
      packages/b/bytepack/xmake.lua
  39. 135 0
      packages/c/c-ares/patches/1.29.0/macosx-header.patch
  40. 24 15
      packages/c/c-ares/xmake.lua
  41. 1 0
      packages/c/c-blosc2/xmake.lua
  42. 29 0
      packages/c/c4core/patches/0.2.1/cmake-deps.patch
  43. 56 0
      packages/c/c4core/xmake.lua
  44. 1 0
      packages/c/cargs/xmake.lua
  45. 33 0
      packages/c/cdt/xmake.lua
  46. 1 0
      packages/c/cgif/xmake.lua
  47. 1 0
      packages/c/cgltf/xmake.lua
  48. 1 0
      packages/c/cgraph/xmake.lua
  49. 2 2
      packages/c/chipmunk2d/xmake.lua
  50. 1 0
      packages/c/cimg/xmake.lua
  51. 5 4
      packages/c/cinatra/xmake.lua
  52. 1 0
      packages/c/clove-unit/xmake.lua
  53. 7 0
      packages/c/cmake/xmake.lua
  54. 21 0
      packages/c/cmdparser/xmake.lua
  55. 22 0
      packages/c/commata/xmake.lua
  56. 10 0
      packages/c/cosmocc/xmake.lua
  57. 29 0
      packages/c/cpp-async/xmake.lua
  58. 22 0
      packages/c/cpp-channel/xmake.lua
  59. 1 0
      packages/c/cpp-sort/xmake.lua
  60. 6 1
      packages/c/cppcheck/xmake.lua
  61. 49 0
      packages/c/cppp-reiconv/patches/2.1.0/cmake.patch
  62. 19 19
      packages/c/cppp-reiconv/xmake.lua
  63. 6 1
      packages/c/cpptrace/xmake.lua
  64. 1 0
      packages/c/croaring/xmake.lua
  65. 1 0
      packages/c/crossguid/xmake.lua
  66. 19 0
      packages/c/crstl/xmake.lua
  67. 64 0
      packages/c/cserialport/xmake.lua
  68. 2 0
      packages/c/csvparser/xmake.lua
  69. 30 0
      packages/c/ctpg/xmake.lua
  70. 6 6
      packages/c/cxxgraph/xmake.lua
  71. 5 0
      packages/d/dartsim/xmake.lua
  72. 41 0
      packages/d/datatype99/xmake.lua
  73. 27 5
      packages/d/date/xmake.lua
  74. 23 10
      packages/d/dav1d/xmake.lua
  75. 1 0
      packages/d/daw_header_libraries/xmake.lua
  76. 1 0
      packages/d/daw_json_link/xmake.lua
  77. 1 0
      packages/d/decimal_for_cpp/xmake.lua
  78. 13 6
      packages/d/depot_tools/xmake.lua
  79. 7 4
      packages/d/directxshadercompiler/xmake.lua
  80. 20 8
      packages/d/directxtk/xmake.lua
  81. 1 2
      packages/d/discord/xmake.lua
  82. 31 0
      packages/d/dlpack/xmake.lua
  83. 21 7
      packages/d/dotnet/xmake.lua
  84. 1 0
      packages/d/drogon/xmake.lua
  85. 1 0
      packages/d/dynareadout/xmake.lua
  86. 1 0
      packages/e/efsw/xmake.lua
  87. 2 0
      packages/e/emmylua_debugger/xmake.lua
  88. 26 0
      packages/e/epoll-shim/xmake.lua
  89. 47 0
      packages/e/exosip/xmake.lua
  90. 2 2
      packages/e/expat/xmake.lua
  91. 1 0
      packages/e/expected-lite/xmake.lua
  92. 49 0
      packages/f/faker-cxx/xmake.lua
  93. 1 0
      packages/f/fast-cdr/xmake.lua
  94. 1 0
      packages/f/fastgltf/xmake.lua
  95. 24 0
      packages/f/fatal/xmake.lua
  96. 7 1
      packages/f/fbthrift/xmake.lua
  97. 3 0
      packages/f/ffmpeg/xmake.lua
  98. 18 3
      packages/f/fizz/xmake.lua
  99. 1 0
      packages/f/flatbuffers/xmake.lua
  100. 2 0
      packages/f/flecs/xmake.lua

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

@@ -3,7 +3,7 @@ name: Deploy
 on:
   push:
     branches:
-      - master
+      - dev
 
 jobs:
   build:

+ 1 - 3
.github/workflows/fedora.yml

@@ -41,6 +41,4 @@ jobs:
         env:
           XMAKE_ROOT: y
         run: |
-          xmake l ./scripts/test.lua -D -k ${{ matrix.kind }} -j1
-
-
+          xmake l ./scripts/test.lua -D -k ${{ matrix.kind }} -j4

+ 17 - 0
packages/1/11zip/port/xmake.lua

@@ -0,0 +1,17 @@
+add_rules("mode.debug", "mode.release")
+
+add_requires("minizip-ng")
+add_packages("minizip-ng")
+
+target("11zip")
+    set_kind("$(kind)")
+    set_languages("c++17")
+    add_files("src/*.cpp")
+    remove_files("src/elzip_fs_fallback.cpp")
+    add_includedirs("include", "include/elzip")
+
+    add_headerfiles("include/(**.hpp)")
+
+    if is_plat("windows") and is_kind("shared") then
+        add_rules("utils.symbols.export_all", {export_classes = true})
+    end

+ 28 - 0
packages/1/11zip/xmake.lua

@@ -0,0 +1,28 @@
+package("11zip")
+    set_homepage("https://github.com/Sygmei/11Zip")
+    set_description("Dead simple zipping / unzipping C++ Lib")
+    set_license("MIT")
+
+    add_urls("https://github.com/Sygmei/11Zip/archive/516e161d5c96aa8f2603fb30b10b7770a87332c2.tar.gz",
+             "https://github.com/Sygmei/11Zip.git")
+
+    add_versions("2023.05.10", "9e4052571c73ecd8e328fa9e8399f606604baa3373103d2e7dddb75019330ee0")
+    
+    add_includedirs("include", "include/elzip")
+
+    add_deps("minizip-ng")
+
+    on_install("macosx", "android", "linux", "windows", "mingw", function (package)
+        io.replace("src/unzipper.cpp", "unzLocateFile(zipFile_, filename.data(), nullptr)", "unzLocateFile(zipFile_, filename.data(), 0)", {plain = true})
+        os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
+        import("package.tools.xmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                std::string zipname;
+                elz::extractZip(zipname);
+            }
+        ]]}, {configs = {languages = "c++17"}, includes = "elzip/elzip.hpp"}))
+    end)

+ 3 - 0
packages/a/abseil/xmake.lua

@@ -16,6 +16,9 @@ package("abseil")
     add_versions("20240116.1", "3c743204df78366ad2eaf236d6631d83f6bc928d1705dd0000b872e53b73dc6a")
     add_versions("20240116.2", "733726b8c3a6d39a4120d7e45ea8b41a434cdacde401cba500f14236c49b39dc")
 
+    add_patches("20240116.1", "https://github.com/abseil/abseil-cpp/commit/3335e58f198e899a500b744163f9b883035a5217.patch", "f83278086b42bc997846d2b931a266678f96e2727fce6ffd98b2b58ce75fa0a3")
+    add_patches("20240116.2", "https://github.com/abseil/abseil-cpp/commit/3335e58f198e899a500b744163f9b883035a5217.patch", "f83278086b42bc997846d2b931a266678f96e2727fce6ffd98b2b58ce75fa0a3")
+
     add_deps("cmake")
 
     add_configs("cxx_standard", {description = "Select c++ standard to build.", default = "17", type = "string", values = {"14", "17", "20"}})

+ 1 - 0
packages/a/actor-framework/xmake.lua

@@ -6,6 +6,7 @@ package("actor-framework")
     add_urls("https://github.com/actor-framework/actor-framework/archive/refs/tags/$(version).tar.gz",
              "https://github.com/actor-framework/actor-framework.git")
 
+    add_versions("1.0.0", "602018239d23a1805d35ebda704fd5c969a0693fc513fcf7459063b628459e5b")
     add_versions("0.19.6", "48dc4c4abf5ab5a7c6f84b9259cc8be1b02c601d31893647ab44e143cdc4b6d5")
     add_versions("0.19.2", "aa3fcc494424e0e20b177125458a6a6ed39c751a3d3d5193054e88bdf8a146d2")
 

+ 13 - 12
packages/a/ada/xmake.lua

@@ -3,26 +3,27 @@ package("ada")
     set_description("WHATWG-compliant and fast URL parser written in modern C++")
     set_license("Apache-2.0")
 
-    set_urls("https://github.com/ada-url/ada/archive/refs/tags/v$(version).tar.gz",
+    set_urls("https://github.com/ada-url/ada/archive/refs/tags/$(version).tar.gz",
              "https://github.com/ada-url/ada.git")
 
-    add_versions("2.8.0", "83b77fb53d1a9eea22b1484472cea0215c50478c9ea2b4b44b0ba3b52e07c139")
-    add_versions("2.7.8", "8de067b7cb3da1808bf5439279aee6048d761ba246bf8a854c2af73b16b41c75")
-    add_versions("2.7.7", "7116d86a80b79886efbc9d946d3919801815060ae62daf78de68c508552af554")
-    add_versions("2.7.6", "e2822783913c50b9f5c0f20b5259130a7bdc36e87aba1cc38a5de461fe45288f")
-    add_versions("2.3.1", "298992ec0958979090566c7835ea60c14f5330d6372ee092ef6eee1d2e6ac079")
-    add_versions("2.4.0", "14624f1dfd966fee85272688064714172ff70e6e304a1e1850f352a07e4c6dc7")
-    add_versions("2.4.1", "e9359937e7aeb8e5889515c0a9e22cd5da50e9b053038eb092135a0e64888fe7")
-
-    add_deps("cmake")
+    add_versions("v2.9.0", "8b992f0ce9134cb4eafb74b164d2ce2cb3af1900902162713b0e0c5ab0b6acd8")
+    add_versions("v2.8.0", "83b77fb53d1a9eea22b1484472cea0215c50478c9ea2b4b44b0ba3b52e07c139")
+    add_versions("v2.7.8", "8de067b7cb3da1808bf5439279aee6048d761ba246bf8a854c2af73b16b41c75")
+    add_versions("v2.7.7", "7116d86a80b79886efbc9d946d3919801815060ae62daf78de68c508552af554")
+    add_versions("v2.7.6", "e2822783913c50b9f5c0f20b5259130a7bdc36e87aba1cc38a5de461fe45288f")
+    add_versions("v2.3.1", "298992ec0958979090566c7835ea60c14f5330d6372ee092ef6eee1d2e6ac079")
+    add_versions("v2.4.0", "14624f1dfd966fee85272688064714172ff70e6e304a1e1850f352a07e4c6dc7")
+    add_versions("v2.4.1", "e9359937e7aeb8e5889515c0a9e22cd5da50e9b053038eb092135a0e64888fe7")
 
     if is_plat("macosx") then
         add_extsources("brew::ada-url")
     end
 
-    on_install("windows", "linux", "macosx", "bsd", "mingw", "msys", "android", "iphoneos", "cross", function (package)
+    add_deps("cmake")
+
+    on_install(function (package)
         local configs = {"-DBUILD_TESTING=OFF"}
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        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(singleheader)", "", {plain = true})
         io.replace("CMakeLists.txt", "add_subdirectory(tools)", "", {plain = true})

+ 27 - 0
packages/a/ade/patches/0.1.2/cmake-mingw.patch

@@ -0,0 +1,27 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index af78061..8aba951 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -39,13 +39,15 @@ function(add_security_flags target)
+             target_compile_options( ${target} PRIVATE -fstack-protector-strong)
+         endif()
+     elseif(WIN32)
+-        target_compile_options( ${target} PRIVATE /GS /DynamicBase)
+-        if(BUILD_WITH_STATIC_CRT)
+-            target_compile_options( ${target} PRIVATE "/MT")
+-        endif()
+-        if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
+-            # These options for 32 bit builds only
+-            target_compile_options( ${target} PRIVATE /SAFESEH /NXCOMPAT )
++        if (MSVC)
++            target_compile_options( ${target} PRIVATE /GS /DynamicBase)
++            if(BUILD_WITH_STATIC_CRT)
++                target_compile_options( ${target} PRIVATE "/MT")
++            endif()
++            if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4")
++                # These options for 32 bit builds only
++                target_compile_options( ${target} PRIVATE /SAFESEH /NXCOMPAT )
++            endif()
+         endif()
+     endif()
+ endfunction()

+ 8 - 1
packages/a/ade/xmake.lua

@@ -7,6 +7,9 @@ package("ade")
              "https://github.com/opencv/ade.git")
 
     add_versions("v0.1.2d", "edefba61a33d6cd4b78a9976cb3309c95212610a81ba6dade09882d1794198ff")
+    add_versions("v0.1.2", "ac2e6a4acbe6e0b0942418687ec37c6cd55dcaec5112c7ca09abefe6ee539499")
+
+    add_patches("0.1.2", "patches/0.1.2/cmake-mingw.patch", "59ac0ed938b82090e97de6dee358ba683b371908c3063b4d10146999a30eaaaa")
 
     add_deps("cmake")
 
@@ -19,5 +22,9 @@ package("ade")
     end)
 
     on_test(function (package)
-        assert(package:has_cxxtypes("ade::Graph", {configs = {languages = "c++11"}, includes = "ade/graph.hpp"}))
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                ade::Graph x;
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "ade/graph.hpp"}))
     end)

+ 27 - 0
packages/a/algo_plus/xmake.lua

@@ -0,0 +1,27 @@
+package("algo_plus")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://csrt-ntua.github.io/AlgoPlus")
+    set_description("AlgoPlus is a C++17 library for complex data structures and algorithms")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/CSRT-NTUA/AlgoPlus.git")
+    add_versions("2024.07.02", "1287dfc5bf666bace15af9c14d03e807b71efa82")
+
+    add_deps("nlohmann_json")
+
+    on_install(function (package)
+        for _, file in ipairs(os.files("src/**.h")) do
+            io.replace(file, "../../../../third_party/json.hpp", "nlohmann/json.hpp", {plain = true})
+        end
+        os.cp("src/*", package:installdir("include"))
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                std::vector<std::vector<double> > data;
+                int CLUSTERS;
+                kmeans a(data, CLUSTERS);
+            }
+        ]]}, {configs = {languages = "c++17"}, includes = {"machine_learning/clustering/kmeans/kmeans.h"}}))
+    end)

+ 50 - 0
packages/a/antlr4-runtime/xmake.lua

@@ -0,0 +1,50 @@
+package("antlr4-runtime")
+    set_homepage("http://antlr.org")
+    set_description("ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files.")
+    set_license("BSD-3-Clause")
+
+    add_urls("https://github.com/antlr/antlr4/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/antlr/antlr4.git")
+
+    add_versions("4.13.1", "da20d487524d7f0a8b13f73a8dc326de7fc2e5775f5a49693c0a4e59c6b1410c")
+
+    if is_plat("mingw") and is_subhost("msys") then
+        add_extsources("pacman::antlr4-runtime-cpp")
+    elseif is_plat("linux") then
+        add_extsources("pacman::antlr4-runtime", "apt::libantlr4-runtime-dev")
+    elseif is_plat("macosx") then
+        add_extsources("brew::antlr4-cpp-runtime")
+    end
+
+    if is_plat("linux", "bsd") then
+        add_syslinks("m", "pthread")
+    elseif is_plat("macosx") then
+        add_frameworks("CoreFoundation")
+    end
+
+    add_includedirs("include", "include/antlr4-runtime")
+
+    add_deps("cmake")
+
+    on_install(function (package)
+        local configs = {"-DANTLR_BUILD_CPP_TESTS=OFF", "-DANTLR4_INSTALL=ON"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        table.insert(configs, "-DANTLR_BUILD_SHARED=" .. (package:config("shared") and "ON" or "OFF"))
+        table.insert(configs, "-DANTLR_BUILD_STATIC=" .. (package:config("shared") and "OFF" or "ON"))
+
+        os.cd("runtime/Cpp")
+        io.replace("CMakeLists.txt", [[set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")]], "", {plain = true})
+        io.replace("CMakeLists.txt", [[set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")]], "", {plain = true})
+        import("package.tools.cmake").install(package, configs)
+        if not package:config("shared") then
+            package:add("defines", "ANTLR4CPP_STATIC")
+        end
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                antlr4::ANTLRInputStream x;
+            }
+        ]]}, {configs = {languages = "c++17"}, includes = "antlr4-runtime/antlr4-runtime.h"}))
+    end)

+ 1 - 0
packages/a/arduinojson/xmake.lua

@@ -7,6 +7,7 @@ package("arduinojson")
     add_urls("https://github.com/bblanchon/ArduinoJson/archive/refs/tags/$(version).tar.gz",
              "https://github.com/bblanchon/ArduinoJson.git")
 
+    add_versions("v7.1.0", "74bc745527a274bcab85c6498de77da749627113c4921ccbcaf83daa7ac35dee")
     add_versions("v7.0.4", "98ca14d98e9f1e8978ce5ad3ca0eeda3d22419d17586c60f299f369078929917")
     add_versions("v7.0.3", "6da2d069e0caa0c829444912ee13e78bdf9cc600be632428a164c92e69528000")
     add_versions("v6.21.4", "9551af9282372f6e64cf4009fc43be7f2df6eb96fe9c0aab44d4eed217d09747")

+ 1 - 0
packages/a/argparse/xmake.lua

@@ -6,6 +6,7 @@ package("argparse")
 
     add_urls("https://github.com/p-ranav/argparse/archive/refs/tags/v$(version).zip",
              "https://github.com/p-ranav/argparse.git")
+    add_versions("3.1", "3e5a59ab7688dcd1f918bc92051a10564113d4f36c3bbed3ef596c25e519a062")
     add_versions("3.0", "674e724c2702f0bfef1619161815257a407e1babce30d908327729fba6ce4124")
     add_versions("2.6", "ce4e58d527b83679bdcc4adfa852af7ec9df16b76c11637823ef642cb02d2618")
     add_versions("2.7", "58cf098fd195895aeb9b9120d96f1e310994b2f44d72934c438ec91bf2191f46")

+ 22 - 0
packages/a/asio2/patches/2.9/remove-const.patch

@@ -0,0 +1,22 @@
+From 34bb2c023d60d22e4b1a31750d9b649d7729209e Mon Sep 17 00:00:00 2001
+From: xpxz <[email protected]>
+Date: Wed, 19 Jun 2024 14:08:48 +0800
+Subject: [PATCH] remove const in set_to_text_limit
+
+---
+ include/asio2/http/detail/flex_body.hpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/include/asio2/http/detail/flex_body.hpp b/include/asio2/http/detail/flex_body.hpp
+index 491f5b8a..18e682db 100644
+--- a/include/asio2/http/detail/flex_body.hpp
++++ b/include/asio2/http/detail/flex_body.hpp
+@@ -136,7 +136,7 @@ class basic_flex_body<TextBody, FileBody>::value_type
+ 	inline bool is_text() const noexcept { return !is_file();      }
+ 	inline bool is_file() const noexcept { return file_.is_open(); }
+ 
+-    inline void set_to_text_limit(std::uint64_t v) const noexcept
++    inline void set_to_text_limit(std::uint64_t v) noexcept
+     {
+         this->to_text_limit_ = v;
+     }

+ 7 - 4
packages/a/asio2/xmake.lua

@@ -1,17 +1,20 @@
 package("asio2")
-
     set_kind("library", {headeronly = true})
     set_homepage("https://github.com/zhllxt/asio2")
     set_description("Header only c++ network library, based on asio, support tcp,udp,http,websocket,rpc,ssl,icmp,serial_port.")
     set_license("BSL-1.0")
 
-    add_urls("https://github.com/zhllxt/asio2.git")
-    add_versions("2023.05.09", "ac8c79964d79020091e38fcbb4ae9dccccb3b03c")
+    add_urls("https://github.com/zhllxt/asio2/archive/refs/tags/$(version).zip",
+             "https://github.com/zhllxt/asio2.git")
+
+    add_versions("v2.9", "3ce0b41300954ffc13948bd51af6430e324b1c28e26d2eb5a83e775cf38c12b4")
+
+    add_patches("2.9", "patches/2.9/remove-const.patch", "6326f333ab2d0484c23bb3cd9cfd5a565030b5525d083677565a693f5f8803b6")
 
     add_deps("asio", "cereal", "fmt", "openssl3")
     add_deps("spdlog", { configs = { header_only = false, fmt_external = true } })
 
-    on_install("windows", "linux", "macosx", "mingw", "bsd", function (package)
+    on_install("windows", "linux", "macosx", "mingw", "bsd", "cross", function (package)
         os.cp(path.join("include", "*"), package:installdir("include"))
     end)
 

+ 1 - 0
packages/a/assimp/xmake.lua

@@ -5,6 +5,7 @@ package("assimp")
 
     set_urls("https://github.com/assimp/assimp/archive/refs/tags/$(version).zip",
              "https://github.com/assimp/assimp.git")
+    add_versions("v5.4.2", "03e38d123f6bf19a48658d197fd09c9a69db88c076b56a476ab2da9f5eb87dcc")
     add_versions("v5.4.1", "08837ee7c50b98ca72d2c9e66510ca6640681db8800aa2d3b1fcd61ccc615113")
     add_versions("v5.4.0", "0f3698e9ba0110df0b636dbdd95706e7e28d443ff3dbaf5828926c23bfff778d")
     add_versions("v5.3.1", "f4020735fe4601de9d85cb335115568cce0e027a65e546dd8895081696d624bd")

+ 4 - 0
packages/a/async_simple/xmake.lua

@@ -16,6 +16,10 @@ package("async_simple")
 
     add_deps("cmake")
 
+    on_load("windows", function (package)
+        package:set("kind", "library", {headeronly = true})
+    end)
+
     on_install("windows", "linux", "macosx", function (package)
         if package:version():le("1.3") then
             io.replace("async_simple/CMakeLists.txt",

+ 3 - 0
packages/a/aws-c-cal/xmake.lua

@@ -6,6 +6,9 @@ package("aws-c-cal")
     add_urls("https://github.com/awslabs/aws-c-cal/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-cal.git")
 
+    add_versions("v0.7.2", "265938e3f1d2baa6a555ec6b0a27c74d3f505cbe7c96f7539ada42d5a848dee9")
+    add_versions("v0.7.1", "2fbdc04d72d1f3af28b80fe3917f03f20c0a62bc22b6c7b3450486ee9cbe77f6")
+    add_versions("v0.6.15", "67dda8049a59bbb70cdb166f46f741bc3a8443c86009a1ae4cb7842964a76e0d")
     add_versions("v0.6.14", "2326304b15bec45b212f6b738020c21afa41f9da295936687e103f9f2efb7b5e")
     add_versions("v0.6.12", "1ec1bc9a50df8d620f226480b420ec69d4fefd3792fb4e877aa7e350c2b174dc")
     add_versions("v0.6.11", "e1b0af88c14300e125e86ee010d4c731292851fff16cfb67eb6ba6036df2d648")

+ 1 - 0
packages/a/aws-c-common/xmake.lua

@@ -6,6 +6,7 @@ package("aws-c-common")
     add_urls("https://github.com/awslabs/aws-c-common/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-common.git")
 
+    add_versions("v0.9.23", "adf838daf6a60aa31268522105b03262d745f529bc981d3ac665424133d6f91b")
     add_versions("v0.9.19", "196430fda1bca2c77df7d9199232956d371a92f49ee48fd6c29ff969410ca0ed")
     add_versions("v0.9.17", "82f1a88494c5563892f0e048f0f56acfe7e10e5aa3fe9267b956dbabcc043440")
     add_versions("v0.9.15", "8f36c7a6a5d2e17365759d15591f800d3e76dcaa34a226389b92647cbd92393a")

+ 1 - 0
packages/a/aws-c-http/xmake.lua

@@ -6,6 +6,7 @@ package("aws-c-http")
     add_urls("https://github.com/awslabs/aws-c-http/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-http.git")
 
+    add_versions("v0.8.2", "a76ba75e59e1ac169df3ec00c0d1c453db1a4db85ee8acd3282a85ee63d6b31c")
     add_versions("v0.8.1", "83fb47e2d7956469bb328f16dea96663e96f8f20dc60dc4e9676b82804588530")
     add_versions("v0.7.12", "0f92f295c96e10aa9c1e66ac73c038ee9d9c61e1be7551e721ee0dab9c89fc6f")
 

+ 2 - 0
packages/a/aws-c-io/xmake.lua

@@ -6,6 +6,8 @@ package("aws-c-io")
     add_urls("https://github.com/awslabs/aws-c-io/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-io.git")
 
+    add_versions("v0.14.13", "1c228b1ed327e3a8518b89702ac0d93265cf50788038091e187c697cace7fa5a")
+    add_versions("v0.14.9", "3a3b7236f70209ac12b5bafa7dd81b75cc68b691a0aa0686d6d3b7e4bbe5fbc9")
     add_versions("v0.14.8", "d50e21fdbd5170a4071fe067ef4ce297b02cb058ad47e118305e25f6e07d9cf0")
     add_versions("v0.14.7", "ecf1f660d7d43913aa8a416be6a2027101ce87c3b241344342d608335b4df7d4")
     add_versions("v0.14.6", "bb3af305af748185b1c7b17afa343e54f2d494ccff397402f1b17041b0967865")

+ 1 - 0
packages/a/aws-c-s3/xmake.lua

@@ -6,6 +6,7 @@ package("aws-c-s3")
     add_urls("https://github.com/awslabs/aws-c-s3/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-s3.git")
 
+    add_versions("v0.6.0", "0a29dbb13ea003de3fd0d08a61fa705b1c753db4b35de9c464641432000f13ec")
     add_versions("v0.5.9", "7a337195b295406658d163b6dac64ff81f7556291b8a8e79e58ebaa2d55178ee")
     add_versions("v0.5.7", "2f2eab9bf90a319030fd3525953dc7ac00c8dc8c0d33e3f0338f2a3b554d3b6a")
     add_versions("v0.3.17", "72fd93a2f9a7d9f205d66890da249944b86f9528216dc0321be153bf19b2ecd5")

+ 3 - 0
packages/a/aws-crt-cpp/xmake.lua

@@ -6,6 +6,9 @@ package("aws-crt-cpp")
     add_urls("https://github.com/awslabs/aws-crt-cpp/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-crt-cpp.git")
 
+    add_versions("v0.27.4", "0554776a4cbbea016075f4a28698ff22818c5b948296171e1f76d0a787576f83")
+    add_versions("v0.27.2", "e17c82d7cc3b5e6e4300bc7e4794306e292b5281d212ead536000a8b5f5f1be4")
+    add_versions("v0.27.0", "e7601c8c5e6391013b6ad164d2dd7b970bf5dbb3693b9cc80c424bd6f42b79c8")
     add_versions("v0.26.11", "23acb2b14019182dd73fe6779ec266ee4d8937f19a99803da6407937fa22db7d")
     add_versions("v0.26.9", "5b5760d34fbbfcc971f561296e828de4c788750472fd9bd3ac20068a083620f2")
     add_versions("v0.26.8", "36ced4fb54c8eb7325b4576134e01f93bfaca2709565b5ad036d198d703e4c8f")

+ 60 - 0
packages/a/aws-lc/xmake.lua

@@ -0,0 +1,60 @@
+package("aws-lc")
+    set_homepage("https://github.com/aws/aws-lc")
+    set_description("AWS-LC is a general-purpose cryptographic library maintained by the AWS Cryptography team for AWS and their customers. It іs based on code from the Google BoringSSL project and the OpenSSL project.")
+
+    add_urls("https://github.com/aws/aws-lc/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/aws/aws-lc.git")
+
+    add_versions("v1.32.0", "67fbb78659055c2289c9068bb4ca1c0f1b6ca27700c7f6d34c6bc2f27cd46314")
+
+    add_configs("jitter", {description = "Enable FIPS entropy source: CPU Jitter", default = false, type = "boolean"})
+    add_configs("go", {description = "Enable go", default = false, type = "boolean"})
+    add_configs("perl", {description = "Enable perl", default = false, type = "boolean"})
+    add_configs("tools", {description = "Build tools", default = false, type = "boolean"})
+    
+    add_deps("cmake")
+    if is_plat("windows", "mingw") or is_host("windows") then
+        add_deps("nasm")
+    end
+
+    add_links("ssl", "crypto")
+
+    if is_plat("windows", "mingw") then
+        add_syslinks("ws2_32")
+    elseif is_plat("linux", "bsd") then
+        add_syslinks("pthread", "dl", "m")
+    end
+
+    on_load(function (package)
+        if package:config("go") then
+            package:add("deps", "go")
+        end
+        if package:config("perl") and package:is_plat() and (not package:is_precompiled()) then
+            package:add("deps", "strawberry-perl")
+        end
+    end)
+
+    on_install("!cross and windows|!arm64", function (package)
+        if package:config("shared") and package:is_plat("windows") then
+            package:add("defines", "BORINGSSL_SHARED_LIBRARY")
+        end
+
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_INSTALL_INCLUDEDIR=include",
+            "-DBUILD_LIBSSL=ON",
+        }
+
+        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, "-DENABLE_FIPS_ENTROPY_CPU_JITTER=" .. (package:config("jitter") and "ON" or "OFF"))
+        table.insert(configs, "-DDISABLE_GO=" .. (package:config("go") and "OFF" or "ON"))
+        table.insert(configs, "-DDISABLE_PERL=" .. (package:config("perl") and "OFF" or "ON"))
+        table.insert(configs, "-DBUILD_TOOL=" .. (package:config("tools") and "ON" or "OFF"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("SSL_new", {includes = "openssl/ssl.h"}))
+    end)

+ 1 - 0
packages/b/b2/xmake.lua

@@ -6,6 +6,7 @@ package("b2")
     set_license("BSL-1.0")
 
     add_urls("https://github.com/bfgroup/b2/releases/download/$(version)/b2-$(version).zip")
+    add_versions("5.2.1", "493102f1dd3f50f2892ce61ee91bd362720ab3fd38fa2ea6912bb2c09da9faa3")
     add_versions("5.1.0", "2bf9618a0baa132d22fdfebf6b40436329172e3ca4b7b8a33e06ed97cd603dad")
     add_versions("5.0.1", "5d3b98c63ed4d0f6114f660bd4eca5df32afa332310878b35c0d0faa04a3b6dd")
     add_versions("5.0.0", "d5f280f466b80b694ccb9696413375522d16e6f811918daeb44a917d5bd6c7b5")

+ 68 - 16
packages/b/backward-cpp/xmake.lua

@@ -1,43 +1,95 @@
 package("backward-cpp")
-
+    set_kind("library", {headeronly = true})
     set_homepage("https://github.com/bombela/backward-cpp")
     set_description("Backward is a beautiful stack trace pretty printer for C++.")
     set_license("MIT")
 
-    add_configs("bfd", {description = "Get stack trace with details about your sources by using libbfd from binutils.", default = false, type = "boolean"})
-
     add_urls("https://github.com/bombela/backward-cpp/archive/refs/tags/$(version).zip",
              "https://github.com/bombela/backward-cpp.git")
+
     add_versions("v1.6", "9b07e12656ab9af8779a84e06865233b9e30fadbb063bf94dd81d318081db8c2")
 
+    add_configs("stack_walking", {description = "Choose stack walking library to use.", default = nil, type = "string", values = {"unwind", "libunwind", "backtrace"}})
+    add_configs("stack_details", {description = "Choose stack details library to use.", default = nil, type = "string", values = {"dw", "bfd", "dwarf", "backtrace_symbol"}})
+
     if is_plat("mingw") then
-        add_patches("v1.6", path.join(os.scriptdir(), "patches", "v1.6", "link_to_imagehlp.patch"), "0a135b6d68970ff6609a3eb4deb2b10c317eee15ba980eb178b93402a97c957c")
+        add_patches("v1.6", "patches/v1.6/link_to_imagehlp.patch", "0a135b6d68970ff6609a3eb4deb2b10c317eee15ba980eb178b93402a97c957c")
 
         if is_arch("i386") then
-            add_patches("v1.6", path.join(os.scriptdir(), "patches", "v1.6", "fix_32bit_ssize_t_typedef.patch"), "fb372fe5934984aecb00b3153f737f63a542ff9359d159a9bcb79c5d54963b42")
+            add_patches("v1.6", "patches/v1.6/fix_32bit_ssize_t_typedef.patch", "fb372fe5934984aecb00b3153f737f63a542ff9359d159a9bcb79c5d54963b42")
         end
     end
 
+    if is_plat("windows", "mingw") then
+        add_syslinks("psapi", "dbghelp")
+    elseif is_plat("linux", "bsd", "android") then
+        add_syslinks("dl", "m")
+    end
+
     add_deps("cmake")
 
-    on_load("linux", "mingw@msys", "macos", function (package)
-        if package:config("bfd") then
-            package:add("deps", "binutils")
+    on_load(function (package)
+        local stack_walking = package:config("stack_walking")
+        if stack_walking == "libunwind" then
+            package:add("deps", "libunwind")
         end
-    end)
 
-    on_install("linux", "mingw", "macosx", "windows|!arm*", function (package)
-        if package:config("bfd") and package:is_plat("linux", "mingw@msys", "macos") then
+        local stack_details = package:config("stack_details")
+        if stack_details == "dwarf" then
+            package:add("deps", "libdwarf", "libelf")
+        elseif stack_details == "dw" then
+            package:add("deps", "elfutils")
+        elseif stack_details == "bfd" then
+            package:add("deps", "binutils")
             package:add("syslinks", "bfd")
-            package:add("defines", "BACKWARD_HAS_BFD=1")
         end
-        local configs = {"-DBACKWARD_TESTS=OFF"}
+
+        package:add("defines", "BACKWARD_HAS_UNWIND=" .. (stack_walking == "unwind" and "1" or "0"))
+        package:add("defines", "BACKWARD_HAS_LIBUNWIND=" .. (stack_walking == "libunwind" and "1" or "0"))
+        package:add("defines", "BACKWARD_HAS_BACKTRACE=" .. (stack_walking == "backtrace" and "1" or "0"))
+
+        package:add("defines", "BACKWARD_HAS_BACKTRACE_SYMBOL=" .. (stack_details == "backtrace_symbol" and "1" or "0"))
+        package:add("defines", "BACKWARD_HAS_DW=" .. (stack_details == "dw" and "1" or "0"))
+        package:add("defines", "BACKWARD_HAS_BFD=" .. (stack_details == "bfd" and "1" or "0"))
+        package:add("defines", "BACKWARD_HAS_DWARF=" .. (stack_details == "dwarf" and "1" or "0"))
+        package:add("defines", "BACKWARD_HAS_PDB_SYMBOL=" .. (is_plat("windows") and "1" or "0"))
+    end)
+
+    on_install("(!windows or windows|!arm64) and !android and !bsd and !wasm and !cross", function (package)
+        local configs = {"-DBACKWARD_TESTS=OFF", "-DSTACK_DETAILS_AUTO_DETECT=OFF"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
         table.insert(configs, "-DBACKWARD_SHARED=" .. (package:config("shared") and "ON" or "OFF"))
+        if package:is_plat("windows") then
+            table.insert(configs, "-DCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY=''")
+            if package:config("shared") then
+                table.insert(configs, "-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON")
+            end
+        end
+
+        local stack_walking = package:config("stack_walking")
+        local stack_details = package:config("stack_details")
+
+        table.insert(configs, "-DSTACK_WALKING_UNWIND=" .. ((stack_walking == "unwind") and "ON" or "OFF"))
+        table.insert(configs, "-DSTACK_WALKING_LIBUNWIND=" .. ((stack_walking == "libunwind") and "ON" or "OFF"))
+        table.insert(configs, "-DSTACK_WALKING_BACKTRACE=" .. ((stack_walking == "backtrace") and "ON" or "OFF"))
+        table.insert(configs, "-DSTACK_DETAILS_BACKTRACE_SYMBOL=" .. ((stack_walking == "backtrace_symbol") and "ON" or "OFF"))
+        table.insert(configs, "-DSTACK_DETAILS_DW=" .. ((stack_walking == "dw") and "ON" or "OFF"))
+        table.insert(configs, "-DSTACK_DETAILS_BFD=" .. ((stack_walking == "bfd") and "ON" or "OFF"))
+        table.insert(configs, "-DSTACK_DETAILS_DWARF=" .. ((stack_walking == "dwarf") and "ON" or "OFF"))
         import("package.tools.cmake").install(package, configs)
-        os.mv(package:installdir("include/*.hpp"), package:installdir("include/backward"))
+
+        io.replace("backward.hpp", [[#pragma comment(lib, "psapi.lib")]], "", {plain = true})
+        io.replace("backward.hpp", [[#pragma comment(lib, "dbghelp.lib")]], "", {plain = true})
+
+        os.cp(package:installdir("include/*.hpp"), package:installdir("include/backward"))
+        os.cp(package:installdir("include/*.hpp"), package:installdir("lib/backward"))
     end)
 
     on_test(function (package)
-        assert(package:has_cxxtypes("backward::SignalHandling", {configs = {languages = "c++11"}, includes = "backward/backward.hpp"}))
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                backward::Printer printer;
+                backward::StackTrace st;
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "backward.hpp"}))
     end)
-

+ 21 - 14
packages/b/bdwgc/xmake.lua

@@ -2,29 +2,36 @@ package("bdwgc")
     set_homepage("https://www.hboehm.info/gc/")
     set_description("The Boehm-Demers-Weiser conservative C/C++ Garbage Collector (bdwgc, also known as bdw-gc, boehm-gc, libgc)")
 
-    add_urls("https://github.com/ivmai/bdwgc/-/archive/$(version).tar.gz",
+    add_urls("https://github.com/ivmai/bdwgc/archive/refs/tags/$(version).tar.gz",
              "https://github.com/ivmai/bdwgc.git")
 
     add_versions("v8.2.6", "3bfc2b1dd385bfb46d2dab029211a66249a309795b6893f4e00554904999e40a")
     add_versions("v8.2.4", "18e63ab1428bd52e691da107a6a56651c161210b11fbe22e2aa3c31f7fa00ca5")
 
     add_deps("cmake")
+    add_deps("libatomic_ops")
 
-    on_install("macosx", "linux", "android", "iphoneos", function (package)
-        local configs = {}
+    if on_check then
+        on_check("android", function (package)
+            if package:is_arch("armeabi-v7a") then
+                local ndk = package:toolchain("ndk")
+                local ndk_sdkver = ndk:config("ndk_sdkver")
+                assert(ndk_sdkver and tonumber(ndk_sdkver) > 21, "package(bdwgc/armeabi-v7a): need ndk api level > 21")
+            end
+        end)
+    end
+
+    on_install("!wasm", function (package)
+        local configs = {"-Denable_docs=OFF", "-Dwith_libatomic_ops=ON"}
         table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
-        import("package.tools.cmake").install(package, configs)
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        import("package.tools.cmake").install(package, configs, {packagedeps = "libatomic_ops"})
+
+        if package:is_plat("windows", "mingw", "cygwin") then
+            package:add("defines", (package:config("shared") and "GC_DLL" or "GC_NOT_DLL"))
+        end
     end)
 
     on_test(function (package)
-        assert(package:has_cfuncs({test=[[
-        void test() {
-            GC_INIT();
-            int *ptr = GC_MALLOC(sizeof(int));
-            *ptr = 42;
-            printf("Value: %d\n", *ptr);
-            return 0;
-        }
-        ]]}),{configs = {includes = "gc.h"}})
+        assert(package:has_cfuncs("GC_init", {includes = "gc/gc.h"}))
     end)

+ 21 - 7
packages/b/bgfx/xmake.lua

@@ -8,13 +8,16 @@ package("bgfx")
     add_versions("7816", "5ecddbf4d51e2dda2a56ae8cafef4810e3a45d87")
     add_versions("8203", "484a5f0c25b53584a6b7fce0702a6bb580072d81")
     add_versions("8674", "f42134876038027667ef7e47c9a612dca1051ef2")
+    add_versions("8752", "61c770b0f5f57cf10547107974099e604358bf69")
 
     add_resources("7816", "bx", "https://github.com/bkaradzic/bx.git", "51f25ba638b9cb35eb2ac078f842a4bed0746d56")
     add_resources("8203", "bx", "https://github.com/bkaradzic/bx.git", "b9501348c596b68e5e655a8308df5c55f61ecd80")
     add_resources("8674", "bx", "https://github.com/bkaradzic/bx.git", "67dfdf34f642a4a807b75eb600f82f4f04027963")
+    add_resources("8752", "bx", "https://github.com/bkaradzic/bx.git", "0ec634e8fdf8c810f9911c686a8158088ae25379")
     add_resources("7816", "bimg", "https://github.com/bkaradzic/bimg.git", "8355d36befc90c1db82fca8e54f38bfb7eeb3530")
     add_resources("8203", "bimg", "https://github.com/bkaradzic/bimg.git", "663f724186e26caf46494e389ed82409106205fb")
     add_resources("8674", "bimg", "https://github.com/bkaradzic/bimg.git", "964a5b85483cdf59a30dc006e9bd8bbdde6cb2be")
+    add_resources("8752", "bimg", "https://github.com/bkaradzic/bimg.git", "61a7e9ebe7e33c821cf80b0542dcf23088446f5b")
 
     if is_plat("windows") then
         add_syslinks("user32", "gdi32", "psapi")
@@ -22,6 +25,8 @@ package("bgfx")
         add_cxxflags("/Zc:__cplusplus")
     elseif is_plat("macosx") then
         add_frameworks("Metal", "QuartzCore", "Cocoa", "IOKit")
+    elseif is_plat("iphoneos") then
+        add_frameworks("OpenGLES", "CoreGraphics", "Metal", "QuartzCore", "UIKit")
     elseif is_plat("linux") then
         add_deps("libx11")
         add_syslinks("GL", "pthread", "dl")
@@ -29,7 +34,7 @@ package("bgfx")
 
     add_deps("genie")
 
-    on_load("windows", "macosx", "linux", function (package)
+    on_load("windows", "macosx", "linux", "iphoneos", function (package)
         local suffix = package:debug() and "Debug" or "Release"
         for _, lib in ipairs({"bgfx", "bimg", "bx"}) do
             package:add("links", lib .. suffix)
@@ -37,12 +42,14 @@ package("bgfx")
         package:add("defines", "BX_CONFIG_DEBUG=" .. (package:debug() and "1" or "0"))
     end)
 
-    on_install("windows|native", "macosx", "linux", function (package)
+    on_install("windows|native", "macosx", "linux", "iphoneos", function (package)
         local bxdir = package:resourcefile("bx")
         local bimgdir = package:resourcefile("bimg")
         local genie = is_host("windows") and "genie.exe" or "genie"
-
-        local args = {"--with-tools"}
+        local args = {}
+        if is_plat("windows|native", "macosx", "linux") then
+            args = {"--with-tools"}
+        end
         if package:config("shared") then
             table.insert(args, "--with-shared-lib")
         end
@@ -85,6 +92,12 @@ package("bgfx")
                 configs = {"-C",
                            ".build/projects/gmake-" .. target,
                            "config=" .. mode:lower()}
+            elseif package:is_plat("iphoneos") then
+                target = "ios-arm64"
+                table.insert(args, "--gcc=" .. target)
+                configs = {"-C",
+                           ".build/projects/gmake-" .. target,
+                           "config=" .. mode:lower()}
             elseif package:is_plat("linux") then
                 table.insert(args, "--gcc=linux-gcc")
                 target = "linux" .. (package:is_arch("x86_64") and "64" or "32") .. "_gcc"
@@ -92,15 +105,16 @@ package("bgfx")
                            ".build/projects/gmake-linux",
                            "config=" .. mode:lower() .. (package:is_arch("x86_64") and "64" or "32")}
             end
-            table.insert(args, "gmake")
 
+            table.insert(args, "gmake")
+            table.insert(args, "-j" .. os.cpuinfo("ncpu"))
             local envs = make.buildenvs(package)
             envs.BX_DIR = bxdir
             envs.BIMG_DIR = bimgdir
             os.vrunv(genie, args, {envs = envs})
             make.build(package, configs)
 
-            if package:is_plat("macosx") then
+            if package:is_plat("macosx", "iphoneos") then
                 os.trycp(".build/" .. target .. "/bin/*.a|*example*", package:installdir("lib"))
                 os.trycp(".build/" .. target .. "/bin/*.dylib", package:installdir("lib"))
                 os.trycp(".build/" .. target .. "/bin/*|*.*", package:installdir("bin"))
@@ -118,5 +132,5 @@ package("bgfx")
             void test() {
                 bgfx::init();
             }
-        ]]}, {configs = {languages = "c++14"}, includes = "bgfx/bgfx.h"}))
+        ]]}, {configs = {languages = "c++17"}, includes = "bgfx/bgfx.h"}))
     end)

+ 26 - 1
packages/b/binutils/xmake.lua

@@ -10,7 +10,7 @@ package("binutils")
     add_versions("2.41", "ae9a5789e23459e59606e6714723f2d3ffc31c03174191ef0d015bdf06007450")
     add_versions("2.38", "e316477a914f567eccc34d5d29785b8b0f5a10208d36bbacedcc39048ecfe024")
     add_versions("2.34", "f00b0e8803dc9bab1e2165bd568528135be734df3fabf8d0161828cd56028952")
-    
+
     if is_plat("mingw") and is_subhost("msys") then
         add_extsources("pacman::binutils")
     elseif is_plat("linux") then
@@ -19,6 +19,31 @@ package("binutils")
         add_extsources("brew::binutils")
     end
 
+    on_fetch("@linux", "@macosx", "@msys", function (package, opt)
+        if opt.system then
+            if package:is_binary() then
+                local tools = {"ld", "ranlib", "objcopy"}
+                for _, tool in ipairs(tools) do
+                    if not package:find_tool(tool) then
+                        return
+                    end
+                end
+                return {}
+            elseif package:is_library() then
+                local libs = {"bfd", "ctf", "opcodes"}
+                local result
+                for _, lib in ipairs(libs) do
+                    local libinfo = package:find_package("system::" .. lib)
+                    if libinfo then
+                        result = result or {links = {}}
+                        table.insert(result.links, libinfo.links)
+                    end
+                end
+                return result
+            end
+        end
+    end)
+
     add_deps("bison")
 
     on_install("@linux", "@macosx", "@msys", function (package)

+ 29 - 0
packages/b/blake3/port/xmake.lua

@@ -0,0 +1,29 @@
+add_rules("mode.release", "mode.debug")
+
+target("blake3")
+    set_kind("$(kind)")
+    add_files("c/blake3.c", "c/blake3_dispatch.c", "c/blake3_portable.c")
+    add_headerfiles("c/blake3.h")
+
+    if is_arch("x86_64", "x64") then
+        if is_subhost("msys", "cygwin") then
+            add_files("c/*x86-64_windows_gnu.S")
+        elseif is_plat("windows") then
+            add_files("c/*x86-64_windows_msvc.asm")
+        else
+            add_files("c/*x86-64_unix.S")
+        end
+    elseif is_arch("x86", "i386") then
+        add_files("c/blake3_portable.c")
+        add_files("c/blake3_sse2.c")
+        add_files("c/blake3_sse41.c")
+        add_files("c/blake3_avx2.c")
+        add_files("c/blake3_avx512.c")
+    elseif is_arch("arm64", "arm64-v8a") then
+        add_files("c/blake3_neon.c")
+        add_defines("BLAKE3_USE_NEON=1")
+    end
+
+    if is_plat("windows") and is_kind("shared") then
+        add_rules("utils.symbols.export_all")
+    end

+ 10 - 37
packages/b/blake3/xmake.lua

@@ -5,49 +5,22 @@ package("blake3")
 
     add_urls("https://github.com/BLAKE3-team/BLAKE3/archive/refs/tags/$(version).tar.gz",
              "https://github.com/BLAKE3-team/BLAKE3.git")
+
+    add_versions("1.5.3", "ec9114480857334858e73b727199c573bfdbed6138a83be573f076d37e671fc1")
+    add_versions("1.5.2", "1bc38cd3cc501458054c3bb473e5e00338d6175121424040079025ea305ddef3")
     add_versions("1.5.1", "822cd37f70152e5985433d2c50c8f6b2ec83aaf11aa31be9fe71486a91744f37")
     add_versions("1.5.0", "f506140bc3af41d3432a4ce18b3b83b08eaa240e94ef161eb72b2e57cdc94c69")
     add_versions("1.3.3", "27d2bc4ee5945ba75434859521042c949463ee7514ff17aaef328e23ef83fec0")
     add_versions("1.3.1", "112becf0983b5c83efff07f20b458f2dbcdbd768fd46502e7ddd831b83550109")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "mingw|x86_64", "android", "iphoneos", "cross", function (package)
-        local configs = {}
-
-        io.writefile("xmake.lua", [[
-            add_rules("mode.release", "mode.debug")
-            target("blake3")
-                set_kind("$(kind)")
-                add_files("c/blake3.c", "c/blake3_dispatch.c", "c/blake3_portable.c")
-                add_headerfiles("c/blake3.h")
-
-                if is_arch("x86_64", "x64") then
-                    if is_subhost("msys", "cygwin") then
-                        add_files("c/*x86-64_windows_gnu.S")
-                    elseif is_plat("windows") then
-                        add_files("c/*x86-64_windows_msvc.asm")
-
-                        if is_kind("shared") then
-                            add_rules("utils.symbols.export_all")
-                        end
-                    else
-                        add_files("c/*x86-64_unix.S")
-                    end
-                elseif is_arch("x86", "i386") then
-                    add_files("c/blake3_portable.c")
-                    add_files("c/blake3_sse2.c")
-                    add_files("c/blake3_sse41.c")
-                    add_files("c/blake3_avx2.c")
-                    add_files("c/blake3_avx512.c")
-                elseif is_arch("arm64", "arm64-v8a") then
-                    add_files("c/blake3_neon.c")
-                    add_defines("BLAKE3_USE_NEON=1")
-                end
-        ]])
-
-        if package:config("shared") then
-            configs.kind = "shared"
-        end
+    if on_check then
+        on_check("mingw", function (package)
+            assert(package:is_arch("x86_64"), "package(blake3/mingw): Only suport x86_64 arch")
+        end)
+    end
 
+    on_install(function (package)
+        os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
         import("package.tools.xmake").install(package, configs)
     end)
 

+ 1 - 0
packages/b/blosc/xmake.lua

@@ -6,6 +6,7 @@ package("blosc")
 
     add_urls("https://github.com/Blosc/c-blosc/archive/refs/tags/$(version).tar.gz",
              "https://github.com/Blosc/c-blosc.git")
+    add_versions("v1.21.6", "9fcd60301aae28f97f1301b735f966cc19e7c49b6b4321b839b4579a0c156f38")
     add_versions("v1.21.5", "32e61961bbf81ffea6ff30e9d70fca36c86178afd3e3cfa13376adec8c687509")
     add_versions("v1.21.4", "e72bd03827b8564bbb3dc3ea0d0e689b4863871ce3861d946f2efd7a186ecf3e")
     add_versions("v1.21.1", "f387149eab24efa01c308e4cba0f59f64ccae57292ec9c794002232f7903b55b")

+ 22 - 0
packages/b/boost/patches/1.85.0/fix-v144.patch

@@ -0,0 +1,22 @@
+diff --git a/tools/build/src/tools/msvc.jam b/tools/build/src/tools/msvc.jam
+index 54a6ced..bac3932 100644
+--- a/tools/build/src/tools/msvc.jam
++++ b/tools/build/src/tools/msvc.jam
+@@ -1137,7 +1137,7 @@ local rule generate-setup-cmd ( version : command : parent : options * : cpu : g
+         }
+         else
+         {
+-            if [ MATCH "(14.3)" : $(version) ]
++            if [ MATCH "(14.[34])" : $(version) ]
+             {
+                 if $(.debug-configuration)
+                 {
+@@ -1316,7 +1316,7 @@ local rule configure-really ( version ? : options * )
+             # version from the path.
+             # FIXME: We currently detect both Microsoft Visual Studio 9.0 and
+             # 9.0express as 9.0 here.
+-            if [ MATCH "(MSVC\\\\14.3)" : $(command) ]
++            if [ MATCH "(MSVC\\\\14.[34])" : $(command) ]
+             {
+                 version = 14.3 ;
+             }

+ 131 - 54
packages/b/boost/xmake.lua

@@ -1,5 +1,4 @@
 package("boost")
-
     set_homepage("https://www.boost.org/")
     set_description("Collection of portable C++ source libraries.")
     set_license("BSL-1.0")
@@ -42,46 +41,52 @@ package("boost")
     end
 
     add_configs("pyver", {description = "python version x.y, etc. 3.10", default = "3.10"})
-    local libnames = {"fiber",
-                      "coroutine",
-                      "context",
-                      "regex",
-                      "system",
+    local libnames = {"atomic",
+                      "charconv",
+                      "chrono",
+                      "cobalt",
                       "container",
+                      "context",
+                      "contract",
+                      "coroutine",
+                      "date_time",
                       "exception",
-                      "timer",
-                      "atomic",
+                      "fiber",
+                      "filesystem",
                       "graph",
-                      "serialization",
-                      "random",
-                      "wave",
-                      "date_time",
-                      "locale",
-                      "iostreams",
-                      "program_options",
-                      "test",
-                      "chrono",
-                      "contract",
                       "graph_parallel",
+                      "headers",
+                      "iostreams",
                       "json",
+                      "locale",
                       "log",
-                      "thread",
-                      "filesystem",
                       "math",
                       "mpi",
                       "nowide",
+                      "program_options",
                       "python",
+                      "random",
+                      "regex",
+                      "serialization",
                       "stacktrace",
-                      "type_erasure"}
+                      "system",
+                      "test",
+                      "thread",
+                      "timer",
+                      "type_erasure",
+                      "url",
+                      "wave"}
 
     add_configs("all",          { description = "Enable all library modules support.",  default = false, type = "boolean"})
     add_configs("multi",        { description = "Enable multi-thread support.",  default = true, type = "boolean"})
     for _, libname in ipairs(libnames) do
         add_configs(libname,    { description = "Enable " .. libname .. " library.", default = (libname == "filesystem"), type = "boolean"})
     end
+    add_configs("zstd", {description = "enable zstd for iostreams", default = false, type = "boolean"})
+    add_configs("lzma", {description = "enable lzma for iostreams", default = false, type = "boolean"})
 
     on_load(function (package)
-        function get_linkname(package, libname)
+        local function get_linkname(package, libname)
             local linkname
             if package:is_plat("windows") then
                 linkname = (package:config("shared") and "boost_" or "libboost_") .. libname
@@ -100,11 +105,11 @@ package("boost")
                     if package:debug() then
                         linkname = linkname .. "-gd"
                     end
+                elseif package:config("asan") or vs_runtime == "MTd" then
+                    linkname = linkname .. "-sgd"
                 elseif vs_runtime == "MT" then
                     linkname = linkname .. "-s"
-                elseif vs_runtime == "MTd" then
-                    linkname = linkname .. "-sgd"
-                elseif vs_runtime == "MDd" then
+                elseif package:config("asan") or vs_runtime == "MDd" then
                     linkname = linkname .. "-gd"
                 end
             else
@@ -115,20 +120,18 @@ package("boost")
             return linkname
         end
 
-        if not package:is_plat("windows") then
-            -- we need the fixed link order
-            local sublibs = {log = {"log_setup", "log"},
-                            python = {"python", "numpy"},
-                            stacktrace = {"stacktrace_backtrace", "stacktrace_basic"}}
-            for _, libname in ipairs(libnames) do
-                local libs = sublibs[libname]
-                if libs then
-                    for _, lib in ipairs(libs) do
-                        package:add("links", get_linkname(package, lib))
-                    end
-                else
-                    package:add("links", get_linkname(package, libname))
+        -- we need the fixed link order
+        local sublibs = {log = {"log_setup", "log"},
+                        python = {"python", "numpy"},
+                        stacktrace = {"stacktrace_backtrace", "stacktrace_basic"}}
+        for _, libname in ipairs(libnames) do
+            local libs = sublibs[libname]
+            if libs then
+                for _, lib in ipairs(libs) do
+                    package:add("links", get_linkname(package, lib))
                 end
+            else
+                package:add("links", get_linkname(package, libname))
             end
         end
         -- disable auto-link all libs
@@ -142,12 +145,31 @@ package("boost")
             end
             package:add("deps", "python " .. package:config("pyver") .. ".x", {configs = {headeronly = true}})
         end
+        if package:is_plat("linux") then
+            if package:config("zstd") then
+                package:add("deps", "zstd")
+            end
+            if package:config("lzma") then
+                package:add("deps", "xz")
+            end
+        end
+
+        if package:is_plat("windows") and package:version():le("1.85.0") then
+            local vs_toolset = package:toolchain("msvc"):config("vs_toolset")
+            if vs_toolset then
+                local vs_toolset_ver = import("core.base.semver").new(vs_toolset)
+                local minor = vs_toolset_ver:minor()
+                if minor and minor >= 40 then
+                    package:add("patches", "<=1.85.0", "patches/1.85.0/fix-v144.patch", "1ba99cb2e2f03a4ba489a32596c62e1310b6c73ba4d19afa8796bcf180c84422")
+                end
+            end
+        end
     end)
 
     on_install("macosx", "linux", "windows", "bsd", "mingw", "cross", function (package)
         import("core.base.option")
 
-        function get_compiler(package, toolchain)
+        local function get_compiler(package, toolchain)
             local cxx = package:build_getenv("cxx")
             if package:is_plat("macosx") then
                 -- we uses ld/clang++ for link stdc++ for shared libraries
@@ -236,6 +258,9 @@ package("boost")
             if package:has_tool("cxx", "clang_cl") then
                 build_toolset = "clang-win"
                 build_toolchain = package:toolchain("clang-cl")
+            elseif package:has_tool("cxx", "clang") then
+                build_toolset = "clang-win"
+                build_toolchain = package:toolchain("clang") or package:toolchain("llvm")
             elseif package:has_tool("cxx", "cl") then
                 build_toolset = "msvc"
                 build_toolchain = package:toolchain("msvc")
@@ -245,9 +270,23 @@ package("boost")
             end
         end
 
+        local function config_deppath(file, depname, rule)
+                local dep = package:dep(depname)
+                local info = dep:fetch({external = false})
+                if info then
+                    local usingstr = format("\nusing %s : : <include>\"%s\" <search>\"%s\" ;",rule, info.includedirs[1], info.linkdirs[1])              
+                    file:write(usingstr)
+                end
+        end
         local file = io.open("user-config.jam", "w")
         if file then
             file:write(get_compiler(package, build_toolchain))
+            if package:config("lzma") then
+                config_deppath(file, "xz", "lzma")
+            end
+            if package:config("zstd") then
+                config_deppath(file, "zstd", "zstd")
+            end
             file:close()
         end
         os.vrun("./b2 headers")
@@ -263,8 +302,6 @@ package("boost")
             "-q", -- quit on first error
             "--layout=tagged-1.66", -- prevent -x64 suffix in case cmake can't find it
             "--user-config=user-config.jam",
-            "-sNO_LZMA=1",
-            "-sNO_ZSTD=1",
             "install",
             "threading=" .. (package:config("multi") and "multi" or "single"),
             "debug-symbols=" .. (package:debug() and "on" or "off"),
@@ -273,6 +310,13 @@ package("boost")
             "runtime-debugging=" .. (package:is_debug() and "on" or "off")
         }
 
+        if not package:config("lzma") then
+            table.insert(argv, "-sNO_LZMA=1")
+        end
+        if not package:config("zstd") then
+            table.insert(argv, "-sNO_ZSTD=1")
+        end
+
         if package:config("lto") then
             table.insert(argv, "lto=on")
         end
@@ -355,19 +399,6 @@ package("boost")
         if package:is_plat("linux") then
             table.insert(argv, "pch=off")
         end
-
-        if package:is_plat("windows") and package:version():le("1.85.0") then
-            local vs_toolset = build_toolchain:config("vs_toolset")
-            local vs_toolset_ver = import("core.base.semver").new(vs_toolset)
-            local minor = vs_toolset_ver:minor()
-            if minor and minor >= 40 then
-                io.replace("tools/build/src/engine/config_toolset.bat", "vc143", "vc144", {plain = true})
-                io.replace("tools/build/src/engine/build.bat", "vc143", "vc144", {plain = true})
-                io.replace("tools/build/src/engine/guess_toolset.bat", "vc143", "vc144", {plain = true})
-                io.replace("tools/build/src/tools/intel-win.jam", "14.3", "14.4", {plain = true})
-                io.replace("tools/build/src/tools/msvc.jam", "14.3", "14.4", {plain = true})
-            end
-        end
         local ok = os.execv("./b2", argv, {envs = runenvs, try = true, stdout = "boost-log.txt"})
         if ok ~= 0 then
             raise("boost build failed, please check log in " .. path.join(os.curdir(), "boost-log.txt"))
@@ -386,6 +417,14 @@ package("boost")
             }
         ]]}, {configs = {languages = "c++14"}}))
 
+        assert(package:check_cxxsnippets({test = [[
+            #include <boost/unordered_map.hpp>
+            static void test() {
+                boost::unordered_map<std::string, int> map;
+                map["2"] = 2;
+            }
+        ]]}, {configs = {languages = "c++14"}}))
+        
         if package:config("date_time") then
             assert(package:check_cxxsnippets({test = [[
                 #include <boost/date_time/gregorian/gregorian.hpp>
@@ -394,4 +433,42 @@ package("boost")
                 }
             ]]}, {configs = {languages = "c++14"}}))
         end
+
+        if package:config("filesystem") then
+            assert(package:check_cxxsnippets({test = [[
+                #include <boost/filesystem.hpp>
+                #include <iostream>
+                static void test() {
+                    boost::filesystem::path path("/path/to/directory");
+                    if (boost::filesystem::exists(path)) {
+                        std::cout << "Directory exists" << std::endl;
+                    } else {
+                        std::cout << "Directory does not exist" << std::endl;
+                    }
+                }
+            ]]}, {configs = {languages = "c++14"}}))
+        end
+
+        if package:config("iostreams") then
+            if package:config("zstd") then
+                assert(package:check_cxxsnippets({test = [[
+                    #include <boost/iostreams/filter/zstd.hpp>
+                    #include <boost/iostreams/filtering_stream.hpp>
+                    static void test() {
+                        boost::iostreams::filtering_ostream out;
+                        out.push(boost::iostreams::zstd_compressor());
+                    }
+                ]]}, {configs = {languages = "c++14"}}))
+            end
+            if package:config("lzma") then
+                assert(package:check_cxxsnippets({test = [[
+                    #include <boost/iostreams/filter/lzma.hpp>
+                    #include <boost/iostreams/filtering_stream.hpp>
+                    static void test() {
+                        boost::iostreams::filtering_ostream out;
+                        out.push(boost::iostreams::lzma_compressor());
+                    }
+                ]]}, {configs = {languages = "c++14"}}))
+            end
+        end
     end)

+ 1 - 0
packages/b/botan/xmake.lua

@@ -6,6 +6,7 @@ package("botan")
     set_urls("https://github.com/randombit/botan/archive/refs/tags/$(version).tar.gz",
              "https://github.com/randombit/botan.git")
 
+    add_versions("3.5.0", "7d91d3349e6029e1a6929a50ab587f9fd4e29a9af3f3d698553451365564001f")
     add_versions("3.4.0", "6ef2a16a0527b1cfc9648a644877f7b95c4d07e8ef237273b030c623418c5e5b")
 
     add_configs("tools", {description = "Build tools.", default = false, type = "boolean"})

+ 28 - 0
packages/b/bredis/xmake.lua

@@ -0,0 +1,28 @@
+package("bredis")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/basiliscos/cpp-bredis")
+    set_description("Boost::ASIO low-level redis client (connector)")
+    set_license("MIT")
+
+    add_urls("https://github.com/basiliscos/cpp-bredis/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/basiliscos/cpp-bredis.git")
+
+    add_versions("v0.12", "c5a6aa58835d5ef8cd97c4ae7e677f6237ef4ee01ae4a609293e2351c01db6cc")
+
+    add_deps("boost")
+
+    if is_plat("windows", "mingw") then
+        add_syslinks("ws2_32")
+    end
+
+    on_install("macosx", "linux", "windows", "bsd", "mingw", "cross", function (package)
+        os.cp("include", package:installdir())
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                bredis::bredis_category x;
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "bredis/Connection.hpp"}))
+    end)

+ 25 - 4
packages/b/bvh/xmake.lua

@@ -1,18 +1,39 @@
 package("bvh")
 
-    set_kind("library", {headeronly = true})
     set_homepage("https://github.com/madmann91/bvh")
     set_description("A modern C++ BVH construction and traversal library")
     set_license("MIT")
 
     add_urls("https://github.com/madmann91/bvh.git")
     add_versions("2023.6.30", "578b1e8035743d0a97fcac802de81622c54f28e3")
+    add_versions("2024.7.8", "77a08cac234bae46abbb5e78c73e8f3c158051d0")
 
-    on_install(function (package)
-        if not package:is_plat("cross") then
-            package:add("cxxflags", "-march=native")
+    add_configs("shared", {description = "Build shared library.", default = true, type = "boolean"})
+    add_configs("c_api",  {description = "Builds the C API library wrapper", default = true, type = "boolean"})
+
+    if is_plat("bsd") then
+        add_syslinks("pthread")
+    end
+    on_load(function (package)
+        if not package:config("c_api") then
+            package:set("kind", "library", {headeronly = true})
         end
+    end)
+
+    on_install(function (package)
         os.cp("src/bvh", package:installdir("include"))
+        if package:config("c_api") then
+            io.writefile("xmake.lua", [[
+                add_rules("mode.debug", "mode.release")
+                set_languages("c++20")
+                target("bvh_c")
+                    set_kind("shared")
+                    add_defines("BVH_BUILD_API")
+                    add_files("src/bvh/v2/c_api/bvh.cpp")
+                    add_includedirs("src")
+            ]])
+            import("package.tools.xmake").install(package)
+        end
     end)
 
     on_test(function (package)

+ 34 - 0
packages/b/bytepack/xmake.lua

@@ -0,0 +1,34 @@
+package("bytepack")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/farukeryilmaz/bytepack")
+    set_description("C++ Binary Serialization Made Easy: Header-only, configurable endianness, cross-platform, no IDL, no exceptions, and no macros")
+    set_license("MIT")
+
+    add_urls("https://github.com/farukeryilmaz/bytepack/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/farukeryilmaz/bytepack.git")
+
+    add_versions("v0.1.0", "7761cf51736d4e1a65ca69323182930967846eaed04adddfd316f59a5c2eb244")
+
+    on_check(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include <algorithm>
+            #include <string>
+            void test() {
+                std::string s{"xmake"};
+                std::ranges::reverse(s.begin(), s.end());
+            }
+        ]]}, {configs = {languages = "c++20"}}), "package(bytepack) Require at least C++20.")
+    end)
+
+    on_install(function (package)
+        os.cp("include", package:installdir())
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include <bytepack/bytepack.hpp>
+            void test() {
+                bytepack::binary_stream serializationStream(64);
+            }
+        ]]}, {configs = {languages = "c++20"}}))
+    end)

+ 135 - 0
packages/c/c-ares/patches/1.29.0/macosx-header.patch

@@ -0,0 +1,135 @@
+diff --git a/src/lib/thirdparty/apple/dnsinfo.h b/src/lib/thirdparty/apple/dnsinfo.h
+new file mode 100644
+index 0000000..e6a9ed1
+--- /dev/null
++++ b/src/lib/thirdparty/apple/dnsinfo.h
+@@ -0,0 +1,128 @@
++/*
++ * Copyright (c) 2004-2006, 2008, 2009, 2011-2013, 2015-2018 Apple Inc. All rights reserved.
++ *
++ * @APPLE_LICENSE_HEADER_START@
++ *
++ * This file contains Original Code and/or Modifications of Original Code
++ * as defined in and that are subject to the Apple Public Source License
++ * Version 2.0 (the 'License'). You may not use this file except in
++ * compliance with the License. Please obtain a copy of the License at
++ * http://www.opensource.apple.com/apsl/ and read it before using this
++ * file.
++ *
++ * The Original Code and all software distributed under the License are
++ * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
++ * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
++ * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
++ * Please see the License for the specific language governing rights and
++ * limitations under the License.
++ *
++ * @APPLE_LICENSE_HEADER_END@
++ */
++
++#ifndef __DNSINFO_H__
++#define __DNSINFO_H__
++
++/*
++ * These routines provide access to the systems DNS configuration
++ */
++
++#include <os/availability.h>
++#include <sys/cdefs.h>
++#include <stdint.h>
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
++
++#define	DNSINFO_VERSION		20170629
++
++#define DEFAULT_SEARCH_ORDER    200000   /* search order for the "default" resolver domain name */
++
++#define	DNS_PTR(type, name)				\
++	union {						\
++		type		name;			\
++		uint64_t	_ ## name ## _p;	\
++	}
++
++#define	DNS_VAR(type, name)				\
++	type	name
++
++
++#pragma pack(4)
++typedef struct {
++	struct in_addr	address;
++	struct in_addr	mask;
++} dns_sortaddr_t;
++#pragma pack()
++
++
++#pragma pack(4)
++typedef struct {
++	DNS_PTR(char *,			domain);	/* domain */
++	DNS_VAR(int32_t,		n_nameserver);	/* # nameserver */
++	DNS_PTR(struct sockaddr **,	nameserver);
++	DNS_VAR(uint16_t,		port);		/* port (in host byte order) */
++	DNS_VAR(int32_t,		n_search);	/* # search */
++	DNS_PTR(char **,		search);
++	DNS_VAR(int32_t,		n_sortaddr);	/* # sortaddr */
++	DNS_PTR(dns_sortaddr_t **,	sortaddr);
++	DNS_PTR(char *,			options);	/* options */
++	DNS_VAR(uint32_t,		timeout);	/* timeout */
++	DNS_VAR(uint32_t,		search_order);	/* search_order */
++	DNS_VAR(uint32_t,		if_index);
++	DNS_VAR(uint32_t,		flags);
++	DNS_VAR(uint32_t,		reach_flags);	/* SCNetworkReachabilityFlags */
++	DNS_VAR(uint32_t,		service_identifier);
++	DNS_PTR(char *,			cid);		/* configuration identifer */
++	DNS_PTR(char *,			if_name);	/* if_index interface name */
++} dns_resolver_t;
++#pragma pack()
++
++
++#define DNS_RESOLVER_FLAGS_REQUEST_A_RECORDS	0x0002		/* always requesting for A dns records in queries */
++#define DNS_RESOLVER_FLAGS_REQUEST_AAAA_RECORDS	0x0004		/* always requesting for AAAA dns records in queries */
++
++#define	DNS_RESOLVER_FLAGS_REQUEST_ALL_RECORDS	\
++	(DNS_RESOLVER_FLAGS_REQUEST_A_RECORDS | DNS_RESOLVER_FLAGS_REQUEST_AAAA_RECORDS)
++
++#define DNS_RESOLVER_FLAGS_SCOPED		0x1000		/* configuration is for scoped questions */
++#define DNS_RESOLVER_FLAGS_SERVICE_SPECIFIC	0x2000		/* configuration is service-specific */
++#define DNS_RESOLVER_FLAGS_SUPPLEMENTAL		0x4000		/* supplemental match configuration */
++
++
++#pragma pack(4)
++typedef struct {
++	DNS_VAR(int32_t,		n_resolver);		/* resolver configurations */
++	DNS_PTR(dns_resolver_t **,	resolver);
++	DNS_VAR(int32_t,		n_scoped_resolver);	/* "scoped" resolver configurations */
++	DNS_PTR(dns_resolver_t **,	scoped_resolver);
++	DNS_VAR(uint64_t,		generation);
++	DNS_VAR(int32_t,		n_service_specific_resolver);
++	DNS_PTR(dns_resolver_t **,	service_specific_resolver);
++	DNS_VAR(uint32_t,		version);
++} dns_config_t;
++#pragma pack()
++
++
++__BEGIN_DECLS
++
++/*
++ * DNS configuration access APIs
++ */
++const char *
++dns_configuration_notify_key    (void)				API_AVAILABLE(macos(10.4), ios(2.0));
++
++dns_config_t *
++dns_configuration_copy		(void)				API_AVAILABLE(macos(10.4), ios(2.0));
++
++void
++dns_configuration_free		(dns_config_t	*config)	API_AVAILABLE(macos(10.4), ios(2.0));
++
++void
++_dns_configuration_ack		(dns_config_t	*config,
++				 const char	*bundle_id)	API_AVAILABLE(macos(10.8), ios(6.0));
++
++__END_DECLS
++
++#endif	/* __DNSINFO_H__ */
+\ No newline at end of file

+ 24 - 15
packages/c/c-ares/xmake.lua

@@ -1,12 +1,20 @@
 package("c-ares")
-
     set_homepage("https://c-ares.org/")
     set_description("A C library for asynchronous DNS requests")
+    set_license("MIT")
 
     add_urls("https://c-ares.org/download/c-ares-$(version).tar.gz")
-    add_urls("https://github.com/c-ares/c-ares/releases/download/cares-$(version).tar.gz", {version = function (version)
-        return version:gsub("%.", "_") .. "/c-ares-" .. version
+    add_urls("https://github.com/c-ares/c-ares/releases/download/$(version).tar.gz", {version = function (version)
+        if version:ge("1.30.0") then
+            return "v" .. version .. "/c-ares-" .. version
+        else
+            return "cares-" .. version:gsub("%.", "_") .. "/c-ares-" .. version
+        end
     end})
+
+    add_versions("1.31.0", "0167a33dba96ca8de29f3f598b1e6cabe531799269fd63d0153aa0e6f5efeabd")
+    add_versions("1.30.0", "4fea312112021bcef081203b1ea020109842feb58cd8a36a3d3f7e0d8bc1138c")
+    add_versions("1.29.0", "0b89fa425b825c4c7bc708494f374ae69340e4d1fdc64523bdbb2750bfc02ea7")
     add_versions("1.28.1", "675a69fc54ddbf42e6830bc671eeb6cd89eeca43828eb413243fd2c0a760809d")
     add_versions("1.27.0", "0a72be66959955c43e2af2fbd03418e82a2bd5464604ec9a62147e37aceb420b")
     add_versions("1.16.1", "d08312d0ecc3bd48eee0a4cc0d2137c9f194e0a28de2028928c0f6cae85f86ce")
@@ -17,12 +25,11 @@ package("c-ares")
     add_versions("1.18.1", "1a7d52a8a84a9fbffb1be9133c0f6e17217d91ea5a6fa61f6b4729cda78ebbcf")
     add_versions("1.19.0", "bfceba37e23fd531293829002cac0401ef49a6dc55923f7f92236585b7ad1dd3")
 
-    add_patches("1.18.1",
-                path.join(os.scriptdir(), "patches", "1.18.1", "guard-imported-lib.patch" ),
-                "3cb03453af9e1477cfe926b1c03b2e3fbb8200a72888b590439e69e2d4253609")
-    add_patches("1.18.1",
-                path.join(os.scriptdir(), "patches", "1.18.1", "skip-docs.patch" ),
-                "bbe389b4aab052c2e6845e87d1f56a8366bf18c944f5e5e6f05a2cf105dbe680")
+    add_patches("1.29.0", "patches/1.29.0/macosx-header.patch", "389c12e54d82f0e8d5dc38dc15bbade12592509627680498774159a0cb32faf2")
+    add_patches("1.18.1", "patches/1.18.1/guard-imported-lib.patch", "3cb03453af9e1477cfe926b1c03b2e3fbb8200a72888b590439e69e2d4253609")
+    add_patches("1.18.1", "patches/1.18.1/skip-docs.patch", "bbe389b4aab052c2e6845e87d1f56a8366bf18c944f5e5e6f05a2cf105dbe680")
+
+    add_configs("tools", {description = "Build tools", default = false, type = "boolean"})
 
     if is_plat("macosx") then
         add_syslinks("resolv")
@@ -30,12 +37,14 @@ package("c-ares")
 
     add_deps("cmake")
 
-    on_install("linux", "macosx", "windows", function (package)
-        local configs = {"-DCARES_BUILD_TESTS=OFF", "-DCARES_BUILD_TOOLS=OFF"}
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
-        table.insert(configs, "-DCARES_SHARED=" .. (package:config("shared") and "ON" or "OFF"))
-        table.insert(configs, "-DCARES_STATIC=" .. (package:config("shared") and "OFF" or "ON"))
-        if not package:config("shared") then
+    on_install(function (package)
+        local shared = package:config("shared")
+        local configs = {"-DCARES_BUILD_TESTS=OFF"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        table.insert(configs, "-DCARES_SHARED=" .. (shared and "ON" or "OFF"))
+        table.insert(configs, "-DCARES_STATIC=" .. (shared and "OFF" or "ON"))
+        table.insert(configs, "-DCARES_BUILD_TOOLS=" .. (package:config("tools") and "ON" or "OFF"))
+        if not shared then
             package:add("defines", "CARES_STATICLIB")
         end
         import("package.tools.cmake").install(package, configs)

+ 1 - 0
packages/c/c-blosc2/xmake.lua

@@ -6,6 +6,7 @@ package("c-blosc2")
     add_urls("https://github.com/Blosc/c-blosc2/archive/refs/tags/$(version).tar.gz",
              "https://github.com/Blosc/c-blosc2.git")
 
+    add_versions("v2.15.0", "1e7d9d099963ad0123ddd76b2b715b5aa1ea4b95c491d3a11508e487ebab7307")
     add_versions("v2.14.4", "b5533c79aacc9ac152c80760ed1295a6608938780c3e1eecd7e53ea72ad986b0")
     add_versions("v2.14.3", "2b94c2014ba455e8136e16bf0738ec64c246fcc1a77122d824257caf64aaf441")
     add_versions("v2.13.2", "f2adcd9615f138d1bb16dc27feadab1bb1eab01d77e5e2323d14ad4ca8c3ca21")

+ 29 - 0
packages/c/c4core/patches/0.2.1/cmake-deps.patch

@@ -0,0 +1,29 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ea146a8..31373e5 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -69,14 +69,12 @@ set(C4CORE_SRC_FILES
+     c4/windows_push.hpp
+     c4/c4core.natvis
+     #
+-    c4/ext/debugbreak/debugbreak.h
+     c4/ext/rng/rng.hpp
+     c4/ext/sg14/inplace_function.h
+     )
+ if(C4CORE_WITH_FASTFLOAT)
+     list(APPEND C4CORE_SRC_FILES
+         c4/ext/fast_float.hpp
+-        c4/ext/fast_float_all.h
+         )
+ endif()
+ set(C4CORE_AMALGAMATED ${C4CORE_SRC_DIR}/../src_singleheader/c4/c4core_all.hpp)
+@@ -97,6 +95,9 @@ c4_add_library(c4core
+ )
+ if(NOT C4CORE_WITH_FASTFLOAT)
+     target_compile_definitions(c4core PUBLIC -DC4CORE_NO_FAST_FLOAT)
++else()
++    find_package(FastFloat REQUIRED CONFIG)
++    target_link_libraries(c4core PUBLIC "FastFloat::fast_float")
+ endif()
+ if(C4CORE_NO_DEBUG_BREAK)
+     target_compile_definitions(c4core PUBLIC -DC4_NO_DEBUG_BREAK)

+ 56 - 0
packages/c/c4core/xmake.lua

@@ -0,0 +1,56 @@
+package("c4core")
+    set_homepage("https://github.com/biojppm/c4core")
+    set_description("C++ utilities")
+    set_license("MIT")
+
+    add_urls("https://github.com/biojppm/c4core/releases/download/v$(version)/c4core-$(version)-src.zip",
+             "https://github.com/biojppm/c4core.git")
+
+    add_versions("0.2.1", "81ff1c0d15e24da6d76fdd1b6fdd903fa23d0df7c82e564f993147a4dac88773")
+
+    add_configs("fast_float", {description = "use fastfloat to parse floats", default = false, type = "boolean"})
+    add_configs("debugbreak", {description = "use debug break in debug builds", default = false, type = "boolean"})
+
+    add_deps("cmake")
+
+    on_load(function (package)
+        if package:config("fast_float") then
+            package:add("deps", "fast_float")
+        else
+            package:add("defines", "C4CORE_NO_FAST_FLOAT")
+        end
+        if package:config("debugbreak") then
+            package:add("deps", "debugbreak")
+        else
+            package:add("defines", "C4_NO_DEBUG_BREAK")
+        end
+
+        if package:config("fast_float") or package:config("debugbreak") then
+            package:add("patches", "0.2.1", "patches/0.2.1/cmake-deps.patch", "92c0c6510cc3b8cbd10b575b5b9d0defa2a19d19f24c1618a73d4f4636da4c9b")
+        end
+    end)
+
+    on_install(function (package)
+        if package:config("fast_float") then
+            io.replace("src/c4/ext/fast_float.hpp", "c4/ext/fast_float_all.h", "fast_float/fast_float.h", {plain = true})
+        end
+        if package:config("debugbreak") then
+            io.replace("src/c4/error.hpp", "c4/ext/debugbreak/debugbreak.h", "debugbreak.h", {plain = true})
+        end
+
+        local configs = {}
+        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, "-DC4CORE_WITH_FASTFLOAT=" .. (package:config("fast_float") and "ON" or "OFF"))
+        table.insert(configs, "-DC4CORE_NO_DEBUG_BREAK=" .. (package:config("debugbreak") and "OFF" or "ON"))
+        import("package.tools.cmake").install(package, configs, {packagedeps = "debugbreak"})
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                double value;
+                c4::from_chars("52.4354", &value);
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "c4/charconv.hpp"}))
+    end)

+ 1 - 0
packages/c/cargs/xmake.lua

@@ -5,6 +5,7 @@ package("cargs")
 
     add_urls("https://github.com/likle/cargs/archive/refs/tags/$(version).tar.gz",
              "https://github.com/likle/cargs.git")
+    add_versions("v1.2.0", "0b33379e3d3c8cb3e22f33d3e1a260adcd366970868bc9b7c47237f24188ff25")
     add_versions("v1.1.0", "87e7da5b539f574d48529870cb0620ef5a244a5ee2eac73cc7559dedc04128ca")
     add_versions("v1.0.3", "ddba25bd35e9c6c75bc706c126001b8ce8e084d40ef37050e6aa6963e836eb8b")
 

+ 33 - 0
packages/c/cdt/xmake.lua

@@ -0,0 +1,33 @@
+package("cdt")
+    set_homepage("https://artem-ogre.github.io/CDT/")
+    set_description("Constrained Delaunay Triangulation (C++)")
+    set_license("MPL-2.0")
+
+    add_urls("https://github.com/artem-ogre/CDT/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/artem-ogre/CDT.git")
+
+    add_versions("1.4.1", "86df99eb5f02a73eeb8c6ea45765eed0d7f206e8d4d9f6479f77e3c590ae5bb3")
+
+    add_deps("cmake")
+
+    on_install(function (package)
+        os.cd("CDT")
+        local configs = {"-DCDT_USE_AS_COMPILED_LIBRARY=ON"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package: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)
+        assert(package:check_cxxsnippets({test = [[
+            #include <CDT.h>
+            using namespace CDT;
+            void test() {
+                auto cdt = Triangulation<double>{};
+                cdt.insertVertices({
+                    {0.0, 1e38},
+                    {1.0, 1e38},
+                });
+            }
+        ]]}, {configs = {languages = "cxx17"}}))
+    end)

+ 1 - 0
packages/c/cgif/xmake.lua

@@ -6,6 +6,7 @@ package("cgif")
     add_urls("https://github.com/dloebl/cgif/archive/refs/tags/$(version).tar.gz",
              "https://github.com/dloebl/cgif.git")
 
+    add_versions("v0.4.1", "8666f9c5f8123d1c22137a6dd714502a330377fb74e2007621926fe4258529d5")
     add_versions("v0.4.0", "130ff8a604f047449e81ddddf818bd0e03826b5f468e989b02726b16b7d4742e")
 
     if is_plat("linux") then

+ 1 - 0
packages/c/cgltf/xmake.lua

@@ -6,6 +6,7 @@ package("cgltf")
 
     add_urls("https://github.com/jkuhlmann/cgltf/archive/refs/tags/$(version).tar.gz",
              "https://github.com/jkuhlmann/cgltf.git")
+    add_versions("v1.14", "2f3c97a6b989943f50e7d7f228688f6558fe37b1411c13a350e3560d061707d8")
     add_versions("v1.13", "053d5320097334767486c6e33d01dd1b1c6224eac82aac2d720f4ec456d8c50b")
 
     on_install(function (package)

+ 1 - 0
packages/c/cgraph/xmake.lua

@@ -7,6 +7,7 @@ package("cgraph")
     add_urls("https://github.com/ChunelFeng/CGraph/archive/refs/tags/$(version).tar.gz",
              "https://github.com/ChunelFeng/CGraph.git")
 
+    add_versions("v2.6.0", "1b055ee86f0340f2c35b4ed40c4a3b4cc05081b115b0fb634d778671018648f2")
     add_versions("v2.5.4", "fd5a53dc0d7e3fc11050ccc13fac987196ad42184a4e244b9d5e5d698b1cb101")
 
     if is_plat("windows") then

+ 2 - 2
packages/c/chipmunk2d/xmake.lua

@@ -22,7 +22,7 @@ package("chipmunk2d")
 
     add_deps("cmake")
 
-    if is_plat("linux") then
+    if is_plat("linux", "bsd") then
         add_syslinks("pthread", "m")
     elseif is_plat("android") then
         add_syslinks("log", "m")
@@ -42,7 +42,7 @@ package("chipmunk2d")
         end
     end)
 
-    on_install("windows", "linux", "macosx", "iphoneos", "mingw", "android", "wasm", function (package)
+    on_install("windows", "linux", "macosx", "iphoneos", "mingw", "android", "wasm", "bsd",function (package)
         local configs = {"-DBUILD_DEMOS=OFF"}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
         if package:config("shared") then

+ 1 - 0
packages/c/cimg/xmake.lua

@@ -9,6 +9,7 @@ package("cimg")
     end})
     add_urls("https://github.com/greyclab/cimg.git")
 
+    add_versions("v3.4.0", "987bddc3a98ec684c2ffc7968881adb2626f5b09c90e6102947b3c4acd0de931")
     add_versions("v3.3.6", "7bb6621c38458152f3d1cae3f020e4ca6a314076cb7b4b5d6bbf324ad3d0ab88")
     add_versions("v3.2.6", "1fcca9a7a453aa278660c10d54c6db9b4c614b6a29250adeb231e95a0be209e7")
 

+ 5 - 4
packages/c/cinatra/xmake.lua

@@ -4,13 +4,14 @@ package("cinatra")
     set_description("modern c++(c++20), cross-platform, header-only, easy to use http framework")
     set_license("MIT")
 
-    add_urls("https://github.com/qicosmos/cinatra/archive/refs/tags/v$(version).tar.gz",
+    add_urls("https://github.com/qicosmos/cinatra/archive/refs/tags/$(version).tar.gz",
              "https://github.com/qicosmos/cinatra.git")
 
-    add_versions("0.8.9", "007dc38aceedf42d03a9c05dc9aa6d2f303456ae7ce1100800df7a565b83b510")
-    add_versions("0.8.0", "4e14d5206408eccb43b3e810d3a1fe228fbc7496ded8a16b041ed12cbcce4479")
+    add_versions("0.9.1", "d1a8018e41caabbda2c380175b632e3c9c10b519727f6b998eda4e3f4ede84bd")
+    add_versions("v0.8.9", "007dc38aceedf42d03a9c05dc9aa6d2f303456ae7ce1100800df7a565b83b510")
+    add_versions("v0.8.0", "4e14d5206408eccb43b3e810d3a1fe228fbc7496ded8a16b041ed12cbcce4479")
 
-    add_patches("0.8.9", "patches/0.8.9/windows-move.patch", "c913ed0e9044ffc0ced40516245ec0d55262f8eabd30244d9911c3f0427a60f5")
+    add_patches(">=0.8.9", "patches/0.8.9/windows-move.patch", "c913ed0e9044ffc0ced40516245ec0d55262f8eabd30244d9911c3f0427a60f5")
 
     add_configs("ssl", {description = "Enable SSL", default = false, type = "boolean"})
     add_configs("gzip", {description = "Enable GZIP", default = false, type = "boolean"})

+ 1 - 0
packages/c/clove-unit/xmake.lua

@@ -7,6 +7,7 @@ package("clove-unit")
     add_urls("https://github.com/fdefelici/clove-unit/archive/refs/tags/$(version).tar.gz",
              "https://github.com/fdefelici/clove-unit.git")
 
+    add_versions("v2.4.5", "e4db72612adf00d7c7c9512cb9990768f5f3e62a72039929b78ba17d5a6f4308")
     add_versions("v2.4.4", "25e611e1d4286c73d9cce7bbc99f83e00629551602351fec1edcbb669243e047")
 
     on_install(function (package)

+ 7 - 0
packages/c/cmake/xmake.lua

@@ -21,6 +21,7 @@ package("cmake")
         add_versions("3.28.1", "0e0942bb5ed7ee1aeda0c00b3cb7738f2590865f1d69fe1d5212cbc26fc040a5")
         add_versions("3.28.3", "d9e2c22fec920a4d1f6b0d0683c035d799475c179c91e41e1a7fbfab610a0305")
         add_versions("3.29.2", "0d670b59dddd064d24cf8c386abf3590bda2642bb169e11534cf1e3d1ae3a76a")
+        add_versions("3.30.1", "51e12618829b811bba6f033ee8f39f6192da1b6abb20d82a7899d5134e879a4c")
     elseif is_host("linux") then
         if os.arch():find("arm64.*") then
             add_urls("https://cmake.org/files/v$(version)-aarch64.tar.gz", {version = function (version)
@@ -34,6 +35,7 @@ package("cmake")
             add_versions("3.28.1", "e84d88e46ed8c85fbe259bcd4ca07df7a928df87e84013e0da34d91b01a25d71")
             add_versions("3.28.3", "bbf023139f944cefe731d944f2864d8ea3ea0c4f9310b46ac72b3cb4e314b023")
             add_versions("3.29.2", "ca883c6dc3ce9eebd833804f0f940ecbbff603520cfd169ee58916dbbc23c2b8")
+            add_versions("3.30.1", "ad234996f8750f11d7bd0d17b03f55c434816adf1f1671aab9e8bab21a43286a")
         else
             add_urls("https://cmake.org/files/v$(version)-x86_64.tar.gz", {version = function (version)
                     return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-linux" or "-Linux")
@@ -52,6 +54,7 @@ package("cmake")
             add_versions("3.28.1", "f76398c24362ad87bad1a3d6f1e8f4377632b5b1c360c4ba1fd7cd205fd9d8d4")
             add_versions("3.28.3", "804d231460ab3c8b556a42d2660af4ac7a0e21c98a7f8ee3318a74b4a9a187a6")
             add_versions("3.29.2", "0416c70cf88e8f92efcbfe292e181bc09ead7d70e29ab37b697522c01121eab5")
+            add_versions("3.30.1", "ac31f077ef3378641fa25a3cb980d21b2f083982d3149a8f2eb9154f2b53696b")
         end
     elseif is_host("windows") then
         if os.arch() == "x64" then
@@ -72,6 +75,7 @@ package("cmake")
             add_versions("3.28.1", "671332249bc7cc7424523d6c2b5edd3e3de90a43b8b82e8782f42da4fe4c562d")
             add_versions("3.28.3", "cac7916f7e1e73a25de857704c94fd5b72ba9fe2f055356b5602d2f960e50e5b")
             add_versions("3.29.2", "86b5de51f60a0e9d62be4d8ca76ea467d154083d356fcc9af1409606be341cd8")
+            add_versions("3.30.1", "cf7788ff9d92812da194847d4ec874fc576f34079987d0f20c96cd09e2a16220")
         elseif os.arch() == "x86" then
             add_urls("https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
                     return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. (version:ge("3.20") and "-windows-i386" or "-win32-x86")
@@ -90,6 +94,7 @@ package("cmake")
             add_versions("3.28.1", "e9591cfdb1d394eee84acdecf880cbd91cf0707dfd0d58bf3796b88475f46cb9")
             add_versions("3.28.3", "411812b6b29ac793faf69bdbd36c612f72659363c5491b9f0a478915db3fc58c")
             add_versions("3.29.2", "e51b281c9dfd1498834729b33bf49fc668ad1dadbc2eaba7b693d0f7d748450d")
+            add_versions("3.30.1", "f5fb1d93b82e9a5fbd5853d4b17a130605f0b4ed13a655d1371c2d6d55f9261d")
         elseif os.arch() == "arm64" then
             add_urls("https://cmake.org/files/v$(version).zip", {excludes = {"*/doc/*"}, version = function (version)
                     return table.concat(table.slice((version):split('%.'), 1, 2), '.') .. "/cmake-" .. version .. "-windows-arm64"
@@ -100,6 +105,7 @@ package("cmake")
             add_versions("3.28.1", "a839b8d32c11b24f078142b5b8c3361a955ebc65788f0f0353b2121fe2f74e49")
             add_versions("3.28.3", "cfe023b7e82812ef802fb1ec619f6cfa2fdcb58ee61165fc315086286fe9cdcc")
             add_versions("3.29.2", "5b16a0db4966c04582c40131038de49d5b0161fcd950dc9e955753dfab858882")
+            add_versions("3.30.1", "02b433f70aa549449be2d53046d0179590bf3b6290d9fda3fbbb23f96a4f2802")
         end
     else
         add_urls("https://github.com/Kitware/CMake/releases/download/v$(version)/cmake-$(version).tar.gz")
@@ -112,6 +118,7 @@ package("cmake")
         add_versions("3.28.1", "15e94f83e647f7d620a140a7a5da76349fc47a1bfed66d0f5cdee8e7344079ad")
         add_versions("3.28.3", "72b7570e5c8593de6ac4ab433b73eab18c5fb328880460c86ce32608141ad5c1")
         add_versions("3.29.2", "36db4b6926aab741ba6e4b2ea2d99c9193222132308b4dc824d4123cb730352e")
+        add_versions("3.30.1", "df9b3c53e3ce84c3c1b7c253e5ceff7d8d1f084ff0673d048f260e04ccb346e1")
     end
 
     if is_plat("mingw") and is_subhost("msys") then

+ 21 - 0
packages/c/cmdparser/xmake.lua

@@ -0,0 +1,21 @@
+package("cmdparser")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/FlorianRappl/CmdParser")
+    set_description("A simple and lightweight command line parser using C++11.")
+    set_license("MIT")
+
+    add_urls("https://github.com/FlorianRappl/CmdParser.git")
+
+    add_versions("2024.02.13", "0c28173f7914c0e47ff12b48f556baa8a5dd0721")
+
+    on_install(function (package)
+        os.cp("cmdparser.hpp", package:installdir("include"))
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test(int argc, char** argv) {
+                cli::Parser parser(argc, argv);
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = {"cmdparser.hpp"}}))
+    end)

+ 22 - 0
packages/c/commata/xmake.lua

@@ -0,0 +1,22 @@
+package("commata")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://furfurylic.github.io/commata/CommataSpecification.xml")
+    set_description("Just another header-only C++17 CSV parser")
+    set_license("Unlicense")
+
+    add_urls("https://github.com/furfurylic/commata/archive/refs/tags/$(version)-rc.2.zip",
+             "https://github.com/furfurylic/commata.git")
+    add_versions("v1.0.0", "5f9ef542d10d5d04d296e609ae8931e09a157761c86630d71b2f397c6a205a75")
+
+    on_install(function (package)
+        os.cp("include", package:installdir())
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            using commata::stored_table;
+            void test() {
+                stored_table table;
+            }
+        ]]}, {configs = {languages = "c++17"}, includes = "commata/stored_table.hpp"}))
+    end)

+ 10 - 0
packages/c/cosmocc/xmake.lua

@@ -5,9 +5,19 @@ package("cosmocc")
 
     add_urls("https://cosmo.zip/pub/cosmocc/cosmocc-$(version).zip",
              "https://github.com/xmake-mirror/cosmopolitan/releases/download/$(version)/cosmocc-$(version).zip")
+
     add_versions("3.2.4", "d2fa6dbf6f987310494581deff5b915dbdc5ca701f20f7613bb0dcf1de2ee511")
     add_versions("3.3.2", "a695012ffbeac5e26e3c4a740debc15273f47e9a8bdc55e8b76a623154d5914b")
     add_versions("3.3.4", "98e5b361c525603f5296351e0c11820fd25908b52fe1ce8ff394d66b1537a259")
+    add_versions("3.3.5", "db78fd8d3f8706e9dff4be72bf71d37a3f12062f212f407e1c33bc4af3780dd0")
+    add_versions("3.3.6", "26e3449357f31b82489774ef5c2d502a711bb711d4faf99a5fd6c96328a1c205")
+    add_versions("3.3.7", "638c2c2d9ba968c240e296b3cf901ac60d3a6d9205eff68356673db47a94d836")
+    add_versions("3.3.8", "61208872dea249fb9621e950a15f438d2db70b0ca3aa3e91f5e8d0b078fc328d")
+    add_versions("3.3.9", "0a8a781710f58373077a91ca16a2fafc30a0bc3982fb9b9c5583f045833eca36")
+    add_versions("3.3.10", "00d61c1215667314f66e288c8285bae38cc6137fca083e5bba6c74e3a52439de")
+    add_versions("3.4.0", "475e24b84a18973312433f5280e267acbe1b4dac1b2e2ebb3cfce46051a8c08c")
+    add_versions("3.5.0", "6c8443078ce43bf15bb835c8317d6d44e694e1572023263359c082afb7ec2224")
+    add_versions("3.5.1", "ea1f47cd4ead6ce3038551be164ad357bd45a4b5b7824871c561d2af23f871d6")
 
     on_load("@windows|x64", function (package)
         package:add("deps", "msys2")

+ 29 - 0
packages/c/cpp-async/xmake.lua

@@ -0,0 +1,29 @@
+package("cpp-async")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/microsoft/cpp-async")
+    set_description("Support types and functions for C++20 coroutines")
+    set_license("MIT")
+
+    add_urls("https://github.com/microsoft/cpp-async/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/microsoft/cpp-async.git")
+
+    add_versions("v1.1.0", "168681dfd999b7546d623f20d18072ce280502cf0bf3a829c2aec58741062a23")
+
+    on_check(function (package)
+        assert(package:has_cxxincludes("coroutine", {configs = {languages = "c++20"}}), "package(cpp-async) Require at least C++20.")
+    end)
+
+    on_install(function (package)
+        os.cp("include/async", package:installdir("include"))
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include <async/task.h>
+            #include <coroutine>
+            inline async::task<void> do_async()
+            {
+                co_return;
+            }
+        ]]}, {configs = {languages = "c++20"}}))
+    end)

+ 22 - 0
packages/c/cpp-channel/xmake.lua

@@ -0,0 +1,22 @@
+package("cpp-channel")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/andreiavrammsd/cpp-channel")
+    set_description("Thread-safe container for sharing data between threads")
+    set_license("MIT")
+
+    add_urls("https://github.com/andreiavrammsd/cpp-channel/archive/refs/tags/$(version).zip",
+             "https://github.com/andreiavrammsd/cpp-channel.git")
+
+    add_versions("v0.8.2", "36f234c40d59b90356d37b558a8918a86b128030ad5d42d8c6a627cfe81c8624")
+
+    on_install(function (package)
+        os.cp("include", package:installdir())
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                msd::channel<int> chan;
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "msd/channel.hpp"}))
+    end)

+ 1 - 0
packages/c/cpp-sort/xmake.lua

@@ -7,6 +7,7 @@ package("cpp-sort")
     add_urls("https://github.com/Morwenn/cpp-sort/archive/refs/tags/$(version).tar.gz",
              "https://github.com/Morwenn/cpp-sort.git")
 
+    add_versions("1.16.0", "54eb65de5655ce58719d45616f29e4b9060135b9cc8b526bcfc9f5434975ea8c")
     add_versions("1.10.0", "48951cac0051d48fee286c3bc02804975f9d83269d80c10dfc5589e76a542765")
     add_versions("1.11.0", "a53b3ea240d6f8d8ea9da0a7e0c8e313cf5e714daedf1617473ab34f111ffeec")
     add_versions("1.12.0", "70877c1993fa1e5eb53974ac30aeb713448c206344379f193dec8ee887c23998")

+ 6 - 1
packages/c/cppcheck/xmake.lua

@@ -4,18 +4,23 @@ package("cppcheck")
     set_description("A static analysis tool for C/C++ code")
 
     add_urls("https://github.com/danmar/cppcheck/archive/refs/tags/$(version).tar.gz")
+    add_versions("2.14.2", "9c3acea5f489336bd83a8ea33917a9a04a80c56d874bf270287e7de27acf2d00")
+    add_versions("2.14.1", "22d1403fbc3158f35b5216d7b0a50bbaf0c80bf6663933a71f65cc4fc307ff3d")
     add_versions("2.13.4", "d6ea064ebab76c6aa000795440479767d8d814dd29405918df4c1bbfcd6cb86c")
     add_versions("2.13.0", "8229afe1dddc3ed893248b8a723b428dc221ea014fbc76e6289840857c03d450")
 
     add_deps("cmake")
 
     on_install("windows|x64", "macosx", "linux", "msys", function (package)
-        local configs = {}
+        io.replace("cmake/findDependencies.cmake", "find_program(LIBXML2_XMLLINT_EXECUTABLE xmllint)", "", {plain = true})
+
+        local configs = {"-DLIBXML2_XMLLINT_EXECUTABLE=OFF"}
         if package:is_plat("windows") then
             table.insert(configs, "-DCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY=''")
         end
 
         io.replace("cmake/compileroptions.cmake", "add_compile_options($<$<NOT:$<CONFIG:Debug>>:/MD>)", "", {plain = true})
+        io.replace("cmake/compileroptions.cmake", "add_compile_options($<$<NOT:$<CONFIG:Debug>>:/MDd>)", "", {plain = true})
         import("package.tools.cmake").install(package, configs)
     end)
 

+ 49 - 0
packages/c/cppp-reiconv/patches/2.1.0/cmake.patch

@@ -0,0 +1,49 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 6d3c761..0689164 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -48,7 +48,7 @@ if(MSVC)
+ endif()
+ 
+ # Generate header file for build
+-if(WIN32)
++if(WIN32 AND BUILD_SHARED_LIBS)
+     set(DLL_VARIABLE "__declspec(dllexport)")
+ elseif(HAVE_VISIBILITY)
+     set(DLL_VARIABLE "__attribute__((__visibility__(\"default\")))")
+@@ -59,7 +59,7 @@ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/include/cppp/reiconv.hpp.in" "${outp
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/windows/libcppp-reiconv.rc.in" "${CMAKE_BINARY_DIR}/windows/libcppp-reiconv.rc")
+ 
+ # Generate header file for install
+-if(WIN32)
++if(WIN32 AND BUILD_SHARED_LIBS)
+     set(DLL_VARIABLE "__declspec(dllimport)")
+ else()
+     set(DLL_VARIABLE "")
+@@ -83,7 +83,7 @@ cppp_build_library(${PROJECT_NAME} "${CMAKE_CURRENT_SOURCE_DIR}/lib/iconv.cpp" T
+ 
+ # Include test suite.
+ include("tests/tests.cmake")
+-
++if (NOT BUILD_SHARED_LIBS)
+ # Install
+ # Static
+ # PERMISSIONS 0644
+@@ -94,7 +94,7 @@ install(TARGETS libcppp-reiconv.static
+         ARCHIVE DESTINATION "${install_staticdir}"
+         RUNTIME DESTINATION "${install_bindir}"
+         INCLUDES DESTINATION "${install_includedir}" )
+-
++else()
+ # Shared
+ # PERMISSIONS 0755
+ install(TARGETS libcppp-reiconv.shared
+@@ -105,7 +105,7 @@ install(TARGETS libcppp-reiconv.shared
+         ARCHIVE DESTINATION "${install_staticdir}"
+         RUNTIME DESTINATION "${install_bindir}"
+         INCLUDES DESTINATION "${install_includedir}" )
+-
++endif()
+ # Includes
+ # install includes
+ # PERMISSIONS 0644

+ 19 - 19
packages/c/cppp-reiconv/xmake.lua

@@ -1,39 +1,39 @@
 package("cppp-reiconv")
-
     set_homepage("https://github.com/cppp-project/cppp-reiconv")
     set_description("A character set conversion library based on GNU LIBICONV.")
+    set_license("LGPL-3.0")
 
-    add_urls("https://github.com/cppp-project/cppp-reiconv/releases/download/$(version)/cppp-reiconv-$(version).zip")
+    add_urls("https://github.com/cppp-project/cppp-reiconv/releases/download/$(version)/cppp-reiconv-$(version).zip",
+             "https://github.com/cppp-project/cppp-reiconv.git")
 
     add_versions("v2.1.0", "3e539785a437843793c5ce2f8a72cb08f2b543cba11635b06db25cfc6d9cc3a4")
 
+    add_patches("2.1.0", "patches/2.1.0/cmake.patch", "21bd2fcb5874f8774af1360aaac51073b67bf4c754096f0fe162d66632c1b7f9")
+
     add_deps("cmake", "python")
 
     on_install(function (package)
-        local configs = {}
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        local configs = {"-DENABLE_TEST=OFF", "-DENABLE_EXTRA=ON"}
+        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, "-DENABLE_EXTRA=ON")
-        table.insert(configs, "-DENABLE_TEST=OFF")
         import("package.tools.cmake").install(package, configs)
     end)
 
     on_test(function (package)
         assert(package:check_cxxsnippets({test = [[
-        #include <cppp/reiconv.hpp>
-        #include <iostream>
-        #include <cstdlib>
-        using namespace cppp::base::reiconv;
+            #include <cppp/reiconv.hpp>
+            #include <iostream>
+            #include <cstdlib>
+            using namespace cppp::base::reiconv;
 
-        void test()
-        {
-            iconv_t cd = iconv_open("UTF-8", "UTF-8");
-            if (cd == (iconv_t)(-1))
+            void test()
             {
-                abort();
+                iconv_t cd = iconv_open("UTF-8", "UTF-8");
+                if (cd == (iconv_t)(-1))
+                {
+                    abort();
+                }
+                iconv_close(cd);
             }
-            iconv_close(cd);
-        }
-    ]]}, {configs = {languages = "c++14"}}))
+        ]]}, {configs = {languages = "c++14"}}))
     end)
-

+ 6 - 1
packages/c/cpptrace/xmake.lua

@@ -6,6 +6,8 @@ package("cpptrace")
     add_urls("https://github.com/jeremy-rifkin/cpptrace/archive/refs/tags/$(version).tar.gz",
              "https://github.com/jeremy-rifkin/cpptrace.git")
 
+    add_versions("v0.6.2", "02a0540b5b1be0788565f48b065b456d3eab81ae2323a50e75ed36449a0143ed")
+    add_versions("v0.6.1", "4bb478eedbe4b2c0093ef7af4f64795304850e03312e658076b25ef8d6019c75")
     add_versions("v0.6.0", "7c2996f03d15f61016bc81fe7fa5220b1cc42498333c5c0e699ad2f96b918b96")
     add_versions("v0.5.4", "bab0f76330f90c445216ccade1a3ff29c9c4bbd44805be34d52095cd95b02df4")
     add_versions("v0.5.2", "d148998e175b9c69ffb4383ab321a0d27487392e4eee3f39441d35b6856c8f78")
@@ -20,8 +22,11 @@ package("cpptrace")
 
     if is_plat("windows") then
         add_syslinks("dbghelp")
-    elseif is_plat("linux", "macosx") then
+    elseif is_plat("macosx") then
         add_deps("libdwarf")
+    elseif is_plat("linux") then
+        add_deps("libdwarf")
+        add_syslinks("dl")
     elseif is_plat("mingw") then
         add_deps("libdwarf")
         add_syslinks("dbghelp")

+ 1 - 0
packages/c/croaring/xmake.lua

@@ -6,6 +6,7 @@ package("croaring")
     add_urls("https://github.com/RoaringBitmap/CRoaring/archive/refs/tags/$(version).tar.gz",
              "https://github.com/RoaringBitmap/CRoaring.git")
 
+    add_versions("v4.1.0", "0596c6e22bcccb56f38260142b435f1f72aef7721fa370fd9f2b88380245fc1d")
     add_versions("v4.0.0", "a8b98db3800cd10979561a1388e4e970886a24015bd6cfabb08ba7917f541b0d")
     add_versions("v3.0.1", "a1cac9489b1c806c5594073e5db36475e247604282a47b650f4166c185ab061f")
     add_versions("v2.0.4", "3c962c196ba28abf2639067f2e2fd25879744ba98152a4e0e74556ca515eda33")

+ 1 - 0
packages/c/crossguid/xmake.lua

@@ -19,6 +19,7 @@ package("crossguid")
     add_deps("cmake")
 
     on_install("windows", "linux", "macosx", "iphoneos", "android", "mingw", function (package)
+        io.replace(path.translate("include/crossguid/guid.hpp"), "#include <functional>", "#include <cstdint>\n#include<functional>", { plain = true })
         local configs = {"-DCROSSGUID_TESTS=OFF"}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
         import("package.tools.cmake").install(package, configs, {buildir = "build"})

+ 19 - 0
packages/c/crstl/xmake.lua

@@ -0,0 +1,19 @@
+package("crstl")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/redorav/crstl")
+    set_description("STL whose aim is to compile fast, run fast, and be clear to read")
+
+    add_urls("https://github.com/redorav/crstl.git")
+    add_versions("2024.06.04", "0c31b6c76ff74521b2f50b1643f8f3d207184c6c")
+
+    on_install(function (package)
+        os.cp("include", package:installdir())
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                crstl::fixed_vector<int, 32> v;
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = {"crstl/fixed_vector.h"}}))
+    end)

+ 64 - 0
packages/c/cserialport/xmake.lua

@@ -0,0 +1,64 @@
+package("cserialport")
+    set_homepage("https://github.com/itas109/CSerialPort")
+    set_description("CSerialPort is a lightweight cross-platform serial port library based on C++, which can easy to read and write serial port on multiple operating system.")
+    set_license("LGPL-3.0")
+   
+    add_urls("https://github.com/itas109/CSerialPort/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/itas109/CSerialPort.git")
+
+    add_versions("v4.3.1", "376f41866be65ddfed91f3d0fea91aaaf5ca7e645f9b9cfcdaa0a9182a0bb3ac")
+
+    add_configs("c_api", {description = "Build C API", default = false, type = "boolean"})
+
+    if is_plat("windows", "mingw") then
+        add_syslinks("advapi32")
+    elseif is_plat("linux", "bsd") then
+        add_syslinks("pthread")
+    elseif is_plat("macosx") then
+        add_frameworks("Foundation", "IOKit")
+    end
+
+    add_deps("cmake")
+
+    if on_check then
+        on_check("windows", function (package)
+            import("core.base.semver")
+
+            if package:is_arch("arm.*") then
+                local vs_toolset = package:toolchain("msvc"):config("vs_toolset")
+                assert(vs_toolset and semver.new(vs_toolset):minor() >= 30, "package(cserialport/arm): need vs_toolset >= v143")
+            end
+        end)
+    end
+
+    on_install("!cross and !iphoneos and !android", function (package)
+        local configs = {"-DCSERIALPORT_BUILD_EXAMPLES=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)
+
+        if package:config("c_api") then
+            io.replace("bindings/c/cserialport.h", "#define C_DLL_EXPORT __declspec(dllexport)", "#define C_DLL_EXPORT", {plain = true})
+            io.writefile("xmake.lua", [[
+                add_rules("mode.debug", "mode.release")
+                target("cserialport-c")
+                    set_kind("static")
+                    add_files("bindings/c/cserialport.cpp")
+                    add_headerfiles("bindings/c/cserialport.h")
+                    add_includedirs("include")
+            ]])
+            import("package.tools.xmake").install(package)
+        end
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                itas109::CSerialPort serialPort;
+            }
+        ]]}, {configs = {languages = "c++11"}, includes = "CSerialPort/SerialPort.h"}))
+
+        if package:config("c_api") then
+            assert(package:has_cfuncs("CSerialPortInit", {includes = "cserialport.h"}))
+        end
+    end)

+ 2 - 0
packages/c/csvparser/xmake.lua

@@ -4,6 +4,8 @@ package("csvparser")
     set_description("A modern C++ library for reading, writing, and analyzing CSV (and similar) files (by vincentlaucsb)")
 
     add_urls("https://github.com/vincentlaucsb/csv-parser/archive/refs/tags/$(version).zip")
+    add_versions("2.3.0", "17eb8e1a4f2f8cdc6679329e4626de608bb33a830d5614184a21b5d8838bbbb0")
+    add_versions("2.2.3", "83170169f2af38b171d7c3e127d9411fe381988a4b8910465f7d1c4c6169e815")
     add_versions("2.2.2", "e8fb8693680f2a0931ef28cb67a1ea007123201c74073fc588c18f5151e29cfd")
     add_versions("2.2.1", "96fd6a468f56fc157a11fcbc5cece6da952b06190837c46465d091eff674a813")
     add_versions("2.2.0", "b7744b28f3ac5f92c17379f323733cb8872ea48ef2347842604dc54285d60640")

+ 30 - 0
packages/c/ctpg/xmake.lua

@@ -0,0 +1,30 @@
+package("ctpg")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/peter-winter/ctpg")
+    set_description("Compile Time Parser Generator.")
+    set_license("MIT")
+
+    add_urls("https://github.com/peter-winter/ctpg/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/peter-winter/ctpg.git")
+
+    add_versions("v1.3.7", "6cc7c34de4983e21070599fd5693b65ef08cd5c8f42612e43b47eda723623429")
+
+    add_deps("cmake")
+
+    on_install(function (package)
+        import("package.tools.cmake").install(package, {
+            "-DBUILD_TESTING=OFF"
+        })
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            using namespace ctpg;
+            using namespace ctpg::buffers;
+
+            constexpr nterm<int> list("list");
+            constexpr char number_pattern[] = "[1-9][0-9]*";
+            constexpr regex_term<number_pattern> number("number");
+            void test() {}
+        ]]}, {configs = {languages = "c++17"}, includes = "ctpg/ctpg.hpp"}))
+    end)

+ 6 - 6
packages/c/cxxgraph/xmake.lua

@@ -7,16 +7,16 @@ package("cxxgraph")
     add_urls("https://github.com/ZigRazor/CXXGraph/archive/refs/tags/$(version).tar.gz",
              "https://github.com/ZigRazor/CXXGraph.git")
 
+    add_versions("v4.1.0", "1f6601abfcb692f35bfe14f2a34b2302f70213a257b0f7d541a110d6bd460040")
     add_versions("v3.1.0", "54838d0d35a6f2685cf45e50e888146aef3c1a10fbbdddb939b3985c7953087a")
 
     if on_check then
-        on_check("windows", function (package)
-            import("core.tool.toolchain")
-
-            local msvc = toolchain.load("msvc", {plat = package:plat(), arch = package:arch()})
-            if msvc then
-                local vs = msvc:config("vs")
+        on_check("windows", "wasm", function (package)
+            if package:is_plat("windows") then
+                local vs = package:toolchain("msvc"):config("vs")
                 assert(vs and tonumber(vs) >= 2022, "package(cxxgraph): need vs >= 2022")
+            elseif package:is_plat("wasm") then
+                assert(not package:version("4.1.0"), "package(cxxgraph/4.1.0): Unsupported platform")
             end
         end)
     end

+ 5 - 0
packages/d/dartsim/xmake.lua

@@ -6,7 +6,9 @@ package("dartsim")
 
     add_urls("https://github.com/dartsim/dart/archive/refs/tags/$(version).tar.gz",
              "https://github.com/dartsim/dart.git")
+    add_versions("v6.14.4", "f5fc7f5cb1269cc127a1ff69be26247b9f3617ce04ff1c80c0f3f6abc7d9ab70")
     add_versions("v6.13.0", "4da3ff8cee056252a558b05625a5ff29b21e71f2995e6d7f789abbf6261895f7")
+    add_versions("v6.14.2", "6bbaf452f8182b97bf22adeab6cc7f3dc1cd2733358543131fa130e07c0860fc")
 
     add_configs("dartpy", {description = "Build dartpy interface.", default = false, type = "boolean"})
     local configdeps = {bullet3 = "Bullet",
@@ -34,6 +36,9 @@ package("dartsim")
                 package:add("deps", config)
             end
         end
+        if package:config("dartpy") then
+            package:add("deps", "python 3.x")
+        end
     end)
 
     on_install("windows|x64", "linux", "macosx", function (package)

+ 41 - 0
packages/d/datatype99/xmake.lua

@@ -0,0 +1,41 @@
+package("datatype99")
+    set_kind("library", { headeronly = true })
+    set_homepage("https://github.com/Hirrolot/datatype99")
+    set_description("Algebraic data types for C99")
+    set_license("MIT")
+
+    add_urls("https://github.com/Hirrolot/datatype99/archive/refs/tags/v$(version).tar.gz",
+             "https://github.com/Hirrolot/datatype99.git")
+
+    add_versions("1.6.3", "0ddc138eac8db19fa22c482d9a2ec107ff622fd7ce61bb0b1eefb4d8f522e01e")
+    add_versions("1.6.4", "f8488decc7ab035e3af77ee62e64fc678d5cb57831457f7270efe003e63d6f09")
+
+    add_deps("metalang99")
+
+    on_install(function(package)
+        os.cp("*.h", package:installdir("include"))
+    end)
+
+    on_test(function(package)
+        assert(package:check_csnippets({test = [[
+            #include <assert.h>
+            datatype(
+                BinaryTree,
+                (Leaf, int),
+                (Node, BinaryTree *, int, BinaryTree *)
+            );
+            int sum(const BinaryTree *tree) {
+                match(*tree) {
+                    of(Leaf, x) return *x;
+                    of(Node, lhs, x, rhs) return sum(*lhs) + *x + sum(*rhs);
+                }
+                return -1;
+            }
+            void test() {
+                BinaryTree leaf5 = Leaf(5);
+                BinaryTree leaf7 = Leaf(7);
+                BinaryTree node = Node(&leaf5, 123, &leaf7);
+                assert(sum(&node) == 135);
+            }
+        ]]}, { configs = { languages = "c11" }, includes = "datatype99.h" }))
+    end)

+ 27 - 5
packages/d/date/xmake.lua

@@ -4,12 +4,21 @@ package("date")
     set_description("A date and time library for use with C++11 and C++14.")
     set_license("MIT")
 
-    add_urls("https://github.com/HowardHinnant/date/archive/refs/tags/$(version).zip",
-             "https://github.com/HowardHinnant/date.git")
+    add_urls("https://github.com/HowardHinnant/date.git")
 
-    add_versions("v3.0.1", "f4300b96f7a304d4ef9bf6e0fa3ded72159f7f2d0f605bdde3e030a0dba7cf9f")
+    add_versions("2024.05.14", "1ead6715dec030d340a316c927c877a3c4e5a00c")
+    add_versions("2021.04.17", "6e921e1b1d21e84a5c82416ba7ecd98e33a436d0")
+
+    if is_plat("windows", "mingw") then
+        add_syslinks("ole32", "shell32")
+    elseif is_plat("macosx", "iphoneos") then
+        add_frameworks("Foundation")
+    end
 
     add_deps("cmake")
+    if is_plat("macosx", "iphoneos") then
+        add_deps("zlib")
+    end
 
     on_install(function (package)
         local configs = {"-DBUILD_TZ_LIB=ON",
@@ -20,6 +29,19 @@ package("date")
     end)
 
     on_test(function (package)
-        assert(package:has_cxxtypes("date::sys_days", {configs = {languages = "c++11"}, includes = "date/date.h"}))
-        assert(package:has_cxxtypes("date::time_zone", {configs = {languages = "c++11"}, includes = "date/tz.h"}))
+        assert(package:check_cxxsnippets({test = [[
+            #include <date/date.h>
+            void test() {
+                using namespace date;
+                year_month_weekday_last{year{2015}, month{3u}, weekday_last{weekday{0u}}};
+            }
+        ]]}, {configs = {languages = "c++11"}}))
+        assert(package:check_cxxsnippets({test = [[
+            #include <date/tz.h>
+            void test() {
+                using namespace date;
+                using namespace std::chrono;
+                make_zoned(current_zone(), system_clock::now());
+            }
+        ]]}, {configs = {languages = "c++11"}}))
     end)

+ 23 - 10
packages/d/dav1d/xmake.lua

@@ -1,30 +1,43 @@
 package("dav1d")
-
     set_homepage("https://www.videolan.org/projects/dav1d.html")
     set_description("dav1d is a new AV1 cross-platform decoder, open-source, and focused on speed, size and correctness.")
     set_license("BSD-2-Clause")
 
-    add_urls("https://downloads.videolan.org/pub/videolan/dav1d/$(version)/dav1d-$(version).tar.xz")
-    add_versions("0.9.0", "cfae88e8067c9b2e5b96d95a7a00155c353376fe9b992a96b4336e0eab19f9f6")
+    add_urls("https://downloads.videolan.org/pub/videolan/dav1d/$(version)/dav1d-$(version).tar.xz",
+             "https://code.videolan.org/videolan/dav1d.git")
+
+    add_versions("1.4.3", "42fe524bcc82ea3a830057178faace22923a79bad3d819a4962d8cfc54c36f19")
     add_versions("1.1.0", "fb57aae7875f28c30fb3dbae4a3683d27e2f91dde09ce5c60c22cef9bc58dfd1")
+    add_versions("0.9.0", "cfae88e8067c9b2e5b96d95a7a00155c353376fe9b992a96b4336e0eab19f9f6")
+
+    add_configs("tools", {description = "Build tools", default = false, type = "boolean"})
 
     add_deps("nasm", "meson", "ninja")
-    if is_plat("linux") then
+    if is_plat("linux", "bsd") then
         add_syslinks("pthread", "dl")
     end
 
-    on_install("windows", "macosx", "linux|x86_64", function (package)
+    on_install("!android and !wasm", function (package)
+        import("package.tools.meson")
+
         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
+        table.insert(configs, "-Denable_tools=" .. (package:config("tools") and "true" or "false"))
+        if package:config("tools") then
+            package:addenv("PATH", "bin")
+        end
+
+        local opt = {}
+        opt.envs = meson.buildenvs(package)
+        -- add gas-preprocessor to PATH
+        if package:is_plat("windows") and package:is_arch("arm.*") then
+            opt.envs.PATH = path.join(os.programdir(), "scripts") .. path.envsep() .. opt.envs.PATH
         end
-        import("package.tools.meson").install(package, configs)
-        package:addenv("PATH", "bin")
+        meson.install(package, configs, opt)
     end)
 
     on_test(function (package)
-        if not package:is_cross() then
+        if package:config("tools") and (not package:is_cross()) then
             os.vrun("dav1d -v")
         end
         assert(package:has_cfuncs("dav1d_default_settings", {includes = "dav1d/dav1d.h"}))

+ 1 - 0
packages/d/daw_header_libraries/xmake.lua

@@ -6,6 +6,7 @@ package("daw_header_libraries")
     add_urls("https://github.com/beached/header_libraries/archive/refs/tags/$(version).tar.gz",
              "https://github.com/beached/header_libraries.git")
 
+    add_versions("v2.106.1", "393815fbf249ca1220a216899cae3d2672ca193f9db228a0b99925a9b0f90854")
     add_versions("v2.106.0", "7838ada09afa69e7a42d742991c4b24b32ba27681e7b4dadf7b1e45c168937b5")
     add_versions("v2.102.0", "bc80936b439da0ef8a432175732e94573b14069a778b83d5f26ce8847f11ebb8")
     add_versions("v2.96.1", "2a9a5c33baa9e3adc1d82fa13a56522638af13cc39372a0c1c8f5c5d984f1464")

+ 1 - 0
packages/d/daw_json_link/xmake.lua

@@ -7,6 +7,7 @@ package("daw_json_link")
     add_urls("https://github.com/beached/daw_json_link/archive/refs/tags/$(version).tar.gz",
              "https://github.com/beached/daw_json_link.git")
 
+    add_versions("v3.24.1", "439b4678377950f165e3d49d472c0676f0ef2fae3c5e6e7febddd5633f6e4f39")
     add_versions("v3.24.0", "7cecb2acde88028043e343ed4da7cde84c565a38125d3edb90db90daf881240a")
     add_versions("v3.23.2", "fd1234a14c126c79076e0b6e6eceae42afd465c419dc7a7393c69c28aa7f53d4")
     add_versions("v3.20.1", "046638bc4437d138cc8bdc882027d318ca3e267f33d1b419c5bdecb45b595a47")

+ 1 - 0
packages/d/decimal_for_cpp/xmake.lua

@@ -7,6 +7,7 @@ package("decimal_for_cpp")
 
     add_urls("https://github.com/vpiotr/decimal_for_cpp.git")
 
+    add_versions("1.20", "ad4f8f6cfe5096d7576d6ca782795c584abc1053")
     add_versions("1.19", "2bcf48af509690579cf2b521af46e7fb0157c8da")
 
     on_install(function (package)

+ 13 - 6
packages/d/depot_tools/xmake.lua

@@ -7,6 +7,7 @@ package("depot_tools")
              "https://chromium.googlesource.com/chromium/tools/depot_tools.git")
     add_versions("2022.2.1", "8a6d00f116d6de9d5c4e92acb519fd0859c6449a")
     add_versions("2024.2.29", "50de666ba40a4808daf9791fece3d8a43228a1de")
+    add_versions("2024.7.4", "452fe3be37f78fbecefa1b4b0d359531bcd70d0d")
 
     -- we use external ninja instead of depot_tools/ninja which eating ram until VM exhaustion (16GB)
     add_deps("ninja", {private = true, system = false})
@@ -21,10 +22,7 @@ package("depot_tools")
 
     on_install("linux", "macosx", "windows", function (package)
         import("core.base.global")
-        local ninja = path.join(package:dep("ninja"):installdir("bin"), "ninja" .. (is_host("windows") and ".exe" or ""))
-        if ninja and os.isfile(ninja) then
-            os.trycp(ninja, os.curdir())
-        end
+        local sourcedir = os.curdir()
         os.cp("*", package:installdir())
         os.cd(package:installdir())
         -- maybe we need set proxy, e.g. `xmake g --proxy=http://127.0.0.1:xxxx`
@@ -36,18 +34,27 @@ package("depot_tools")
             envs.HTTPS_PROXY = proxy
             envs.ALL_PROXY = proxy
         end
-        envs.PATH = table.join(os.curdir(), path.splitenv(os.getenv("PATH")))
+        envs.PATH = table.join(sourcedir, path.splitenv(os.getenv("PATH")))
         -- skip to check and update obsolete URL
         io.replace("./update_depot_tools",
             'CANONICAL_GIT_URL="https://chromium.googlesource.com/chromium/tools/depot_tools.git"',
             'CANONICAL_GIT_URL="https://github.com/xmake-mirror/depot_tools.git"', {plain = true})
+        io.replace("./update_depot_tools", 'remote_url=$(eval "$GIT" config --get remote.origin.url)',
+            'remote_url="https://github.com/xmake-mirror/depot_tools.git"', {plain = true})
+        os.vrunv("git", {"config", "user.email", "[email protected]"})
+        os.vrunv("git", {"config", "user.name", "me"})
+        os.vrunv("git", {"commit", "-a", "-m", "..."})
         -- we need fetch some files when running gclient for the first time
         if is_host("windows") then
             os.vrunv("gclient.bat", {"--verbose"}, {envs = envs})
         else
             os.vrunv("./gclient", {"--verbose"}, {shell = true, envs = envs})
         end
-  end)
+        local ninja = path.join(package:dep("ninja"):installdir("bin"), "ninja" .. (is_host("windows") and ".exe" or ""))
+        if ninja and os.isfile(ninja) then
+            os.cp(ninja, package:installdir())
+        end
+    end)
 
     on_test(function (package)
         import("core.base.global")

+ 7 - 4
packages/d/directxshadercompiler/xmake.lua

@@ -8,19 +8,22 @@ package("directxshadercompiler")
                   ["1.6.2104"] = "2021_04-20",
                   ["1.6.2106"] = "2021_07_01",
                   ["1.7.2212"] = "2022_12_16",
-                  ["1.8.2403"] = "2024_03_07"}
-    if is_plat("windows") then 
+                  ["1.8.2403"] = "2024_03_07",
+                  ["1.8.2405"] = "2024_05_24"}
+    if is_plat("windows") then
         add_urls("https://github.com/microsoft/DirectXShaderCompiler/releases/download/v$(version).zip", {version = function (version) return version .. "/dxc_" .. date[tostring(version)] end})
         add_versions("1.5.2010", "b691f63778f470ebeb94874426779b2f60685fc8711adf1b1f9f01535d9b67f8")
         add_versions("1.6.2104", "ee5e96d58134957443ded04be132e2e19240c534d7602e3ab8fd5adc5156014a")
         add_versions("1.6.2106", "053b2d90c227cae84e7ce636bc4f7c25acd224c31c11a324885acbf5dd8b7aac")
         add_versions("1.7.2212", "ed77c7775fcf1e117bec8b5bb4de6735af101b733d3920dda083496dceef130f")
         add_versions("1.8.2403", "7a916a49b3ca81d803ca1bcd1ae859e7f317ce2fcf875bd34147aa2c57d1e392")
-    elseif is_plat("linux") and is_arch("x86_64") then 
+        add_versions("1.8.2405", "8d2656e9523e7b3b7c41159237d74f89cc98034056f61f568b8841da0449c965")
+    elseif is_plat("linux") and is_arch("x86_64") then
         add_urls("https://github.com/microsoft/DirectXShaderCompiler.git")
         add_versions("v1.7.2212", "f2643f8699299ab4e77421952e9c24f7483b46896d9f4cc6b4790b22c90d2ff0")
         add_versions("v1.8.2403", "4211ea2cffc3575cf58556ebbc31c64adb73b1b8f68e47456c2048b60de4a24c")
-        
+        add_versions("v1.8.2405", "0a084148b6b87e6c8fb73540b6c7bf2c3b64db8af06f7dae3aa237830e575ff6")
+
         add_patches("v1.7.2212", path.join(os.scriptdir(), "patches", "disable_go_bindings.patch"), "2337f4f94d4c27c3caf0e6b0f00efd1bee719f79c0bb3b0d7e74c2859546c73a")
 
         add_extsources("pacman::directx-shader-compiler")

+ 20 - 8
packages/d/directxtk/xmake.lua

@@ -1,7 +1,6 @@
 package("directxtk")
-
     set_homepage("https://github.com/microsoft/DirectXTK")
-    set_description("This package contains the \"DirectX Tool Kit\", a collection of helper classes for writing Direct3D 11 C++ code for Universal Windows Platform (UWP) apps for Windows 10, Xbox One, and Win32 desktop applications for Windows 7 Service Pack 1 or later.")
+    set_description("A collection of helper classes for writing Direct3D 11 C++ code For Windows.")
 
     set_urls("https://github.com/microsoft/DirectXTK/archive/$(version).zip",
              "https://github.com/microsoft/DirectXTK.git",
@@ -19,12 +18,27 @@ package("directxtk")
     add_versions("21.11.0", "d25e634b0e225ae572f82d0d27c97051b0069c6813d7be12453039a504dffeb8")
     add_versions("24.2.0", "edb643b2444ff24925339cfb1bc9f76c671d5404a5549d32ecaa0d61bbab28c9")
 
+    add_deps("cmake")
+
+    -- FIXME arm/MT met some link errors
+    if is_arch("arm.*") then
+        add_configs("runtimes", {description = "Set compiler runtimes.", default = "MD", readonly = true})
+    end
+
+    if on_check then
+        on_check("windows", function (package)
+            local vs_sdkver = package:toolchain("msvc"):config("vs_sdkver")
+            if vs_sdkver then
+                local build_ver = string.match(vs_sdkver, "%d+%.%d+%.(%d+)%.?%d*")
+                assert(tonumber(build_ver) >= 19041, "DirectXTK requires Windows SDK to be at least 10.0.19041.0")
+            end
+        end)
+    end
+
     on_install("windows", function (package)
         local configs = {}
-        local vs_sdkver = import("core.tool.toolchain").load("msvc"):config("vs_sdkver")
+        local vs_sdkver = package:toolchain("msvc"):config("vs_sdkver")
         if vs_sdkver then
-            local build_ver = string.match(vs_sdkver, "%d+%.%d+%.(%d+)%.?%d*")
-            assert(tonumber(build_ver) >= 19041, "DirectXTK requires Windows SDK to be at least 10.0.19041.0")
             table.insert(configs, "-DCMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION=" .. vs_sdkver)
             table.insert(configs, "-DCMAKE_SYSTEM_VERSION=" .. vs_sdkver)
         end
@@ -39,11 +53,9 @@ package("directxtk")
 
     on_test(function (package)
         assert(package:check_cxxsnippets({test = [[
-            void test()
-            {
+            void test() {
                 DirectX::SimpleMath::Vector3 eye(0.0f, 0.7f, 1.5f);
                 DirectX::SimpleMath::Vector3 at(0.0f, -0.1f, 0.0f);
-
                 auto lookAt = DirectX::SimpleMath::Matrix::CreateLookAt(eye, at, DirectX::SimpleMath::Vector3::UnitY);
             }
         ]]}, {configs = {languages = "c++11"}, includes = { "windows.h", "SimpleMath.h" } }))

+ 1 - 2
packages/d/discord/xmake.lua

@@ -1,5 +1,4 @@
 package("discord")
-
     set_homepage("https://discord.com/developers/docs/game-sdk/")
     set_description("Whether you’re part of a school club, gaming group, worldwide art community, or just a handful of friends that want to spend time together, Discord makes it easy to talk every day and hang out more often.")
 
@@ -16,7 +15,7 @@ package("discord")
 
     add_links("discordcpp")
 
-    on_install("windows|x86", "windows|x64", "linux|x64", "macosx|x86_64", "macosx|arm64", function (package)
+    on_install("windows|x86", "windows|x64", "linux|x64", "linux|x86_64", "macosx|x86_64", "macosx|arm64", function (package) -- linux|x64 for retrocompatibility
         if package:config("cppapi") then
             os.cp("cpp/*.h", package:installdir("include"))
         end

+ 31 - 0
packages/d/dlpack/xmake.lua

@@ -0,0 +1,31 @@
+package("dlpack")
+    set_homepage("https://dmlc.github.io/dlpack/latest")
+    set_description("common in-memory tensor structure ")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/dmlc/dlpack/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/dmlc/dlpack.git")
+
+    add_versions("v0.8", "cf965c26a5430ba4cc53d61963f288edddcd77443aa4c85ce722aaf1e2f29513")
+
+    add_configs("contrib", {description = "Build in progress unstable libraries", default = false, type = "boolean"})
+
+    add_deps("cmake")
+
+    on_load(function (package)
+        if not package:config("contrib") then
+            package:set("kind", "library", {headeronly = true})
+        end
+    end)
+
+    on_install(function (package)
+        local configs = {}
+        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_MOCK=" .. (package:config("contrib") and "ON" or "OFF"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_ctypes("DLDevice", {includes = "dlpack/dlpack.h"}))
+    end)

+ 21 - 7
packages/d/dotnet/xmake.lua

@@ -8,7 +8,8 @@ package("dotnet")
             local versions = {
                 ["7.0.4"] = "e2f99985-b54a-43a2-85cf-cfc9a1e0a307/171339e000ade0b6e10c3cb010ed45ba/dotnet-sdk-7.0.202-win-x64",
                 ["7.0.15"] = "2133b143-9c4f-4daa-99b0-34fa6035d67b/193ede446d922eb833f1bfe0239be3fc/dotnet-sdk-7.0.405-win-x64",
-                ["8.0.1"] = "6902745c-34bd-4d66-8e84-d5b61a17dfb7/e61732b00f7e144e162d7e6914291f16/dotnet-sdk-8.0.101-win-x64"
+                ["8.0.1"] = "6902745c-34bd-4d66-8e84-d5b61a17dfb7/e61732b00f7e144e162d7e6914291f16/dotnet-sdk-8.0.101-win-x64",
+                ["8.0.6"] = "7ac2d880-2d57-4008-850e-4b42b829c354/e1c92cb3b6a85f53cab6fa55b14b49e3/dotnet-sdk-8.0.301-win-x64"
             }
             set_urls("https://download.visualstudio.microsoft.com/download/pr/$(version).zip", {version = function (version)
                 return versions[tostring(version)]
@@ -17,11 +18,13 @@ package("dotnet")
             add_versions("7.0.4", "1cc74b279cffe42f757b3adeeeec87e351f0fb806016167ffb6b3842d4d6bcd5")
             add_versions("7.0.15", "a158307a32caee886e24a2cc5114c3fba230f8c6173a1b707dc112ff377607b7")
             add_versions("8.0.1", "2fa8eb34ce5a03a6fc606b35cfd6ff1d1ac36dfd35a4772d6a6ec1939de46244")
+            add_versions("8.0.6", "eb32b4332b10ad526ad64f58a6e904d16855e49bb38c51c863033c53ecea4a7d")
         elseif is_arch("arm64") then
             local versions = {
                 ["7.0.4"] = "h52f31250-1961-4203-9f51-9b9afce0db15/129915360a0e0e6ee59e895efd389b0a/dotnet-sdk-7.0.202-win-arm64",
                 ["7.0.15"] = "5079d3e3-3fa9-4ffa-92fc-bbf17e2d3543/634299784e4c6f7a1f5b06cf5070d505/dotnet-sdk-7.0.405-win-arm64",
-                ["8.0.1"] = "bfcfe7c7-d722-45b0-80df-663516a401ce/d7b91a51df647c710c96cde20aa8b100/dotnet-sdk-8.0.101-win-arm64"
+                ["8.0.1"] = "bfcfe7c7-d722-45b0-80df-663516a401ce/d7b91a51df647c710c96cde20aa8b100/dotnet-sdk-8.0.101-win-arm64",
+                ["8.0.6"] = "90961c76-55e1-406c-80b5-440306ac50cb/337ad62c9692c3e74e4e2b209f3a85f6/dotnet-sdk-8.0.301-win-arm64"
             }
             set_urls("https://download.visualstudio.microsoft.com/download/pr/$(version).zip", {version = function (version)
                 return versions[tostring(version)]
@@ -30,11 +33,13 @@ package("dotnet")
             add_versions("7.0.4", "5b2d8d381fc52379d25f5ccfa0882476b6003060682abf19fd96151a08d4298b")
             add_versions("7.0.15", "272156f0cfc4752eaae580196eb0f3287c1c758c99a116a70062a2083cafa0bd")
             add_versions("8.0.1", "feca0648fa200fd19ea3cb00266a76488d76880243b5c57bf9ecf9d91892ddfe")
+            add_versions("8.0.6", "9e77515ecc64e4a891109cc5da2a7bf57f4d534e0654b36636ada9bae79e487a")
         else
             local versions = {
                 ["7.0.4"] = "c7213e17-4955-4fae-a405-1b7101086daf/71963248a7de64c4b00219a8199e7429/dotnet-sdk-7.0.202-win-x86",
                 ["7.0.15"] = "bf8a63f5-f029-4d0a-8027-975284829ad0/e1fb2ba0532d63c6cec0fb04987a91bf/dotnet-sdk-7.0.405-win-x86",
-                ["8.0.1"] = "059613f3-d3e9-4585-b8a9-3814e675b6d0/01150dbaaa7f392f103137bd325786b6/dotnet-sdk-8.0.101-win-x86"
+                ["8.0.1"] = "059613f3-d3e9-4585-b8a9-3814e675b6d0/01150dbaaa7f392f103137bd325786b6/dotnet-sdk-8.0.101-win-x86",
+                ["8.0.6"] = "8ffefb00-26bf-4dc0-bfd3-82003b4f122e/05aad9cf85a8456cdbe08b2b59da866e/dotnet-sdk-8.0.301-win-x86"
             }
             set_urls("https://download.visualstudio.microsoft.com/download/pr/$(version).zip", {version = function (version)
                 return versions[tostring(version)]
@@ -43,13 +48,15 @@ package("dotnet")
             add_versions("7.0.4", "8541bc89a12dac90ba1d6a7c1b6875b9314fc8af04602210be07daa16cfd5e9a")
             add_versions("7.0.15", "77907f8db16228b04421bb8c63e89fa2c6d7e728c1e5cd0187b87d4aafa0acc0")
             add_versions("8.0.1", "af9feebee04bc25ac2a0f98dc37c8808da4a9c7586c55de8aafafab2d2ad8b98")
+            add_versions("8.0.6", "04029a8f88f395a03497ae4542712eaec6d651f9eb4dc5727143b6c54fa7bda2")
         end
     elseif is_host("linux") then
         if is_arch("x64", "x86_64") then
             local versions = {
                 ["7.0.4"] = "bda88810-e1a6-4cf0-8139-7fd7fe7b2c7a/7a9ffa3e12e5f1c3d8b640e326c1eb14/dotnet-sdk-7.0.202-linux-x64",
                 ["7.0.15"] = "5202b091-2406-445c-b40a-68a5b97c882b/b509f2a7a0eb61aea145b990b40b6d5b/dotnet-sdk-7.0.405-linux-x64",
-                ["8.0.1"] = "9454f7dc-b98e-4a64-a96d-4eb08c7b6e66/da76f9c6bc4276332b587b771243ae34/dotnet-sdk-8.0.101-linux-x64"
+                ["8.0.1"] = "9454f7dc-b98e-4a64-a96d-4eb08c7b6e66/da76f9c6bc4276332b587b771243ae34/dotnet-sdk-8.0.101-linux-x64",
+                ["8.0.6"] = "86497c4f-3dc8-4ee7-9f6a-9e0464059427/293d074c28bbfd9410f4db8e021fa290/dotnet-sdk-8.0.301-linux-x64",
             }
             set_urls("https://download.visualstudio.microsoft.com/download/pr/$(version).tar.gz", {version = function (version)
                 return versions[tostring(version)]
@@ -58,11 +65,13 @@ package("dotnet")
             add_versions("7.0.4", "405f15e437582be260460f48eda9dfe613fd87b2557667f20d6ecfa34b09c221")
             add_versions("7.0.15", "db1f6226039313ceda561de803298fc6df0a0f34e1b214629225bb20e2c03e90")
             add_versions("8.0.1", "3c61ffcee8947e0ead6196799d058e671b00bc6b983983f2bde5d29f702de2fe")
+            add_versions("8.0.6", "d237cf0e8865f51eb9634df32a8bcfb1dd95dac95c0d16b5d599df867ab16c27")
         elseif is_arch("arm64", "arm64-v8a") then
             local versions = {
                 ["7.0.4"] = "c1fd11b0-186a-4aa1-a578-bb1b6613886e/b67e1c9d6d90b1c99b23935273921fa1/dotnet-sdk-7.0.202-linux-arm64",
                 ["7.0.15"] = "bdfe4e91-3a24-421f-881a-47b6d91404cb/cfe786933a6a7fd358b799af23542827/dotnet-sdk-7.0.405-linux-arm64",
-                ["8.0.1"] = "092bec24-9cad-421d-9b43-458b3a7549aa/84280dbd1eef750f9ed1625339235c22/dotnet-sdk-8.0.101-linux-arm64"
+                ["8.0.1"] = "092bec24-9cad-421d-9b43-458b3a7549aa/84280dbd1eef750f9ed1625339235c22/dotnet-sdk-8.0.101-linux-arm64",
+                ["8.0.6"] = "cd9decc0-f3ef-46d6-b7d1-348b757781ad/9ad92a8f4b805feb3d017731e78eca15/dotnet-sdk-8.0.301-linux-arm64",
             }
             set_urls("https://download.visualstudio.microsoft.com/download/pr/$(version).tar.gz", {version = function (version)
                 return versions[tostring(version)]
@@ -71,13 +80,15 @@ package("dotnet")
             add_versions("7.0.4", "5a5d29f3f7515f6df888047eeb9571a2fa06b728a97e30536b1473d2abce0b32")
             add_versions("7.0.15", "83b18606c055b528856ad5642828627542d339510f33155ff126bb2522a5c68d")
             add_versions("8.0.1", "6e6d9c0d20e9b87247638eff4e66eccf04078ca956cecb9be53f155f44a2c508")
+            add_versions("8.0.6", "0e90d60a1759567fcfaf9b9efd1734603493a6ad562e40620e1d2df8ab120f8c")
         end
     elseif is_host("macosx") then
         if is_arch("x64", "x86_64") then
             local versions = {
                 ["7.0.4"] = "d3fe9043-0ff4-4584-aacf-1ad41c47407b/7b84ed341359488cd0de21de1b4df6d0/dotnet-sdk-7.0.202-osx-x64",
                 ["7.0.15"] = "77e1c2df-aaa1-44aa-abc5-ffca44b1dfc9/1fea5228f09398a885ca956d1b537f02/dotnet-sdk-7.0.405-osx-x64",
-                ["8.0.1"] = "c7f806d2-1483-4a52-893a-4de1054b0bff/a6f52ed50876c45f859192b6576a14d5/dotnet-sdk-8.0.101-osx-x64"
+                ["8.0.1"] = "c7f806d2-1483-4a52-893a-4de1054b0bff/a6f52ed50876c45f859192b6576a14d5/dotnet-sdk-8.0.101-osx-x64",
+                ["8.0.6"] = "6ef47a54-b1c6-4000-8df4-486f64464c2b/ae87b597b19312fa9f73b9f2f8c687bd/dotnet-sdk-8.0.301-osx-x64",
             }
             set_urls("https://download.visualstudio.microsoft.com/download/pr/$(version).tar.gz", {version = function (version)
                 return versions[tostring(version)]
@@ -86,11 +97,13 @@ package("dotnet")
             add_versions("7.0.4", "1531bfa7bf384f8b5c433d87af170f7839b130ea9c20b617aaf41742a13eefa9")
             add_versions("7.0.15", "f8ff3c54f633e3f8dc0208c97b43a6ad53442a6139dbb11e6957129a7a20bf79")
             add_versions("8.0.1", "cad53a19dd0ad86c814bbf24f8449e068ffbc3749a285e41b7b6e6004fa3881f")
+            add_versions("8.0.6", "0bd66f52ddf92efdbed459362fb807b30360a1f854144c84789e12607a35ea75")
         elseif is_arch("arm64") then
             local versions = {
                 ["7.0.4"] = "4402413a-ef81-4732-a0c0-38f11694b226/e205b8bf48d95902a6dbe1c3cccca272/dotnet-sdk-7.0.202-osx-arm64",
                 ["7.0.15"] = "5bb0e0e4-2a8d-4aba-88ad-232e1f65c281/ee6d35f762d81965b4cf336edde1b318/dotnet-sdk-7.0.405-osx-arm64",
-                ["8.0.1"] = "ef083c06-7aee-4a4f-b18b-50c9a8990753/e206864e7910e81bbd9cb7e674ff1b4c/dotnet-sdk-8.0.101-osx-arm64"
+                ["8.0.1"] = "ef083c06-7aee-4a4f-b18b-50c9a8990753/e206864e7910e81bbd9cb7e674ff1b4c/dotnet-sdk-8.0.101-osx-arm64",
+                ["8.0.6"] = "c503e53c-0567-4604-b7a8-1d6e7a1357f5/53e78f56b01147a092c0cc273b443550/dotnet-sdk-8.0.301-osx-arm64",
             }
             set_urls("https://download.visualstudio.microsoft.com/download/pr/$(version).tar.gz", {version = function (version)
                 return versions[tostring(version)]
@@ -99,6 +112,7 @@ package("dotnet")
             add_versions("7.0.4", "7f8201d42d31d6985288d0e31a32aa3b1dff40fceb8cb202993c0b72883bcebb")
             add_versions("7.0.15", "b1b822bc2e7041f7ed6708ec8a41d417f6fa1c962b051681cf36a91d6929fefa")
             add_versions("8.0.1", "aa56166e43f19ab9a71bf1203a9028920f2f555d985f8f1fe0ed0fe221b109bd")
+            add_versions("8.0.6", "86a5a398a4f9c093a43687b93ac4c3a487b44e4193cc7155620a37dbc4476b87")
         end
     end
 

+ 1 - 0
packages/d/drogon/xmake.lua

@@ -6,6 +6,7 @@ package("drogon")
 
     add_urls("https://github.com/an-tao/drogon/archive/refs/tags/$(version).tar.gz",
              "https://github.com/an-tao/drogon.git")
+    add_versions("v1.9.5", "ec17882835abeb0672db29cb36ab0c5523f144d5d8ff177861b8f5865803eaae")
     add_versions("v1.9.4", "b23d9d01d36fb1221298fcdbedcf7fd3e1b8b8821bf6fb8ed073c8b0c290d11d")
     add_versions("v1.9.3", "fb4ef351b3e4c06ed850cfbbf50c571502decb1738fb7d62a9d7d70077c9fc23")
     add_versions("v1.4.1", "ad794d7744b600240178348c15e216c919fe7a2bc196cf1239f129aee2af19c7")

+ 1 - 0
packages/d/dynareadout/xmake.lua

@@ -5,6 +5,7 @@ package("dynareadout")
 
     add_urls("https://github.com/PucklaJ/dynareadout/archive/refs/tags/$(version).tar.gz",
              "https://github.com/PucklaJ/dynareadout.git")
+    add_versions("24.05", "86e045f23d1e1d3ed2e002774f8f04badc5c974c3441bdc07f3a82c5711328c9")
     add_versions("24.03", "d91feb2ebfa604b543dd6d98c3dd5aee5c489e6987159fef78dfcea1aad64bd5")
     add_versions("22.12", "2e430c718c610d4425e23d4c6c87fe4794bb8c76d3cc015988706dbf5027daa4")
     add_versions("23.01",   "578080c734927cc925e7e91a52317bc3e710965071f1da50853b1e48f81a1c0f")

+ 1 - 0
packages/e/efsw/xmake.lua

@@ -5,6 +5,7 @@ package("efsw")
 
     set_urls("https://github.com/SpartanJ/efsw/archive/refs/tags/$(version).tar.gz",
              "https://github.com/SpartanJ/efsw.git")
+    add_versions("1.4.0", "9eed5fc8471767faa44134f5379d4de02825e3756007dafa482fd1656e42bc4a")
     add_versions("1.3.1", "3c0efe023258712d25644977227f07cf7edf7e5dc00ffa8d88733f424fa6af86")
     add_versions("1.3.0", "e190b72f23d92c42e1a0dab9bb6354a56f75c7535fd1f3e3a10b1c317e05f8f6")
     add_versions("1.2.0", "66d8631deeb2af50511e84cae7e745134e6a22811c93246e39e7001af887a7db")

+ 2 - 0
packages/e/emmylua_debugger/xmake.lua

@@ -6,6 +6,8 @@ package("emmylua_debugger")
     add_urls("https://github.com/EmmyLua/EmmyLuaDebugger/archive/refs/tags/$(version).tar.gz",
              "https://github.com/EmmyLua/EmmyLuaDebugger.git")
 
+    add_versions("1.8.2", "2ce5adbfad4055072d39302dccf794ec45800e84a5f3ba4784b373078a9dff8c")
+    add_versions("1.8.1", "0dbbfefe798425323bd1f531463675460fce3418d73ef29b495e7369f8c76475")
     add_versions("1.8.0", "21e5ba1c82e4386cd8ad4f8c76511d70319b899b414d29ecdaba35649325d2ee")
     add_versions("1.7.1", "8757d372c146d9995b6e506d42f511422bcb1dc8bacbc3ea1a5868ebfb30015f")
     add_versions("1.6.3", "4e10cf1c729fc58f72880895e63618cb91d186ff3b55f270cdaa089a2f8b20bc")

+ 26 - 0
packages/e/epoll-shim/xmake.lua

@@ -0,0 +1,26 @@
+package("epoll-shim")
+    set_homepage("https://github.com/jiixyj/epoll-shim")
+    set_description("small epoll implementation using kqueue; includes all features needed for libinput/libevdev")
+    set_license("MIT")
+
+    add_urls("https://github.com/jiixyj/epoll-shim/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/jiixyj/epoll-shim.git")
+
+    add_versions("v0.0.20240608", "8f5125217e4a0eeb96ab01f9dfd56c38f85ac3e8f26ef2578e538e72e87862cb")
+
+    add_deps("cmake")
+
+    on_install("bsd", "macosx", function (package)
+        io.replace("CMakeLists.txt", [[set(CMAKE_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}/libepoll-shim")]], "", {plain = true})
+        local configs = {}
+        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)
+        assert(package:has_cfuncs("epoll_create", {includes = "sys/epoll.h"}))
+        assert(package:has_cfuncs("eventfd", {includes = "sys/eventfd.h"}))
+        assert(package:has_cfuncs("signalfd", {includes = "sys/signalfd.h"}))
+        assert(package:has_cfuncs("timerfd_create", {includes = "sys/timerfd.h"}))
+    end)

+ 47 - 0
packages/e/exosip/xmake.lua

@@ -0,0 +1,47 @@
+package("exosip")
+    set_homepage("https://savannah.nongnu.org/projects/exosip")
+    set_description("eXosip is a library that hides the complexity of using the SIP protocol for mutlimedia session establishement")
+    set_license("GPL-2.0")
+
+    add_urls("https://git.savannah.nongnu.org/cgit/exosip.git/snapshot/exosip-$(version).tar.gz",
+             "git://git.savannah.gnu.org/exosip.git")
+
+    add_versions("5.3.0", "66c2b2ddcfdc8807054fa31f72a6068ef66d98bedd9aedb25b9031718b9906a2")
+
+    add_deps("autoconf", "m4", "libtool", "automake", "osip", "openssl3")
+    add_links("eXosip2", "osip2", "osipparser2")
+
+    if is_plat("macosx") then
+        add_syslinks("resolv")
+        add_frameworks("CoreFoundation")    
+        add_deps("pkg-config")
+    elseif is_plat("linux") then
+        add_syslinks("pthread", "resolv")
+    end
+
+    on_check("macosx", function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include "TargetConditionals.h"
+            #include <CoreFoundation/CoreFoundation.h>
+            #include <CoreServices/CoreServices.h>
+            #include <Security/Security.h>
+            void test() {
+                SInt32 osx_version = 0;
+                OSErr res = Gestalt(gestaltSystemVersion, &osx_version);
+            }
+        ]]}))
+    end)
+
+    on_install("macosx", "linux", function (package)
+        local configs = {"--disable-trace", "--enable-pthread=force"}
+        table.insert(configs, "--enable-shared=" .. (package:config("shared") and "yes" or "no"))
+        table.insert(configs, "--enable-static=" .. (package:config("shared") and "no" or "yes"))
+        if not package:debug() then
+            table.insert(configs, "--disable-debug")
+        end
+        import("package.tools.autoconf").install(package, configs)
+    end)
+
+    on_test(function (package)
+          assert(package:has_cfuncs("eXosip_lock", {includes = "eXosip2/eXosip.h", "eXosip2.h"}))
+    end)

+ 2 - 2
packages/e/expat/xmake.lua

@@ -1,5 +1,4 @@
 package("expat")
-
     set_homepage("https://libexpat.github.io")
     set_description("XML 1.0 parser")
     set_license("MIT")
@@ -18,13 +17,14 @@ package("expat")
     add_configs("char_type", {description = "Character type to use", default = "char", type = "string", values = {"char", "ushort", "wchar_t"}})
 
     add_deps("cmake")
+
     on_load("windows", function (package)
         if not package:config("shared") then
             package:add("defines", "XML_STATIC")
         end
     end)
 
-    on_install("windows", "linux", "macosx", "android", "mingw", "cross", function (package)
+    on_install("windows", "linux", "macosx", "android", "mingw", "cross", "bsd", function (package)
         local configs = {"-DEXPAT_BUILD_EXAMPLES=OFF", "-DEXPAT_BUILD_TESTS=OFF", "-DEXPAT_BUILD_DOCS=OFF"}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
         table.insert(configs, "-DEXPAT_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))

+ 1 - 0
packages/e/expected-lite/xmake.lua

@@ -7,6 +7,7 @@ package("expected-lite")
     add_urls("https://github.com/martinmoene/expected-lite/archive/refs/tags/$(version).tar.gz",
              "https://github.com/martinmoene/expected-lite.git")
 
+    add_versions("v0.8.0", "27649f30bd9d4fe7b193ab3eb6f78c64d0f585c24c085f340b4722b3d0b5e701")
     add_versions("v0.6.3", "b2f90d5f03f6423ec67cc3c06fd0c4e813ec10c4313062b875b37d17593b57b4")
 
     on_install(function (package)

+ 49 - 0
packages/f/faker-cxx/xmake.lua

@@ -0,0 +1,49 @@
+package("faker-cxx")
+    set_homepage("https://cieslarmichal.github.io/faker-cxx/")
+    set_description("C++ Faker library for generating fake (but realistic) data.")
+    set_license("MIT")
+
+    add_urls("https://github.com/cieslarmichal/faker-cxx/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/cieslarmichal/faker-cxx.git")
+
+    add_versions("v2.0.0", "8a7f5441f4453af868444675878a2d9a74918c1595caa65d537d3ea327e46a49")
+
+    add_deps("cmake")
+    add_deps("fmt")
+
+    if on_check then
+        on_check(function (package)
+            assert(package:check_cxxsnippets({test = [[
+                #include <concepts>
+                #include <ranges>
+                static_assert(std::integral<bool>);
+                void test() {
+                    const auto v = {4, 1, 3, 2};
+                    auto it = std::ranges::find(v, 3);
+                }
+            ]]}, {configs = {languages = "c++20"}}), "package(faker-cxx) Require at least C++20.")
+        end)
+    end
+
+    on_install("!wasm", function (package)
+        local configs = {"-DBUILD_TESTING=OFF", "-DUSE_SYSTEM_DEPENDENCIES=ON", "-DUSE_STD_FORMAT=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"))
+
+        local cxflags
+        if package:has_tool("cxx", "cl") then
+            cxflags = "/utf-8"
+            if package:config("shared") then
+                table.insert(configs, "-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON")
+            end
+        end
+        import("package.tools.cmake").install(package, configs, {cxflags = cxflags})
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                const auto id = faker::string::uuid();
+            }
+        ]]}, {configs = {languages = "c++20"}, includes = "faker-cxx/String.h"}))
+    end)

+ 1 - 0
packages/f/fast-cdr/xmake.lua

@@ -6,6 +6,7 @@ package("fast-cdr")
     add_urls("https://github.com/eProsima/Fast-CDR/archive/refs/tags/$(version).tar.gz",
              "https://github.com/eProsima/Fast-CDR.git")
 
+    add_versions("v2.2.2", "ae8b78a23c2929f26813d791757d0ef63a5e47e00ccfd3482743af1e837d9556")
     add_versions("v2.2.1", "11079a534cda791a8fc28d93ecb518bbd3804c0d4e9ca340ab24dcc21ad69a04")
     add_versions("v2.1.3", "9a992cf20d8df727df1cd389cc36039c92bbe86762b2c17a479f4f59a499b1ea")
     add_versions("v1.1.0", "5c4b2ad5493abd30b9475b14856641a8944c98077a36bd0760c1d83c65216e67")

+ 1 - 0
packages/f/fastgltf/xmake.lua

@@ -6,6 +6,7 @@ package("fastgltf")
     add_urls("https://github.com/spnda/fastgltf/archive/refs/tags/$(version).tar.gz",
              "https://github.com/spnda/fastgltf.git")
 
+    add_versions("v0.7.2", "292fc9d0d5a6726c90db88c1aadf09e6d152ffc0ebffe6fb968736c47288511c")
     add_versions("v0.7.1", "44bcb025dd5cd480236a3bc7a3f8c9a708a801ed773b7859677440d22e0e1e7c")
 
     add_patches("0.7.1", "patches/0.7.1/cmake-simdjson.patch", "943828708f0e011122249196dc70d9a1f026e3212e1c1c35f6988907a6ea4e49")

+ 24 - 0
packages/f/fatal/xmake.lua

@@ -0,0 +1,24 @@
+package("fatal")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/facebook/fatal")
+    set_description("Fatal is a library for fast prototyping software in modern C++.")
+    set_license("BSD")
+
+    add_urls("https://github.com/facebook/fatal/releases/download/v$(version).00/fatal-v$(version).00.zip",
+             "https://github.com/facebook/fatal.git")
+
+    add_versions("2024.06.24", "9b134c46eec2a1fc38cfbfef13de11f7b252ded6d789d2460956d43b89719a8b")
+
+    on_install(function (package)
+        os.cp("fatal", package:installdir("include"))
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include "fatal/type/array.h"
+            void test() {
+                using arr_t = fatal::c_array<int, 3>;
+                arr_t arr{{'b', 'a', 'r'}};
+            }
+        ]]}, {configs = {languages = "c++17"}}))
+    end)

+ 7 - 1
packages/f/fbthrift/xmake.lua

@@ -10,6 +10,12 @@ package("fbthrift")
     add_versions("2024.03.18", "e1d8d7cc0a718e3c18934ac198ee3ad63848b90e8a19d62b2b7d54f0c878089c")
     add_versions("2024.03.25", "2a325446cd3a149a892c0c6abcb0f6f6cf83b72266d83ad279d2fdd9340aeef2")
     add_versions("2024.04.01", "e408a973a59a37def97a8e0ec368ee9fa39c8d49c925ecf7335f1c0463c1a819")
+    add_versions("2024.06.10", "a71481f9621891a5094d93a7c49d630ae544a1f056a93811742df6469b95bf64")
+    add_versions("2024.06.17", "bfacfe477c1152df43a1681c31801f337ef7f67bc85507e09340abdd146cca7f")
+    add_versions("2024.06.24", "78bbc48d1dfa8948580b780b3e827b4562102d2b9ca87db11b5a03ba277ac0e5")
+    add_versions("2024.07.01", "fa2302fdabf54780213cc3c5b7047226d7d9b91b8e1b9528330f1041c16b25eb")
+    add_versions("2024.07.08", "5efada565a85057824c58784dedd2600a03e531d526021bfe8bb8b655f56f09e")
+    add_versions("2024.07.15", "2671ebe49d6d379cc0f43c95c08a173fd6da6f04a9f748acdcda4d7a185f27f4")
 
     add_deps("cmake", "folly", "fizz", "wangle", "mvfst", "zstd", "python")
 
@@ -23,5 +29,5 @@ package("fbthrift")
     end)
 
     on_test(function (package)
-        assert(package:has_cxxincludes("thrift/lib/cpp2/async/HeaderClientChannel.h", {configs = {languages = "c++17"}}))
+        assert(package:has_cxxfuncs("apache::thrift::detail::validate_bool(0)", {includes = "thrift/lib/cpp2/protocol/Protocol.h", configs = {languages = "c++17"}}))
     end)

+ 3 - 0
packages/f/ffmpeg/xmake.lua

@@ -63,6 +63,9 @@ package("ffmpeg")
     end
 
     add_deps("nasm")
+    if is_plat("linux", "macosx") then
+        add_deps("pkg-config")
+    end
 
     on_fetch("mingw", "linux", "macosx", function (package, opt)
         import("lib.detect.find_tool")

+ 18 - 3
packages/f/fizz/xmake.lua

@@ -11,19 +11,34 @@ package("fizz")
     add_versions("2024.03.18", "f46799dda118ec5a35cf7533e00daf25e7b2d7c58f00b80ba6c0388b19190c6f")
     add_versions("2024.03.25", "bcf9c551719bc86318a77e2b13769d52679642b98728e645900485d7a90c0f8b")
     add_versions("2024.04.01", "caf2cf1ba8f6db66abbadf382fb3e0667888567c4ac0d8f74ec92e1fb27c3727")
+    add_versions("2024.06.10", "dabc77e2238383fb37c19327af8ab864ba030d32e98f49b23008075a7afb6e19")
+    add_versions("2024.06.17", "46e9d1b782a51b2c063390dc1161f26f2c77ef7a94ff8ccc4bdc272697cad8bb")
+    add_versions("2024.06.24", "b5fd5fb3fe1cf20519ea91d6a0127505596f8c74c82cde9d54ea6ae92df86a50")
+    add_versions("2024.07.01", "002bca2765cb0889ec535eeb1950acf93af57638a2da9b2deacc522113625fcc")
+    add_versions("2024.07.08", "dd80231fb79760ef0b15394364ddbe35d4da82a7e07238dbaaf2f98f267d3938")
+    add_versions("2024.07.15", "44da982621aa91f15f5b2ec7a27510aab4650383b3a135372586501f3f44fc6c")
 
-    add_deps("cmake", "folly", "libsodium")
+    add_deps("cmake", "folly", "libsodium", "liboqs")
 
     on_install("linux", "macosx", function (package)
         os.cd("fizz")
         local configs = {"-DBUILD_TESTS=OFF",
                          "-DBUILD_EXAMPLES=OFF",
-                         "-DCMAKE_CXX_STANDARD=17"}
+                         "-DCMAKE_CXX_STANDARD=17",
+                         "-DFIZZ_HAVE_OQS=TRUE"}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package: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)
-        assert(package:has_cxxincludes("fizz/server/AsyncFizzServer.h", {configs = {languages = "c++17"}}))
+        assert(package:check_cxxsnippets({test = [[
+            #include "fizz/experimental/crypto/exchange/OQSKeyExchange.h"
+            void test() {
+                auto clientKex = fizz::OQSClientKeyExchange(OQS_KEM_alg_kyber_768);
+                auto serverKex = fizz::OQSServerKeyExchange(OQS_KEM_alg_kyber_768);
+                clientKex.generateKeyPair();
+                serverKex.generateKeyPair();
+            }
+        ]]}, {configs = {languages = "c++17"}}))
     end)

+ 1 - 0
packages/f/flatbuffers/xmake.lua

@@ -10,6 +10,7 @@ package("flatbuffers")
     add_versions("v2.0.0", "ffd68aebdfb300c9e82582ea38bf4aa9ce65c77344c94d5047f3be754cc756ea")
     add_versions("v23.1.21", "48597d6a6f8ca67a02ae8d8494b3bfc9136eb93da60a538d5bfc024f7c564f97")
     add_versions("v23.5.26", "57bd580c0772fd1a726c34ab8bf05325293bc5f9c165060a898afa1feeeb95e1")
+    add_versions("v24.3.25", "e706f5eb6ca8f78e237bf3f7eccffa1c5ec9a96d3c1c938f08dc09aab1884528")
 
     add_deps("cmake")
     on_install("windows", "linux", "macosx", "mingw", "android", "iphoneos", "cross", function(package)

+ 2 - 0
packages/f/flecs/xmake.lua

@@ -5,6 +5,8 @@ package("flecs")
 
     add_urls("https://github.com/SanderMertens/flecs/archive/refs/tags/$(version).tar.gz",
              "https://github.com/SanderMertens/flecs.git")
+    add_versions("v4.0.0", "6c9826c8602f797acd775269d143763adfb3d3a93031cc81bced2b6d267469d2")
+    add_versions("v3.2.12", "976551dabeecf3ae109648034b8dbc47f39f50226b6d71d76bace1d0b6e2d8ae")
     add_versions("v3.2.11", "8ebc5f6f3ec7bbba30b0afe9d22f157437925772857ea1c6e4201eb5d31b4fe5")
     add_versions("v3.2.10", "b799e85d47b3e5c2e631ebbd3b81cc6af4be574fccbe07099c58252182827a88")
     add_versions("v3.2.9", "65d50d6058cd38308a0ad2a971afa9f64aef899ebf78d6a074d905922ec5fdf8")

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů