Prechádzať zdrojové kódy

Merge branch 'dev' into pcl-std-function

star9029 1 mesiac pred
rodič
commit
123cddae39
100 zmenil súbory, kde vykonal 3010 pridanie a 287 odobranie
  1. 21 17
      .github/workflows/android.yml
  2. 26 29
      .github/workflows/android_windows.yml
  3. 33 0
      .github/workflows/cross.yml
  4. 0 34
      .github/workflows/cross_musl.yml
  5. 1 0
      .github/workflows/deploy.yml
  6. 1 3
      .github/workflows/fedora.yml
  7. 2 2
      .github/workflows/freebsd.yml
  8. 3 0
      .github/workflows/macos_arm64.yml
  9. 4 1
      .github/workflows/macos_x86_64.yml
  10. 1 1
      .github/workflows/mingw_msys2.yml
  11. 1 1
      .github/workflows/sync.yml
  12. 1 0
      .github/workflows/sync_packagerefs.yml
  13. 12 0
      .github/workflows/ubuntu.yml
  14. 37 0
      .github/workflows/ubuntu_arm64.yml
  15. 2 2
      .github/workflows/ubuntu_clang.yml
  16. 5 17
      .github/workflows/windows.yml
  17. 41 0
      .github/workflows/windows_arm64.yml
  18. 1 1
      LICENSE.md
  19. 3 3
      NOTICE.md
  20. 2 2
      README.md
  21. 2 2
      README_zh.md
  22. 17 0
      packages/1/11zip/port/xmake.lua
  23. 28 0
      packages/1/11zip/xmake.lua
  24. 52 15
      packages/a/abseil/xmake.lua
  25. 172 0
      packages/a/ace/xmake.lua
  26. 253 0
      packages/a/acl-dev/patches/v3.6.2/build_install_only_static_or_shared.diff
  27. 62 0
      packages/a/acl-dev/patches/v3.6.2/debundle_iconv.diff
  28. 137 0
      packages/a/acl-dev/patches/v3.6.2/debundle_zlib.diff
  29. 16 0
      packages/a/acl-dev/patches/v3.6.2/export_unix.diff
  30. 65 0
      packages/a/acl-dev/patches/v3.6.2/fix_android_install_path.diff
  31. 161 0
      packages/a/acl-dev/xmake.lua
  32. 8 1
      packages/a/actor-framework/xmake.lua
  33. 40 7
      packages/a/ada/xmake.lua
  34. 27 0
      packages/a/ade/patches/0.1.2/cmake-mingw.patch
  35. 8 1
      packages/a/ade/xmake.lua
  36. 37 0
      packages/a/aklomp-base64/xmake.lua
  37. 30 0
      packages/a/alcatraz/xmake.lua
  38. 57 9
      packages/a/alembic/xmake.lua
  39. 27 0
      packages/a/algo_plus/xmake.lua
  40. 29 0
      packages/a/alpaca/xmake.lua
  41. 1 1
      packages/a/alsa-lib/xmake.lua
  42. 4 3
      packages/a/amgcl/xmake.lua
  43. 1 0
      packages/a/amqp-cpp/xmake.lua
  44. 33 0
      packages/a/amrex/patches/24.09/remove-symlink.patch
  45. 91 0
      packages/a/amrex/xmake.lua
  46. 34 0
      packages/a/anari/xmake.lua
  47. 3 1
      packages/a/angelscript/port/xmake.lua
  48. 18 3
      packages/a/angelscript/xmake.lua
  49. 21 0
      packages/a/annoy/xmake.lua
  50. 13 0
      packages/a/antlr4-runtime/patches/4.13.2/add-include-chrono.patch
  51. 13 7
      packages/a/antlr4-runtime/xmake.lua
  52. 19 0
      packages/a/antlr4/rules/find_antlr4.lua
  53. 176 0
      packages/a/antlr4/rules/g4.lua
  54. 33 0
      packages/a/antlr4/xmake.lua
  55. 43 0
      packages/a/aom/xmake.lua
  56. 2 0
      packages/a/apr/xmake.lua
  57. 27 13
      packages/a/aqt/xmake.lua
  58. 64 0
      packages/a/aravis/xmake.lua
  59. 11 0
      packages/a/arduinojson/xmake.lua
  60. 2 0
      packages/a/argparse/xmake.lua
  61. 36 0
      packages/a/argtable3/xmake.lua
  62. 39 0
      packages/a/argus/xmake.lua
  63. 31 0
      packages/a/argz/xmake.lua
  64. 25 0
      packages/a/arkari/xmake.lua
  65. 71 0
      packages/a/asbind20/xmake.lua
  66. 8 0
      packages/a/asio/xmake.lua
  67. 22 0
      packages/a/asio2/patches/2.9/remove-const.patch
  68. 22 6
      packages/a/asio2/xmake.lua
  69. 16 0
      packages/a/assimp/patches/5.4.3/fix_mingw.patch
  70. 10 0
      packages/a/assimp/xmake.lua
  71. 55 9
      packages/a/astc-encoder/xmake.lua
  72. 9 2
      packages/a/async_simple/xmake.lua
  73. 28 0
      packages/a/at-spi2-core/xmake.lua
  74. 16 9
      packages/a/atk/xmake.lua
  75. 3 0
      packages/a/atomic_queue/xmake.lua
  76. 2 0
      packages/a/audiofile/xmake.lua
  77. 27 0
      packages/a/aurora-au/xmake.lua
  78. 1 0
      packages/a/autoconf/xmake.lua
  79. 1 0
      packages/a/automake/xmake.lua
  80. 11 0
      packages/a/autotools/xmake.lua
  81. 1 0
      packages/a/avir/xmake.lua
  82. 19 7
      packages/a/aws-c-auth/xmake.lua
  83. 36 8
      packages/a/aws-c-cal/xmake.lua
  84. 20 3
      packages/a/aws-c-common/xmake.lua
  85. 15 11
      packages/a/aws-c-compression/xmake.lua
  86. 5 0
      packages/a/aws-c-event-stream/xmake.lua
  87. 22 6
      packages/a/aws-c-http/xmake.lua
  88. 38 10
      packages/a/aws-c-io/xmake.lua
  89. 6 0
      packages/a/aws-c-mqtt/xmake.lua
  90. 26 6
      packages/a/aws-c-s3/xmake.lua
  91. 16 12
      packages/a/aws-c-sdkutils/xmake.lua
  92. 38 6
      packages/a/aws-checksums/xmake.lua
  93. 8 0
      packages/a/aws-crt-cpp/xmake.lua
  94. 95 0
      packages/a/aws-lc/xmake.lua
  95. 4 0
      packages/b/b2/xmake.lua
  96. 40 0
      packages/b/babl/xmake.lua
  97. 68 16
      packages/b/backward-cpp/xmake.lua
  98. 13 0
      packages/b/bandit/patches/2023.08.05/debundle-snowhouse.patch
  99. 30 0
      packages/b/bandit/xmake.lua
  100. 43 0
      packages/b/barkeep/xmake.lua

+ 21 - 17
.github/workflows/android.yml

@@ -12,33 +12,37 @@ jobs:
       matrix:
         os: [ubuntu-latest]
         arch: [armeabi-v7a, arm64-v8a]
-        ndk: ["r22", "r26b"]
-        ndk_sdkver: ["29", "21"]
+        ndk: ["r22", "r27"]
+        ndk_sdkver: ["21", "30"]
 
     runs-on: ${{ matrix.os }}
 
     concurrency:
-        group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Android-${{ matrix.arch }}-${{ matrix.ndk }}-${{ matrix.ndk_sdkver }}
-        cancel-in-progress: true
+      group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Android-${{ matrix.arch }}-${{ matrix.ndk }}-${{ matrix.ndk_sdkver }}
+      cancel-in-progress: true
     steps:
+      - name: Cache ndk
+        id: cache-ndk
+        uses: actions/cache@v4
+        with:
+          path: ~/.xmake/packages/n/ndk
+          key: ${{ matrix.os }}-ndk
+
       - uses: actions/checkout@v1
+
       - uses: xmake-io/github-action-setup-xmake@v1
         with:
           xmake-version: branch@master
-          actions-cache-folder: '.xmake-cache'
-          actions-cache-key: 'android'
+          actions-cache-folder: ".xmake-cache"
+          actions-cache-key: "android"
 
-      - name: Prepare
+      - name: Tests
+        env:
+          ANDROID_NDK_ROOT: ""
+          ANDROID_NDK_HOME: ""
         run: |
-          if test ${{ matrix.ndk }} = "r26b"; then
-            wget -q https://dl.google.com/android/repository/android-ndk-r26b-linux.zip
-            unzip -q -o ./android-ndk-r26b-linux.zip
+          if test ${{ matrix.ndk }} = "r27"; then
+            xrepo env -y -b "ndk 27.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           else
-            wget -q https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip
-            unzip -q -o ./android-ndk-r22-linux-x86_64.zip
+            xrepo env -y -b "ndk 22.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           fi
-
-      - name: Tests
-        run: |
-          xmake l ./scripts/test.lua -D -p android --ndk=`pwd`/android-ndk-${{ matrix.ndk }} --ndk_sdkver=${{ matrix.ndk_sdkver }} -a ${{ matrix.arch }}
-

+ 26 - 29
.github/workflows/android_windows.yml

@@ -7,52 +7,49 @@ on:
 
 jobs:
   build:
-    runs-on: windows-latest
     strategy:
       fail-fast: false
       matrix:
+        os: [windows-latest]
         arch: [armeabi-v7a, arm64-v8a]
-        ndk: ["r22", "r26c"]
-        ndk_sdkver: ["29"]
+        ndk: ["r22", "r27"]
+        ndk_sdkver: ["30"]
+
+    runs-on: ${{ matrix.os }}
 
     concurrency:
-        group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Android-Windows-${{ matrix.arch }}-${{ matrix.ndk }}-${{ matrix.ndk_sdkver }}
-        cancel-in-progress: true
+      group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Android-Windows-${{ matrix.arch }}-${{ matrix.ndk }}-${{ matrix.ndk_sdkver }}
+      cancel-in-progress: true
     steps:
+      - name: Cache ndk
+        id: cache-ndk
+        uses: actions/cache@v4
+        with:
+          path: C:/Users/runneradmin/AppData/Local/.xmake/packages/n/ndk
+          key: ${{ matrix.os }}-ndk
+
       - uses: actions/checkout@v1
+
       - uses: xmake-io/github-action-setup-xmake@v1
         with:
           xmake-version: branch@master
+          actions-cache-folder: '.xmake-cache'
+          actions-cache-key: 'android-windows'
 
       - name: Configure Pagefile
-        uses: al-cheb/[email protected]
+        uses: al-cheb/configure-pagefile-action@v1.4
         with:
           minimum-size: 8GB
           maximum-size: 32GB
-          disk-root: "D:"
+          disk-root: "C:"
 
-      - name: Prepare
+      - name: Tests
+        env:
+          ANDROID_NDK_ROOT: ""
+          ANDROID_NDK_HOME: ""
         run: |
-          if ("${{ matrix.ndk }}" -eq "r26c") {
-            curl -fsSL "https://dl.google.com/android/repository/android-ndk-r26c-windows.zip" -o android-ndk-r26c-windows.zip
-            Expand-Archive ./android-ndk-r26c-windows.zip -DestinationPath ./ndk
+          if ("${{ matrix.ndk }}" -eq "r27") {
+            xrepo env -y -b "ndk 27.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           } else {
-            curl -fsSL "https://dl.google.com/android/repository/android-ndk-r22-windows-x86_64.zip" -o android-ndk-r22-windows-x86_64.zip
-            Expand-Archive ./android-ndk-r22-windows-x86_64.zip -DestinationPath ./ndk
+            xrepo env -y -b "ndk 22.0" xmake l ./scripts/test.lua -D -p android -a ${{ matrix.arch }} --ndk_sdkver=${{ matrix.ndk_sdkver }} 
           }
-
-      - name: Tests
-        run: |
-          git clone https://github.com/xmake-io/xmake.git --recurse-submodules -b master xmakesrc
-          cd xmakesrc/core
-          xmake
-          cd ../..
-          Copy-Item ./xmakesrc/core/build/xmake.exe ./xmakesrc/xmake
-          Copy-Item ./xmakesrc/scripts/xrepo.bat ./xmakesrc/xmake
-          Copy-Item ./xmakesrc/scripts/xrepo.ps1 ./xmakesrc/xmake
-          $Env:XMAKE_MAIN_REPO = "https://github.com/xmake-io/xmake-repo.git"
-          $Env:XMAKE_PROGRAM_DIR = $(Resolve-Path ./xmakesrc/xmake)
-          Set-Item -Path Env:Path -Value ($Env:XMAKE_PROGRAM_DIR + ";" + $Env:Path)
-          xmake --version
-          xmake l ./scripts/test.lua -D -p android --ndk=D:/a/xmake-repo/xmake-repo/ndk/android-ndk-${{ matrix.ndk }} --ndk_sdkver=${{ matrix.ndk_sdkver }} -a ${{ matrix.arch }}
-

+ 33 - 0
.github/workflows/cross.yml

@@ -0,0 +1,33 @@
+name: Cross
+
+on:
+  pull_request:
+    branches:
+      - dev
+
+jobs:
+  build:
+    strategy:
+      matrix:
+        os: [ubuntu-latest]
+        cross: [arm-none-linux-gnueabihf, aarch64-none-linux-gnu]
+
+    runs-on: ${{ matrix.os }}
+
+    concurrency:
+      group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Cross-${{ matrix.cross }}
+      cancel-in-progress: true
+    steps:
+      - uses: actions/checkout@v1
+      - uses: xmake-io/github-action-setup-xmake@v1
+        with:
+          xmake-version: branch@master
+
+      - name: Installation
+        run: |
+          wget https://developer.arm.com/-/media/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-${{ matrix.cross }}.tar.xz
+          tar -xvf arm-gnu-toolchain-13.3.rel1-x86_64-${{ matrix.cross }}.tar.xz
+
+      - name: Tests
+        run: |
+          xmake l ./scripts/test.lua -D -p cross --sdk=`pwd`/arm-gnu-toolchain-13.3.rel1-x86_64-${{ matrix.cross }}

+ 0 - 34
.github/workflows/cross_musl.yml

@@ -1,34 +0,0 @@
-name: Cross (Musl)
-
-on:
-  pull_request:
-    branches:
-      - dev
-
-jobs:
-  build:
-    strategy:
-      matrix:
-        os: [ubuntu-latest]
-        cross: [arm-linux-musleabi, aarch64-linux-musl]
-
-    runs-on: ${{ matrix.os }}
-
-    concurrency:
-        group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Cross-Musl-${{ matrix.cross }}
-        cancel-in-progress: true
-    steps:
-      - uses: actions/checkout@v1
-      - uses: xmake-io/github-action-setup-xmake@v1
-        with:
-          xmake-version: branch@master
-
-      - name: Installation
-        run: |
-          wget https://github.com/xmake-mirror/musl.cc/releases/download/20210202/${{ matrix.cross }}-cross.linux.tgz
-          tar -xvf ${{ matrix.cross }}-cross.linux.tgz
-
-      - name: Tests
-        run: |
-          xmake l ./scripts/test.lua -D -p cross --toolchain=muslcc --sdk=`pwd`/${{ matrix.cross }}-cross
-

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

@@ -7,6 +7,7 @@ on:
 
 jobs:
   build:
+    if: github.repository == 'xmake-io/xmake-repo'  # only runs on root repository
     strategy:
       matrix:
         os: [ubuntu-latest]

+ 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

+ 2 - 2
.github/workflows/freebsd.yml

@@ -26,9 +26,9 @@ jobs:
         with:
           usesh: true
           sync: sshfs
-          mem: 4096
+          mem: 12288
           copyback: false
-          prepare: pkg install -y git curl unzip gmake llvm gsed bash perl5 openssl
+          prepare: pkg install -y git curl unzip gmake llvm gsed bash perl5 openssl 7-zip
           run: |
             git config --global --add safe.directory `pwd`
             git clone --recurse-submodules https://github.com/xmake-io/xmake.git /tmp/xmake -b dev

+ 3 - 0
.github/workflows/macos_arm64.yml

@@ -30,4 +30,7 @@ jobs:
         run: |
           wget https://curl.haxx.se/ca/cacert.pem -O /tmp/cacert.pem
           export CURL_CA_BUNDLE=/tmp/cacert.pem
+          sudo ln -s /opt/homebrew/bin/gfortran-14 /opt/homebrew/bin/gfortran
+          export LIBRARY_PATH="$LIBRARY_PATH:/opt/homebrew/lib/gcc/14/"
+          export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/homebrew/lib/gcc/14/"
           xmake l ./scripts/test.lua -D -a ${{ matrix.arch }} -k ${{ matrix.kind }}

+ 4 - 1
.github/workflows/macos_x86_64.yml

@@ -10,7 +10,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [macos-12]
+        os: [macos-13]
         arch: [x86_64]
         kind: [static, shared]
 
@@ -30,4 +30,7 @@ jobs:
         run: |
           wget https://curl.haxx.se/ca/cacert.pem -O /tmp/cacert.pem
           export CURL_CA_BUNDLE=/tmp/cacert.pem
+          sudo ln -s /usr/local/bin/gfortran-14 /usr/local/bin/gfortran
+          export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/lib/gcc/14/"
+          export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib/gcc/14/"
           xmake l ./scripts/test.lua -D -a ${{ matrix.arch }} -k ${{ matrix.kind }}

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

@@ -27,7 +27,7 @@ jobs:
       - uses: msys2/setup-msys2@v2
         with:
           msystem: ${{ matrix.msystem }}
-          install: git base-devel unzip p7zip mingw-w64-${{ matrix.arch }}-toolchain
+          install: git base-devel unzip p7zip mingw-w64-${{ matrix.arch }}-toolchain mingw-w64-${{ matrix.arch }}-gcc-fortran
           update: true
 
       - name: Prepare

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

@@ -6,6 +6,7 @@ on:
 
 jobs:
   build:
+    if: github.repository == 'xmake-io/xmake-repo' # only runs on root repository
     strategy:
       matrix:
         os: [ubuntu-latest]
@@ -43,7 +44,6 @@ jobs:
           known_hosts: ${{ secrets.KNOWN_HOSTS }}
 
       - name: Update
-        if: ${{ github.repository }} == "xmake-io/xmake-repo"
         run: |
           export GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
           xmake l -vD ./scripts/sync.lua

+ 1 - 0
.github/workflows/sync_packagerefs.yml

@@ -6,6 +6,7 @@ on:
 
 jobs:
   build:
+    if: github.repository == 'xmake-io/xmake-repo' # only runs on root repository
     strategy:
       matrix:
         os: [ubuntu-latest]

+ 12 - 0
.github/workflows/ubuntu.yml

@@ -19,6 +19,18 @@ jobs:
         group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Linux-${{ matrix.kind }}-${{ matrix.mode }}
         cancel-in-progress: true
     steps:
+      - name: Free Disk Space
+        uses: jlumbroso/[email protected]
+        with:
+          tool-cache: false
+
+          android: true
+          dotnet: true
+          haskell: true
+          large-packages: true
+          docker-images: true
+          swap-storage: true
+
       - uses: actions/checkout@v1
       - uses: xmake-io/github-action-setup-xmake@v1
         with:

+ 37 - 0
.github/workflows/ubuntu_arm64.yml

@@ -0,0 +1,37 @@
+name: Linux (arm64)
+
+on:
+  pull_request:
+    branches:
+      - dev
+
+jobs:
+  build:
+    strategy:
+      matrix:
+        os: [ubuntu-24.04-arm]
+        kind: [static, shared]
+        mode: [debug, release]
+
+    runs-on: ${{ matrix.os }}
+
+    concurrency:
+        group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Linux-arm64-${{ matrix.kind }}-${{ matrix.mode }}
+        cancel-in-progress: true
+    steps:
+      - uses: actions/checkout@v1
+      - uses: xmake-io/github-action-setup-xmake@v1
+        with:
+          xmake-version: branch@master
+          actions-cache-folder: '.xmake-cache'
+          actions-cache-key: 'ubuntu-arm'
+
+      - name: Installation
+        run: |
+          # TODO we will remove it later
+          sudo apt-get update
+          sudo apt-get install -y libgl1-mesa-dev libglu1-mesa-dev p7zip gobjc gcc g++
+
+      - name: Tests
+        run: |
+          xmake l ./scripts/test.lua -D -k ${{ matrix.kind }} -m ${{ matrix.mode }}

+ 2 - 2
.github/workflows/ubuntu_clang.yml

@@ -36,8 +36,8 @@ jobs:
           # https://apt.llvm.org/
           wget https://apt.llvm.org/llvm.sh
           chmod +x llvm.sh
-          sudo ./llvm.sh 17 all
+          sudo ./llvm.sh 20 all
 
       - name: Tests
         run: |
-          xmake l ./scripts/test.lua -D --toolchain=clang-17 -k ${{ matrix.kind }}
+          xmake l ./scripts/test.lua -D --toolchain=clang-20 -k ${{ matrix.kind }}

+ 5 - 17
.github/workflows/windows.yml

@@ -10,7 +10,7 @@ jobs:
     strategy:
       fail-fast: false
       matrix:
-        os: [windows-2019, windows-2022]
+        os: [windows-2022, windows-2025]
         kind: [static, shared]
         arch: [x64, x86, arm64]
         runtimes: [MT, MD]
@@ -25,9 +25,11 @@ jobs:
       - uses: xmake-io/github-action-setup-xmake@v1
         with:
           xmake-version: branch@master
+          actions-cache-folder: '.xmake-cache'
+          actions-cache-key: 'windows'
 
       - name: Configure Pagefile
-        uses: al-cheb/configure-pagefile-action@v1.2
+        uses: al-cheb/configure-pagefile-action@v1.4
         with:
           minimum-size: 8GB
           maximum-size: 32GB
@@ -35,20 +37,6 @@ jobs:
 
       - name: Tests
         run: |
-          git clone https://github.com/xmake-io/xmake.git --recurse-submodules -b master xmakesrc
-          cd xmakesrc/core
-          xmake
-          cd ../..
-          Copy-Item ./xmakesrc/core/build/xmake.exe ./xmakesrc/xmake
-          Copy-Item ./xmakesrc/scripts/xrepo.bat ./xmakesrc/xmake
-          Copy-Item ./xmakesrc/scripts/xrepo.ps1 ./xmakesrc/xmake
-          $Env:XMAKE_MAIN_REPO = "https://github.com/xmake-io/xmake-repo.git"
-          $Env:XMAKE_PROGRAM_DIR = $(Resolve-Path ./xmakesrc/xmake)
-          Set-Item -Path Env:Path -Value ($Env:XMAKE_PROGRAM_DIR + ";" + $Env:Path)
           xmake --version
-          if ("${{ matrix.os }}" -eq "windows-2019") {
-            xmake l ./scripts/test.lua -vD -a ${{ matrix.arch }} -k ${{ matrix.kind }} --runtimes=${{ matrix.runtimes }} --vs_sdkver=10.0.19041.0 --linkjobs=2
-          } else {
-            xmake l ./scripts/test.lua -vD -a ${{ matrix.arch }} -k ${{ matrix.kind }} --runtimes=${{ matrix.runtimes }} --linkjobs=2
-          }
+          xmake l ./scripts/test.lua -vD -a ${{ matrix.arch }} -k ${{ matrix.kind }} --runtimes=${{ matrix.runtimes }} --linkjobs=2
 

+ 41 - 0
.github/workflows/windows_arm64.yml

@@ -0,0 +1,41 @@
+name: Windows (arm64)
+
+on:
+  pull_request:
+    branches:
+      - dev
+
+jobs:
+  build:
+    strategy:
+      fail-fast: false
+      matrix:
+        os: [windows-11-arm]
+        kind: [static, shared]
+        arch: [arm64]
+        runtimes: [MT, MD]
+
+    runs-on: ${{ matrix.os }}
+
+    concurrency:
+        group: ${{ github.ref }}-${{ github.base_ref }}-${{ github.head_ref }}-Windows-arm64-${{ matrix.os }}-${{ matrix.kind }}-${{ matrix.arch }}-${{ matrix.runtimes }}
+        cancel-in-progress: true
+    steps:
+      - uses: actions/checkout@v1
+      - uses: xmake-io/github-action-setup-xmake@v1
+        with:
+          xmake-version: branch@master
+          actions-cache-folder: '.xmake-cache'
+          actions-cache-key: 'windows-arm'
+
+      - name: Configure Pagefile
+        uses: al-cheb/[email protected]
+        with:
+          minimum-size: 8GB
+          maximum-size: 32GB
+          disk-root: "D:"
+
+      - name: Tests
+        run: |
+          xmake --version
+          xmake l ./scripts/test.lua -vD -a ${{ matrix.arch }} -k ${{ matrix.kind }} --runtimes=${{ matrix.runtimes }} --linkjobs=2

+ 1 - 1
LICENSE.md

@@ -187,7 +187,7 @@
       same "printed page" as the copyright notice for easier
       identification within third-party archives.
 
-   Copyright 2017-2018 TBOOX Open Source Group
+   Copyright 2017-2018 Xmake Open Source Community
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.

+ 3 - 3
NOTICE.md

@@ -1,7 +1,7 @@
 A package repository based on xmake
-Copyright 2017-2018 The TBOOX Open Source Group
+Copyright 2017-2018 The Xmake Open Source Community
 
-This product includes software developed by The TBOOX Open Source Group (http://www.tboox.org/).
+This product includes software developed by The Xmake Open Source Community (https://xmake.io/).
 
 -------------------------------------------------------------------------------
 
@@ -11,6 +11,6 @@ which can be obtained at:
   * LICENSE:
     * https://github.com/xmake-io/xmake/blob/master/LICENSE.md (Apache License 2.0)
   * HOMEPAGE:
-    * http://www.tboox.org/
+    * https://xmake.io
 
 

+ 2 - 2
README.md

@@ -1,6 +1,6 @@
 <div align="center">
   <a href="https://xmake.io">
-    <img width="160" heigth="160" src="https://tboox.org/static/img/xmake/logo256c.png">
+    <img width="160" height="160" src="https://xmake.io/assets/img/logo.png">
   </a>
 
   <h1>xmake-repo</h1>
@@ -134,5 +134,5 @@ packages/l/libpng/xmake.lua generated!
 $ xmake l scripts/test.lua --shallow -vD zlib
 $ xmake l scripts/test.lua --shallow -vD -p iphoneos zlib
 $ xmake l scripts/test.lua --shallow -vD -k shared -m debug zlib
-$ xmake l scripts/test.lua --shallow -vD --vs_runtime=MD zlib
+$ xmake l scripts/test.lua --shallow -vD --runtimes=MD zlib
 ```

+ 2 - 2
README_zh.md

@@ -1,6 +1,6 @@
 <div align="center">
   <a href="https://xmake.io">
-    <img width="160" heigth="160" src="https://tboox.org/static/img/xmake/logo256c.png">
+    <img width="160" height="160" src="https://xmake.io/assets/img/logo.png">
   </a>
 
   <h1>xmake-repo</h1>
@@ -129,5 +129,5 @@ packages/l/libpng/xmake.lua generated!
 $ xmake l scripts/test.lua --shallow -vD zlib
 $ xmake l scripts/test.lua --shallow -vD -p iphoneos zlib
 $ xmake l scripts/test.lua --shallow -vD -k shared -m debug zlib
-$ xmake l scripts/test.lua --shallow -vD --vs_runtime=MD zlib
+$ xmake l scripts/test.lua --shallow -vD --runtimes=MD zlib
 ```

+ 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)

+ 52 - 15
packages/a/abseil/xmake.lua

@@ -1,11 +1,14 @@
 package("abseil")
-
     set_homepage("https://abseil.io")
     set_description("C++ Common Libraries")
     set_license("Apache-2.0")
 
-    add_urls("https://github.com/abseil/abseil-cpp/archive/$(version).tar.gz",
+    add_urls("https://github.com/abseil/abseil-cpp/archive/refs/tags/$(version).tar.gz",
              "https://github.com/abseil/abseil-cpp.git")
+
+    add_versions("20250512.1", "9b7a064305e9fd94d124ffa6cc358592eb42b5da588fb4e07d09254aa40086db")
+    add_versions("20250512.0", "7262daa7c1711406248c10f41026d685e88223bc92817d16fb93c19adb57f669")
+    add_versions("20250127.1", "b396401fd29e2e679cace77867481d388c807671dc2acc602a0259eeb79b7811")
     add_versions("20200225.1", "0db0d26f43ba6806a8a3338da3e646bb581f0ca5359b3a201d8fb8e4752fd5f8")
     add_versions("20210324.1", "441db7c09a0565376ecacf0085b2d4c2bbedde6115d7773551bc116212c2a8d6")
     add_versions("20210324.2", "59b862f50e710277f8ede96f083a5bb8d7c9595376146838b9580be90374ee1f")
@@ -15,28 +18,62 @@ package("abseil")
     add_versions("20230802.1", "987ce98f02eefbaf930d6e38ab16aa05737234d7afbab2d5c4ea7adbe50c28ed")
     add_versions("20240116.1", "3c743204df78366ad2eaf236d6631d83f6bc928d1705dd0000b872e53b73dc6a")
     add_versions("20240116.2", "733726b8c3a6d39a4120d7e45ea8b41a434cdacde401cba500f14236c49b39dc")
+    add_versions("20240722.0", "f50e5ac311a81382da7fa75b97310e4b9006474f9560ac46f54a9967f07d4ae3")
+    add_versions("20250127.0", "16242f394245627e508ec6bb296b433c90f8d914f73b9c026fddb905e27276e8")
+
+    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"}})
 
-    if is_plat("macosx") then
-        add_frameworks("CoreFoundation")
-    end
-
     on_load(function (package)
+        if package:is_plat("windows", "mingw", "msys") then
+            package:add("syslinks", "advapi32", "dbghelp", "bcrypt")
+        elseif package:is_plat("linux", "bsd") then
+            package:add("syslinks", "pthread")
+        elseif package:is_plat("macosx", "iphoneos") then
+            package:add("frameworks", "CoreFoundation")
+        end
+
         if package:is_plat("windows") and package:config("shared") then
             package:add("defines", "ABSL_CONSUME_DLL")
         end
     end)
 
-    on_install("macosx", "linux", "windows", "mingw", "cross", function (package)
+    on_install(function (package)
         if package:version() and package:version():eq("20230802.1") and package:is_plat("mingw") then
             io.replace(path.join("absl", "synchronization", "internal", "pthread_waiter.h"), "#ifndef _WIN32", "#if !defined(_WIN32) && !defined(__MINGW32__)", {plain = true})
             io.replace(path.join("absl", "synchronization", "internal", "win32_waiter.h"), "#if defined(_WIN32) && _WIN32_WINNT >= _WIN32_WINNT_VISTA", "#if defined(_WIN32) && !defined(__MINGW32__) && _WIN32_WINNT >= _WIN32_WINNT_VISTA", {plain = true})
         end
-        local configs = {"-DCMAKE_CXX_STANDARD=" .. package:config("cxx_standard"), "-DABSL_ENABLE_INSTALL=ON", "-DABSL_PROPAGATE_CXX_STD=ON"}
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+        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})
+        if package:version() and package:is_plat("macosx") then
+            local file_path = path.join("absl", "time", "internal", "cctz", "src", "time_zone_format.cc")
+            if  package:version():ge("20240116.1") and package:version():le("20250512.1") then
+                io.replace(
+                    file_path,
+                    "#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__OpenBSD__)", 
+                    "#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__APPLE__)",
+                    {plain = true}
+                )
+            elseif package:version():eq("20230802.1") then
+                io.replace(
+                    file_path,
+                    "#if !defined(_XOPEN_SOURCE) && !defined(__OpenBSD__)", 
+                    "#if !defined(_XOPEN_SOURCE) && !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__APPLE__)",
+                    {plain = true}
+                )
+            end
+        end
+
+        local configs = {
+            "-DCMAKE_CXX_STANDARD=" .. package:config("cxx_standard"),
+            "-DABSL_ENABLE_INSTALL=ON",
+            "-DABSL_PROPAGATE_CXX_STD=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"))
         import("package.tools.cmake").install(package, configs, {buildir = os.tmpfile() .. ".dir"})
 
@@ -74,11 +111,11 @@ package("abseil")
             #include <string>
             #include <vector>
             void test() {
-              std::vector<std::string> v = {"foo", "bar", "baz"};
-              std::string s = absl::StrJoin(v, "-");
-              int result = 0;
-              auto a = absl::SimpleAtoi("123", &result);
-              std::cout << "Joined string: " << s << "\\n";
+                std::vector<std::string> v = {"foo", "bar", "baz"};
+                std::string s = absl::StrJoin(v, "-");
+                int result = 0;
+                auto a = absl::SimpleAtoi("123", &result);
+                std::cout << "Joined string: " << s << "\\n";
             }
-        ]]}, {configs = {languages = "cxx17"}}))
+        ]]}, {configs = {languages = "cxx" .. package:config("cxx_standard")}}))
     end)

+ 172 - 0
packages/a/ace/xmake.lua

@@ -0,0 +1,172 @@
+package("ace")
+    set_homepage("https://www.dre.vanderbilt.edu/~schmidt/ACE.html")
+    set_description("ACE (ADAPTIVE Communication Environment) is a C++ framework for implementing distributed and networked applications.")
+    set_license("DOC")
+
+    add_urls("https://github.com/DOCGroup/ACE_TAO/releases/download/$(version).tar.gz", {version = function (version) 
+        return "ACE%2BTAO-" .. version:gsub("%.", "_")  .. "/ACE-" .. version
+    end})
+
+    add_versions("8.0.3", "d8fcd1f5fab609ab11ed86abdbd61e6d00d5305830fa6e57c17ce395af5e86dc")
+
+    if not is_plat("windows") then
+        add_configs("ssl", {description = "Build with OpenSSL support.", default = true, type = "boolean"})
+    end
+
+    on_load(function (package)
+        package:add("defines", "ACE_HAS_CPP17")
+        if package:is_plat("windows") then
+            package:add("syslinks", "iphlpapi", "user32", "advapi32")
+            package:add("defines", "WIN32")
+        else
+            if not package:is_plat("android") then
+                package:add("deps", "autotools")
+            end
+            if package:is_plat("linux", "bsd") then
+                package:add("syslinks", "pthread")
+            end
+        end
+        if not package:is_plat("windows") and package:config("ssl") then
+            package:add("deps", "openssl")
+        end
+        if not package:config("shared") then
+            package:add("defines", "ACE_AS_STATIC_LIBS")
+        end
+    end)
+
+    on_install("linux", "macosx", "bsd", "iphoneos", "android", function(package)
+        import("package.tools.make")
+        local envs = make.buildenvs(package)
+        if package:is_plat("linux") then
+            io.writefile("ace/config.h", [[#include "ace/config-linux.h"]])
+            io.writefile("include/makeinclude/platform_macros.GNU", [[include $(ACE_ROOT)/include/makeinclude/platform_linux_common.GNU]])
+        elseif package:is_plat("macosx") then
+            io.writefile("ace/config.h", [[#include "ace/config-macosx.h"]])
+            io.writefile("include/makeinclude/platform_macros.GNU", [[include $(ACE_ROOT)/include/makeinclude/platform_macosx.GNU]])
+        elseif package:is_plat("bsd") then
+            io.writefile("ace/config.h", [[#include "ace/config-freebsd.h"]])
+            io.writefile("include/makeinclude/platform_macros.GNU", [[include $(ACE_ROOT)/include/makeinclude/platform_freebsd.GNU]])
+        elseif package:is_plat("iphoneos") then
+            io.writefile("ace/config.h", [[#include "ace/config-macosx-iOS.h"]])
+            io.writefile("include/makeinclude/platform_macros.GNU", [[include $(ACE_ROOT)/include/makeinclude/platform_macosx_iOS.GNU]])
+            envs.IPHONE_TARGET = "HARDWARE"
+            io.replace("include/makeinclude/platform_macosx_iOS.GNU", "CCFLAGS += -DACE_HAS_IOS", "CCFLAGS += -DACE_HAS_IOS -std=c++17", {plain = true})
+        else
+            import("core.tool.toolchain")
+            io.writefile("ace/config.h", [[#include "ace/config-android.h"]])
+            io.writefile("include/makeinclude/platform_macros.GNU", [[include $(ACE_ROOT)/include/makeinclude/platform_android.GNU]])
+            local ndk = toolchain.load("ndk", {plat = package:plat(), arch = package:arch()})
+            local ndk_sdkver = ndk:config("ndk_sdkver")
+            local ndk_dir = ndk:config("ndk")
+            envs.android_abi = package:arch()
+            envs.android_ndk = path.unix(ndk_dir)
+            envs.android_api = ndk_sdkver
+            envs.ARFLAGS = [[rc]]
+            io.replace("include/makeinclude/platform_android.GNU", "OCCFLAGS ?= -O3", "OCCFLAGS ?= -O3\nCCFLAGS += -std=c++17", {plain = true})
+        end
+        os.cp("ace/**.h", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.inl", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.cpp", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.tpp", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.ipp", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.hpp", package:installdir("include/ace"), {rootdir = "ace"})
+        envs.ACE_ROOT = os.curdir()
+        local configs = {
+            "debug=" .. (package:is_debug() and "1" or "0"),
+            "shared_libs=" .. (package:config("shared") and "1" or "0"),
+            "static_libs=" .. (package:config("shared") and "0" or "1"),
+            "ssl=" .. (package:config("ssl") and "1" or "0"),
+            "threads=1"
+        }
+        if package:config("ssl") then
+            envs.SSL_ROOT = package:dep("openssl"):installdir()
+            envs.SSL_INCDIR = package:dep("openssl"):installdir("include")
+            envs.SSL_LIBDIR = package:dep("openssl"):installdir("lib")
+        end
+        os.cd("ace")
+        make.build(package, configs, {envs = envs})
+        os.trycp("**.dylib", package:installdir("lib"))
+        os.trycp("**.so", package:installdir("lib"))
+        os.trycp("**.a", package:installdir("lib"))
+    end)
+
+    on_install("windows", function(package)
+        import("package.tools.msbuild")
+        io.writefile("ace/config.h", [[#include "ace/config-win32.h"]])
+        os.cp("ace/**.h", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.inl", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.cpp", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.tpp", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.ipp", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cp("ace/**.hpp", package:installdir("include/ace"), {rootdir = "ace"})
+        os.cd("ace")
+        for _, vcxproj in ipairs({"ACE_vs2022.vcxproj",
+                "Compression/ACE_Compression_vs2022.vcxproj",
+                "Compression/rle/ACE_RLECompression_vs2022.vcxproj",
+                "ETCL/ACE_ETCL_vs2022.vcxproj",
+                "ETCL/ACE_ETCL_Parser_vs2022.vcxproj",
+                "QoS/QoS_vs2022.vcxproj",
+                "Monitor_Control/Monitor_Control_vs2022.vcxproj"}) do
+            if package:has_runtime("MT", "MTd") then
+                -- Allow MT, MTd
+                io.replace(vcxproj, "<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>", "<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>", {plain = true})
+                io.replace(vcxproj, "<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>", "<RuntimeLibrary>MultiThreaded</RuntimeLibrary>", {plain = true})
+            end
+            if not package:config("shared") then
+                io.replace(vcxproj, "DynamicLibrary", "StaticLibrary", {plain = true})
+                io.replace(vcxproj, "ACE_BUILD_DLL", "ACE_AS_STATIC_LIBS", {plain = true})
+                io.replace(vcxproj, "ACE_[%w_]+_BUILD_DLL", "ACE_AS_STATIC_LIBS", {plain = false})
+                io.replace(vcxproj, "[%w_]+_[%w_]+_BUILD_DLL", "ACE_AS_STATIC_LIBS", {plain = false})
+            end
+            -- Allow use another Win SDK
+            io.replace(vcxproj, "<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>", "", {plain = true})
+            -- Disable LTCG
+            io.replace(vcxproj, "<WholeProgramOptimization>true</WholeProgramOptimization>", "", {plain = true})
+        end
+        local configs = { "ACE_vs2022.sln" }
+        local arch = package:is_arch("x64") and "x64" or "Win32"
+        if package:is_arch("arm64") then
+            arch = "ARM64"
+        end
+        local mode = package:is_debug() and "Debug" or "Release"
+        table.insert(configs, "/p:Configuration=" .. mode)
+        table.insert(configs, "/p:Platform=" .. arch)
+        -- Wrap vstool so it would build for another vstools
+        local msvc = import("core.tool.toolchain").load("msvc")
+        local vs = msvc:config("vs")
+        local vstool
+        if     vs == "2015" then vstool = "v140"
+        elseif vs == "2017" then vstool = "v141"
+        elseif vs == "2019" then vstool = "v142"
+        elseif vs == "2022" then vstool = "v143"
+        end
+        table.insert(configs, "/p:PlatformToolset=" .. vstool)
+        msbuild.build(package, configs)
+        os.cd("..")
+        os.cp("**.lib", package:installdir("lib"))
+        if package:config("shared") then
+            os.cp("**.dll", package:installdir("bin"))
+        end
+    end)
+
+    on_test(function (package)
+        if package:is_plat("windows") then
+            assert(package:check_cxxsnippets({test = [[
+                    #define WIN32_LEAN_AND_MEAN
+                    #include <windows.h>
+                    #include <ace/ACE.h>
+                    void test() {
+                        auto c_name = ACE::compiler_name();
+                    }
+                ]]
+            }, {configs = {languages = "c++17"}}))
+        else
+            assert(package:check_cxxsnippets({test = [[
+                    #include <ace/ACE.h>
+                    void test() {
+                        auto c_name = ACE::compiler_name();
+                    }
+                ]]
+            }, {configs = {languages = "c++17"}}))
+        end
+    end)

+ 253 - 0
packages/a/acl-dev/patches/v3.6.2/build_install_only_static_or_shared.diff

@@ -0,0 +1,253 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 4848fd3..767ad0a 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -79,6 +79,8 @@ if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ 	set(CMAKE_MACOSX_RPATH build)
+ endif()
+ 
++option (BUILD_SHARED_LIBS "Build shared libraries" ON)
++
+ add_subdirectory(lib_acl acl)
+ add_subdirectory(lib_protocol protocol)
+ add_subdirectory(lib_acl_cpp acl_cpp)
+diff --git a/lib_acl/CMakeLists.txt b/lib_acl/CMakeLists.txt
+index 287d5f3..5d42c9e 100644
+--- a/lib_acl/CMakeLists.txt
++++ b/lib_acl/CMakeLists.txt
+@@ -202,11 +202,13 @@ endif()
+ 
+ link_directories(${acl_output_path})
+ 
+-if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-	install(TARGETS acl_static
+-		EXPORT acl_static-targets
+-		ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-	)
++if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++	if (NOT BUILD_SHARED_LIBS)
++		install(TARGETS acl_static
++			EXPORT acl_static-targets
++			ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++		)
++	endif()
+ endif()
+ 
+ if (CMAKE_INSTALL_INCLUDEDIR MATCHES "")
+@@ -253,12 +255,19 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		set_target_properties(acl_shared PROPERTIES OUTPUT_NAME "acl")
+ 	endif()
+ 
+-	if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		install(TARGETS acl_shared
+-			EXPORT acl_shared-targets
+-			LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-		)
++	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++		if (BUILD_SHARED_LIBS)
++			install(TARGETS acl_shared
++				EXPORT acl_shared-targets
++				LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++			)
++		endif()
+ 	endif()
++	if (BUILD_SHARED_LIBS)
++		set_target_properties(acl_static PROPERTIES EXCLUDE_FROM_ALL 1)
++	else()
++		set_target_properties(acl_shared PROPERTIES EXCLUDE_FROM_ALL 1)
++	endif()
+ endif()
+ 
+ ##############################################################################
+diff --git a/lib_acl_cpp/CMakeLists.txt b/lib_acl_cpp/CMakeLists.txt
+index 08c558e..ef3cf7c 100644
+--- a/lib_acl_cpp/CMakeLists.txt
++++ b/lib_acl_cpp/CMakeLists.txt
+@@ -276,11 +276,13 @@ endif()
+ 
+ link_directories(${lib_output_path})
+ 
+-if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-	install(TARGETS acl_cpp_static
+-		EXPORT acl_cpp_static-targets
+-		ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-	)
++if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++	if (NOT BUILD_SHARED_LIBS)
++		install(TARGETS acl_cpp_static
++			EXPORT acl_cpp_static-targets
++			ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++		)
++	endif()
+ endif()
+ 
+ if (CMAKE_INSTALL_INCLUDEDIR MATCHES "")
+@@ -337,12 +339,19 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		target_link_libraries(acl_cpp_shared protocol acl)
+ 	endif()
+ 
+-	if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		install(TARGETS acl_cpp_shared
+-			EXPORT acl_cpp_shared-targets
+-			LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-		)
++	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++		if (BUILD_SHARED_LIBS)
++			install(TARGETS acl_cpp_shared
++				EXPORT acl_cpp_shared-targets
++				LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++			)
++		endif()
+ 	endif()
++	if (BUILD_SHARED_LIBS)
++		set_target_properties(acl_cpp_static PROPERTIES EXCLUDE_FROM_ALL 1)
++	else()
++		set_target_properties(acl_cpp_shared PROPERTIES EXCLUDE_FROM_ALL 1)
++	endif()
+ endif()
+ 
+ ##############################################################################
+diff --git a/lib_fiber/c/CMakeLists.txt b/lib_fiber/c/CMakeLists.txt
+index c784212..fe6fb71 100644
+--- a/lib_fiber/c/CMakeLists.txt
++++ b/lib_fiber/c/CMakeLists.txt
+@@ -163,11 +163,13 @@ endif()
+ 
+ link_directories(${lib_output_path})
+ 
+-if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-	install(TARGETS fiber_static
+-		EXPORT fiber_static-targets
+-		ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-	)
++if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++	if (NOT BUILD_SHARED_LIBS)
++		install(TARGETS fiber_static
++			EXPORT fiber_static-targets
++			ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++		)
++	endif()
+ endif()
+ 
+ if (CMAKE_INSTALL_INCLUDEDIR MATCHES "")
+@@ -215,12 +217,19 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		set(CMAKE_SHARED_LINKER_FLAGS "${sys_ldflags}")
+ 	endif()
+ 
+-	if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		install(TARGETS fiber_shared
+-			EXPORT fiber_shared-targets
+-			LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-		)
++	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++		if (BUILD_SHARED_LIBS)
++			install(TARGETS fiber_shared
++				EXPORT fiber_shared-targets
++				LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++			)
++		endif()
+ 	endif()
++	if (BUILD_SHARED_LIBS)
++		set_target_properties(fiber_static PROPERTIES EXCLUDE_FROM_ALL 1)
++	else()
++		set_target_properties(fiber_shared PROPERTIES EXCLUDE_FROM_ALL 1)
++	endif()
+ endif()
+ 
+ ##############################################################################
+diff --git a/lib_fiber/cpp/CMakeLists.txt b/lib_fiber/cpp/CMakeLists.txt
+index 4d70233..87c99f1 100644
+--- a/lib_fiber/cpp/CMakeLists.txt
++++ b/lib_fiber/cpp/CMakeLists.txt
+@@ -152,11 +152,13 @@ endif()
+ 
+ link_directories(${lib_output_path})
+ 
+-if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-	install(TARGETS fiber_cpp_static
+-		EXPORT fiber_cpp_static-targets
+-		ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-	)
++if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++	if (NOT BUILD_SHARED_LIBS)
++		install(TARGETS fiber_cpp_static
++			EXPORT fiber_cpp_static-targets
++			ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++		)
++	endif()
+ endif()
+ 
+ if (CMAKE_INSTALL_INCLUDEDIR MATCHES "")
+@@ -210,12 +212,19 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		target_link_libraries(fiber_cpp_shared acl_cpp protocol acl fiber)
+ 	endif()
+ 
+-	if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		install(TARGETS fiber_cpp_shared
+-			EXPORT fiber_cpp_shared-targets
+-			LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-		)
++	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++		if (BUILD_SHARED_LIBS)
++			install(TARGETS fiber_cpp_shared
++				EXPORT fiber_cpp_shared-targets
++				LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++			)
++		endif()
+ 	endif()
++	if (BUILD_SHARED_LIBS)
++		set_target_properties(fiber_cpp_static PROPERTIES EXCLUDE_FROM_ALL 1)
++	else()
++		set_target_properties(fiber_cpp_shared PROPERTIES EXCLUDE_FROM_ALL 1)
++	endif()
+ endif()
+ 
+ ##############################################################################
+diff --git a/lib_protocol/CMakeLists.txt b/lib_protocol/CMakeLists.txt
+index b53ee88..b26bdf0 100644
+--- a/lib_protocol/CMakeLists.txt
++++ b/lib_protocol/CMakeLists.txt
+@@ -153,11 +153,13 @@ endif()
+ 
+ link_directories(${lib_output_path})
+ 
+-if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-	install(TARGETS protocol_static
+-		EXPORT protocol_static-targets
+-		ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-	)
++if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++	if (NOT BUILD_SHARED_LIBS)
++		install(TARGETS protocol_static
++			EXPORT protocol_static-targets
++			ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++		)
++	endif()
+ endif()
+ 
+ if (CMAKE_INSTALL_INCLUDEDIR MATCHES "")
+@@ -211,12 +213,19 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		target_link_libraries(protocol_shared acl)
+ 	endif()
+ 
+-	if(CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		install(TARGETS protocol_shared
+-			EXPORT protocol_shared-targets
+-			LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+-		)
++	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
++		if (BUILD_SHARED_LIBS)
++			install(TARGETS protocol_shared
++				EXPORT protocol_shared-targets
++				LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
++			)
++		endif()
+ 	endif()
++	if (BUILD_SHARED_LIBS)
++		set_target_properties(protocol_static PROPERTIES EXCLUDE_FROM_ALL 1)
++	else()
++		set_target_properties(protocol_shared PROPERTIES EXCLUDE_FROM_ALL 1)
++	endif()
+ endif()
+ 
+ ##############################################################################

+ 62 - 0
packages/a/acl-dev/patches/v3.6.2/debundle_iconv.diff

@@ -0,0 +1,62 @@
+diff --git a/lib_acl_cpp/CMakeLists.txt b/lib_acl_cpp/CMakeLists.txt
+index 08aabee..b55c6dc 100644
+--- a/lib_acl_cpp/CMakeLists.txt
++++ b/lib_acl_cpp/CMakeLists.txt
+@@ -263,7 +263,7 @@ set(LIBRARY_OUTPUT_PATH ${lib_output_path})
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${lib_output_path})
+ 
+ add_library(acl_cpp_static STATIC ${lib_src})
+-target_link_libraries(acl_cpp_static ZLIB::ZLIB)
++target_link_libraries(acl_cpp_static ZLIB::ZLIB Iconv::Iconv)
+ 
+ if (${WIN_OS})
+ 	set_target_properties(acl_cpp_static PROPERTIES
+@@ -309,7 +309,7 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		target_compile_options(acl_cpp_static PRIVATE
+ 				-fvisibility=hidden -fvisibility-inlines-hidden)
+ 	elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		set(sys_ldflags "-shared -liconv -lpthread -ldl")
++		set(sys_ldflags "-shared -lpthread -ldl")
+ 		target_compile_options(acl_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 		set(CMAKE_MACOSX_RPATH 1)
+@@ -337,7 +337,7 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		set(lc_flags "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${lib_output_path}")
+ 		set(CMAKE_SHARED_LINKER_FLAGS "${lc_flags} ${sys_ldflags}")
+ 		set_target_properties(acl_cpp_shared PROPERTIES OUTPUT_NAME "acl_cpp")
+-		target_link_libraries(acl_cpp_shared protocol acl ZLIB::ZLIB)
++		target_link_libraries(acl_cpp_shared protocol acl ZLIB::ZLIB Iconv::Iconv)
+ 	endif()
+ 
+ 	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
+diff --git a/lib_fiber/cpp/CMakeLists.txt b/lib_fiber/cpp/CMakeLists.txt
+index 6b93850..2aa6804 100644
+--- a/lib_fiber/cpp/CMakeLists.txt
++++ b/lib_fiber/cpp/CMakeLists.txt
+@@ -139,7 +139,7 @@ set(LIBRARY_OUTPUT_PATH ${lib_output_path})
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${lib_output_path})
+ 
+ add_library(fiber_cpp_static STATIC ${lib_src})
+-target_link_libraries(fiber_cpp_static ZLIB::ZLIB)
++target_link_libraries(fiber_cpp_static ZLIB::ZLIB Iconv::Iconv)
+ 
+ if (${WIN_OS})
+ 	set_target_properties(fiber_cpp_static PROPERTIES
+@@ -181,7 +181,7 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		target_compile_options(fiber_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 	elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		set(sys_ldflags "-shared -liconv -lpthread -ldl")
++		set(sys_ldflags "-shared -lpthread -ldl")
+ 		target_compile_options(fiber_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 		set(CMAKE_MACOSX_RPATH 1)
+@@ -210,7 +210,7 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		set_target_properties(fiber_cpp_shared PROPERTIES OUTPUT_NAME "fiber_cpp")
+ 		set(lc_ldflags "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${lib_output_path}")
+ 		set(CMAKE_SHARED_LINKER_FLAGS "${lc_ldflags} ${sys_ldflags}")
+-		target_link_libraries(fiber_cpp_shared acl_cpp protocol acl fiber ZLIB::ZLIB)
++		target_link_libraries(fiber_cpp_shared acl_cpp protocol acl fiber ZLIB::ZLIB Iconv::Iconv)
+ 	endif()
+ 
+ 	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")

+ 137 - 0
packages/a/acl-dev/patches/v3.6.2/debundle_zlib.diff

@@ -0,0 +1,137 @@
+diff --git a/lib_acl_cpp/CMakeLists.txt b/lib_acl_cpp/CMakeLists.txt
+index ea3868d..52f868f 100644
+--- a/lib_acl_cpp/CMakeLists.txt
++++ b/lib_acl_cpp/CMakeLists.txt
+@@ -263,6 +263,7 @@ set(LIBRARY_OUTPUT_PATH ${lib_output_path})
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${lib_output_path})
+ 
+ add_library(acl_cpp_static STATIC ${lib_src})
++target_link_libraries(acl_cpp_static ZLIB::ZLIB)
+ 
+ if (${WIN_OS})
+ 	set_target_properties(acl_cpp_static PROPERTIES
+@@ -297,23 +298,23 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/acl_cpp/
+ if (ACL_BUILD_SHARED MATCHES "YES")
+ 	if (CMAKE_SYSTEM_NAME MATCHES "Android")
+ 		if (ANDROID_STL MATCHES "gnustl_shared")
+-			set(sys_ldflags "-shared -lz")
++			set(sys_ldflags "-shared")
+ 		else()
+-			set(sys_ldflags "-shared -flto -lz")
++			set(sys_ldflags "-shared -flto")
+ 		endif()
+ 		target_compile_options(acl_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 	elseif (CMAKE_SYSTEM_NAME MATCHES "OHOS")
+-		set(sys_ldflags "-shared -flto -lz")
++		set(sys_ldflags "-shared -flto")
+ 		target_compile_options(acl_cpp_static PRIVATE
+ 				-fvisibility=hidden -fvisibility-inlines-hidden)
+ 	elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		set(sys_ldflags "-shared -lz -liconv -lpthread -ldl")
++		set(sys_ldflags "-shared -liconv -lpthread -ldl")
+ 		target_compile_options(acl_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 		set(CMAKE_MACOSX_RPATH 1)
+ 	elseif (${UNIX_OS})
+-		set(sys_ldflags "-shared -lz -lpthread -ldl")
++		set(sys_ldflags "-shared -lpthread -ldl")
+ 		target_compile_options(acl_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 	endif()
+@@ -336,7 +337,7 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		set(lc_flags "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${lib_output_path}")
+ 		set(CMAKE_SHARED_LINKER_FLAGS "${lc_flags} ${sys_ldflags}")
+ 		set_target_properties(acl_cpp_shared PROPERTIES OUTPUT_NAME "acl_cpp")
+-		target_link_libraries(acl_cpp_shared protocol acl)
++		target_link_libraries(acl_cpp_shared protocol acl ZLIB::ZLIB)
+ 	endif()
+ 
+ 	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
+diff --git a/lib_fiber/cpp/CMakeLists.txt b/lib_fiber/cpp/CMakeLists.txt
+index 96c1fee..5398551 100644
+--- a/lib_fiber/cpp/CMakeLists.txt
++++ b/lib_fiber/cpp/CMakeLists.txt
+@@ -139,6 +139,7 @@ set(LIBRARY_OUTPUT_PATH ${lib_output_path})
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${lib_output_path})
+ 
+ add_library(fiber_cpp_static STATIC ${lib_src})
++target_link_libraries(fiber_cpp_static ZLIB::ZLIB)
+ 
+ if (${WIN_OS})
+ 	set_target_properties(fiber_cpp_static PROPERTIES
+@@ -173,19 +174,19 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/fiber/
+ if (ACL_BUILD_SHARED MATCHES "YES")
+ 	if (CMAKE_SYSTEM_NAME MATCHES "Android")
+ 		if (ANDROID_STL MATCHES "gnustl_shared")
+-			set(sys_ldflags "-shared -lz")
++			set(sys_ldflags "-shared")
+ 		else()
+-			set(sys_ldflags "-shared -O3 -flto -lz")
++			set(sys_ldflags "-shared -O3 -flto")
+ 		endif()
+ 		target_compile_options(fiber_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 	elseif (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+-		set(sys_ldflags "-shared -liconv -lz -lpthread -ldl")
++		set(sys_ldflags "-shared -liconv -lpthread -ldl")
+ 		target_compile_options(fiber_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 		set(CMAKE_MACOSX_RPATH 1)
+ 	elseif (${UNIX_OS})
+-		set(sys_ldflags "-shared -lz -lpthread -ldl")
++		set(sys_ldflags "-shared -lpthread -ldl")
+ 		target_compile_options(fiber_cpp_static PRIVATE
+ 			-fvisibility=hidden -fvisibility-inlines-hidden)
+ 	endif()
+@@ -209,7 +210,7 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		set_target_properties(fiber_cpp_shared PROPERTIES OUTPUT_NAME "fiber_cpp")
+ 		set(lc_ldflags "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${lib_output_path}")
+ 		set(CMAKE_SHARED_LINKER_FLAGS "${lc_ldflags} ${sys_ldflags}")
+-		target_link_libraries(fiber_cpp_shared acl_cpp protocol acl fiber)
++		target_link_libraries(fiber_cpp_shared acl_cpp protocol acl fiber ZLIB::ZLIB)
+ 	endif()
+ 
+ 	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")
+diff --git a/lib_protocol/CMakeLists.txt b/lib_protocol/CMakeLists.txt
+index 545c78b..79bb706 100644
+--- a/lib_protocol/CMakeLists.txt
++++ b/lib_protocol/CMakeLists.txt
+@@ -140,6 +140,7 @@ set(LIBRARY_OUTPUT_PATH ${lib_output_path})
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${lib_output_path})
+ 
+ add_library(protocol_static STATIC ${lib_src})
++target_link_libraries(protocol_static ZLIB::ZLIB)
+ 
+ if (${WIN_OS})
+ 	set_target_properties(protocol_static PROPERTIES
+@@ -174,16 +175,16 @@ install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
+ if (ACL_BUILD_SHARED MATCHES "YES")
+ 	if (CMAKE_SYSTEM_NAME MATCHES "Android")
+ 		if (ANDROID_STL MATCHES "gnustl_shared")
+-			set(sys_ldflags "-shared -lz")
++			set(sys_ldflags "-shared")
+ 		else()
+-			set(sys_ldflags "-shared -flto -lz")
++			set(sys_ldflags "-shared -flto")
+ 		endif()
+ 		target_compile_options(protocol_static PRIVATE -fvisibility=hidden)
+ 	elseif (CMAKE_SYSTEM_NAME MATCHES "OHOS")
+-		set(sys_ldflags "-shared -flto -lz")
++		set(sys_ldflags "-shared -flto")
+ 		target_compile_options(protocol_static PRIVATE -fvisibility=hidden)
+ 	elseif (${UNIX_OS})
+-		set(sys_ldflags "-shared -lz -lpthread -ldl")
++		set(sys_ldflags "-shared -lpthread -ldl")
+ #		target_compile_options(protocol_static PRIVATE -fvisibility=hidden)
+ 
+ 		if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
+@@ -210,7 +211,7 @@ if (ACL_BUILD_SHARED MATCHES "YES")
+ 		set_target_properties(protocol_shared PROPERTIES OUTPUT_NAME "protocol")
+ 		set(lc_flags "-Wl,-rpath,${CMAKE_INSTALL_PREFIX}/lib -L${lib_output_path}")
+ 		set(CMAKE_SHARED_LINKER_FLAGS "${lc_flags} ${sys_ldflags}")
+-		target_link_libraries(protocol_shared acl)
++		target_link_libraries(protocol_shared acl ZLIB::ZLIB)
+ 	endif()
+ 
+ 	if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin|iOS|Android|FreeBSD")

+ 16 - 0
packages/a/acl-dev/patches/v3.6.2/export_unix.diff

@@ -0,0 +1,16 @@
+diff --git a/lib_acl/include/stdlib/acl_define_unix.h b/lib_acl/include/stdlib/acl_define_unix.h
+index b74c872..52cdef7 100644
+--- a/lib_acl/include/stdlib/acl_define_unix.h
++++ b/lib_acl/include/stdlib/acl_define_unix.h
+@@ -55,7 +55,11 @@
+ #  define acl_assert assert
+ # endif
+ 
++#if defined(__GNUC__)
++# define ACL_API __attribute__((visibility("default")))
++#else
+ # define ACL_API
++#endif
+ 
+ #if 1
+ # define	ACL_ETIMEDOUT		ETIMEDOUT

+ 65 - 0
packages/a/acl-dev/patches/v3.6.2/fix_android_install_path.diff

@@ -0,0 +1,65 @@
+diff --git a/lib_acl/CMakeLists.txt b/lib_acl/CMakeLists.txt
+index 287d5f3..d0c8241 100644
+--- a/lib_acl/CMakeLists.txt
++++ b/lib_acl/CMakeLists.txt
+@@ -177,7 +177,7 @@ if (ACL_CLIENT_ONLY MATCHES "YES")
+ endif()
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES "Android")
+-	set(acl_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../android/lib/${ANDROID_ABI})
++	set(acl_output_path ${PROJECT_BINARY_DIR}/../lib)
+ elseif (CMAKE_SYSTEM_NAME MATCHES "OHOS")
+ 	set(acl_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../harmony/lib/${OHOS_ARCH})
+ else()
+diff --git a/lib_acl_cpp/CMakeLists.txt b/lib_acl_cpp/CMakeLists.txt
+index 08c558e..afb3936 100644
+--- a/lib_acl_cpp/CMakeLists.txt
++++ b/lib_acl_cpp/CMakeLists.txt
+@@ -252,7 +252,7 @@ elseif (${WIN_OS})
+ endif()
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES "Android")
+-	set(lib_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../android/lib/${ANDROID_ABI})
++	set(lib_output_path ${PROJECT_BINARY_DIR}/../lib)
+ elseif (CMAKE_SYSTEM_NAME MATCHES "OHOS")
+ 	set(lib_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../harmony/lib/${OHOS_ARCH})
+ else()
+diff --git a/lib_fiber/c/CMakeLists.txt b/lib_fiber/c/CMakeLists.txt
+index c784212..d8931f6 100644
+--- a/lib_fiber/c/CMakeLists.txt
++++ b/lib_fiber/c/CMakeLists.txt
+@@ -141,7 +141,7 @@ list(APPEND lib_src ${src}/fiber/boost/make_gas.S
+ 	${src}/fiber/boost/jump_gas.S)
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES "Android")
+-	set(lib_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../../android/lib/${ANDROID_ABI})
++	set(lib_output_path ${PROJECT_BINARY_DIR}/../lib)
+ else()
+ 	set(lib_output_path ${PROJECT_BINARY_DIR}/../lib)
+ endif()
+diff --git a/lib_fiber/cpp/CMakeLists.txt b/lib_fiber/cpp/CMakeLists.txt
+index 4d70233..1c41f9b 100644
+--- a/lib_fiber/cpp/CMakeLists.txt
++++ b/lib_fiber/cpp/CMakeLists.txt
+@@ -130,7 +130,7 @@ foreach(iter ${sources})
+ endforeach()
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES "Android")
+-	set(lib_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../../android/lib/${ANDROID_ABI})
++	set(lib_output_path ${PROJECT_BINARY_DIR}/../lib)
+ else()
+ 	set(lib_output_path ${PROJECT_BINARY_DIR}/../lib)
+ endif()
+diff --git a/lib_protocol/CMakeLists.txt b/lib_protocol/CMakeLists.txt
+index b53ee88..e047e59 100644
+--- a/lib_protocol/CMakeLists.txt
++++ b/lib_protocol/CMakeLists.txt
+@@ -129,7 +129,7 @@ elseif (${WIN_OS})
+ endif()
+ 
+ if (CMAKE_SYSTEM_NAME MATCHES "Android")
+-	set(lib_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../android/lib/${ANDROID_ABI})
++	set(lib_output_path ${PROJECT_BINARY_DIR}/../lib)
+ elseif (CMAKE_SYSTEM_NAME MATCHES "OHOS")
+ 	set(lib_output_path ${CMAKE_CURRENT_SOURCE_DIR}/../harmony/lib/${OHOS_ARCH})
+ else()

+ 161 - 0
packages/a/acl-dev/xmake.lua

@@ -0,0 +1,161 @@
+package("acl-dev")
+    set_homepage("https://acl-dev.cn")
+    set_description("C/C++ server and network library, including coroutine, redis client, http/https/websocket, mqtt, mysql/postgresql/sqlite client with C/C++ for Linux, Android, iOS, MacOS, Windows.")
+    set_license("LGPL-3.0")
+
+    add_urls("https://github.com/acl-dev/acl/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/acl-dev/acl.git")
+
+    add_versions("v3.6.2", "888fd9b8fb19db4f8e7760a12a28f37f24ba0a2952bb0409b8380413a4b6506b")
+    add_versions("v3.6.3", "4c1fe78cc3dbf2843aab440ca638464d1d1e490e81e904115b8f96a88a3b44de")
+
+    add_patches(">=3.6.2", "patches/v3.6.2/build_install_only_static_or_shared.diff", "179136ceec3a54c9d8a60d92bc67d691271ffcf8214160224b0b9339a26cd0a1")
+    add_patches(">=3.6.2", "patches/v3.6.2/export_unix.diff", "13376d9374de1b97ec25f709205f927a7157852075c2583e57615b617c45c62d")
+    add_patches(">=3.6.2", "patches/v3.6.2/fix_android_install_path.diff", "19917bd1852af4ddecc27ef402ecf9806b89ec78d91e62c806ba00fc05f41e94")
+    add_patches(">=3.6.2", "patches/v3.6.2/debundle_zlib.diff", "43043fb8fe84ef8f37a6a637e0447a849d38155e6d6ca20a9512c38023077a04")
+
+    if is_plat("windows") then
+        add_configs("vs", {description = "Use Visual Studio buildsystem (.sln/.vcxproj)", default = true, type = "boolean"})
+    end
+
+    add_includedirs("include", "include/acl-lib")
+
+    add_deps("cmake")
+
+    if not is_plat("windows") then
+        add_links("protocol", "acl_cpp", "fiber_cpp", "fiber", "acl")
+    end
+
+    if not is_plat("windows") then
+        add_deps("zlib")
+    end
+    if is_plat("iphoneos", "macosx", "bsd") then
+        add_deps("libiconv")
+    end
+
+    if is_plat("windows") then
+        add_syslinks("ws2_32", "iphlpapi", "kernel32", "user32", "gdi32")
+    elseif is_plat("linux", "bsd", "cross") then
+        add_syslinks("pthread", "dl")
+    end
+
+    on_load(function (package)
+        if package:is_plat("iphoneos", "macosx", "bsd") then
+            package:add("patches", ">=3.6.2", "patches/v3.6.2/debundle_iconv.diff", "03db2a366167c865eb6bcd73d06b5d87fa3ed87307aa86bc2d0de9528dd29e10")
+        end
+        if package:is_plat("android") then
+            package:add("defines", "ANDROID")
+        elseif package:is_plat("macosx") then
+            package:add("defines", "MACOSX")
+        elseif package:is_plat("linux", "cross") then
+            package:add("defines", "LINUX2")
+        elseif package:is_plat("bsd") then
+            package:add("defines", "FREEBSD")
+        end
+    end)
+
+    on_install("windows", "android", "iphoneos", "macosx", "linux", "cross", "bsd", function (package)
+        if package:is_plat("windows") and package:config("vs") then
+            import("package.tools.msbuild")
+            for _, vcxproj in ipairs(os.files("**.vcxproj")) do
+                -- Switch vs_runtime MD / MDd -> MT / MTd
+                if package:has_runtime("MT", "MTd") then
+                    io.replace(vcxproj, "MultiThreadedDebugDLL", "MultiThreadedDebug", {plain = true})
+                    io.replace(vcxproj, "MultiThreadedDLL", "MultiThreaded", {plain = true})
+                    io.replace(vcxproj, "<IgnoreSpecificDefaultLibraries>libcmt;libc</IgnoreSpecificDefaultLibraries>", "", {plain = true})
+                    io.replace(vcxproj, "<IgnoreSpecificDefaultLibraries>libcmtd;libcmt;libc</IgnoreSpecificDefaultLibraries>", "", {plain = true})
+                end
+                -- Disble LTCG
+                io.replace(vcxproj, "<WholeProgramOptimization>true</WholeProgramOptimization>", "<WholeProgramOptimization>false</WholeProgramOptimization>", {plain = true})
+            end
+            os.cp("lib_fiber/c/include/fiber/**", package:installdir("include/acl-lib/fiber"))
+            os.cp("lib_protocol/include/**", package:installdir("include/acl-lib/protocol"))
+            os.cp("lib_acl_cpp/include/acl_cpp/**", package:installdir("include/acl-lib/acl_cpp"))
+            os.cp("lib_acl/include/**", package:installdir("include/acl-lib/acl"))
+            os.cp("lib_fiber/cpp/include/fiber/**", package:installdir("include/acl-lib/fiber_cpp"))
+            local arch = package:is_arch("x64") and "x64" or "Win32"
+            if package:is_arch("arm64") then
+                arch = "ARM64"
+            end
+            local mode = package:is_debug() and "Debug" or "Release"
+            if package:config("shared") then
+                mode = package:is_debug() and "DebugDll" or "ReleaseDll"
+            end
+            local configs = {"acl_cpp_vc2022.sln", "/t:lib_acl;libfiber;lib_protocol;lib_acl_cpp;libfiber_cpp"}
+            table.insert(configs, "/p:Configuration=" .. mode)
+            table.insert(configs, "/p:Platform=" .. arch)
+            msbuild.build(package, configs)
+            os.cp("**.lib", package:installdir("lib"))
+            if package:config("shared") then
+                for _, dll in ipairs(os.files("**.dll")) do
+                    if not dll:lower():find("71.dll") and not dll:lower():find("vld.dll") then
+                        os.cp(dll, package:installdir("bin"))
+                    end
+                end
+            end
+        else
+            -- Fix windows .pch file
+            io.replace("lib_acl_cpp/CMakeLists.txt", [["-Ycacl_stdafx.hpp"]], [[]], {plain = true})
+            io.replace("lib_acl_cpp/CMakeLists.txt", [[add_library(acl_cpp_static STATIC ${lib_src})]],
+                "add_library(acl_cpp_static STATIC ${lib_src})\ntarget_precompile_headers(acl_cpp_static PRIVATE src/acl_stdafx.hpp)", {plain = true})
+            io.replace("lib_acl_cpp/CMakeLists.txt", [[add_library(acl_cpp_shared SHARED ${lib_src})]],
+                "add_library(acl_cpp_shared SHARED ${lib_src})\ntarget_precompile_headers(acl_cpp_shared PRIVATE src/acl_stdafx.hpp)", {plain = true})
+            if package:is_plat("windows") then
+                -- Do not build .gas on windows
+                io.replace("lib_fiber/c/CMakeLists.txt", [[list(APPEND lib_src ${src}/fiber/boost/make_gas.S]], [[]], {plain = true})
+                io.replace("lib_fiber/c/CMakeLists.txt", [[${src}/fiber/boost/jump_gas.S)]], [[]], {plain = true})
+            else
+                io.replace("CMakeLists.txt", "project(acl)", "project(acl)\nfind_package(ZLIB)", {plain = true})
+            end
+            if package:is_plat("iphoneos", "macosx", "bsd") then
+                if package:is_plat("bsd") then
+                    -- FreeBSD enforce fallback to system iconv
+                    io.replace("lib_acl_cpp/CMakeLists.txt", [[elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")]], 
+                        [[elseif(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
+                        add_definitions("-DUSE_SYS_ICONV")]], {plain = true})
+                end
+                io.replace("CMakeLists.txt", "project(acl)", "project(acl)\nfind_package(Iconv)", {plain = true})
+            end
+            for _, file in ipairs(os.files("**.txt")) do
+                -- Disable -Wstrict-prototypes -Werror -Qunused-arguments
+                io.replace(file, [["-Wstrict-prototypes"]], "", {plain = true})
+                io.replace(file, [["-Werror"]], "", {plain = true})
+                io.replace(file, [[-Qunused-arguments]], [[]], {plain = true})
+                -- Do not enforce LTO
+                io.replace(file, [[add_definitions("-flto")]], [[]], {plain = true})
+                io.replace(file, [[-flto]], [[]], {plain = true})
+                if package:is_plat("windows") then
+                    -- Cleanup ZLIB after patch for Windows OS
+                    io.replace(file, [[ZLIB::ZLIB]], [[]], {plain = true})
+                end
+            end
+            local configs = {"-DCMAKE_POLICY_DEFAULT_CMP0057=NEW"}
+            if package:is_plat("iphoneos") then
+                table.insert(configs, "-DCMAKE_SYSTEM_NAME=Darwin")
+            end
+            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, "-DACL_BUILD_SHARED=" .. (package:config("shared") and "YES" or "NO"))
+            import("package.tools.cmake").install(package, configs)
+            if package:is_plat("windows") then
+                if package:config("shared") then
+                    os.vcp(path.join(package:buildir(), "*/shared/**.lib"), package:installdir("lib"))
+                    os.vcp(path.join(package:buildir(), "*/shared/**.dll"), package:installdir("bin"))
+                else
+                    os.vcp(path.join(package:buildir(), "*/static/**.lib"), package:installdir("lib"))
+                end
+            end
+        end
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("acl_fiber_recv", {includes = "fiber/lib_fiber.h"}))
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                const char* redis_addr = "127.0.0.1:7000";
+                int max_conns = 100;
+                acl::redis_client_cluster cluster;
+                cluster.set(redis_addr, max_conns);
+            }
+        ]]}, {includes = "acl_cpp/lib_acl.hpp"}))
+    end)

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

@@ -6,12 +6,16 @@ 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.1.0", "9febd85d3a4f50dac760592043028a36bea62bba50c3ee2fc1eace954dd8ae27")
+    add_versions("1.0.2", "ef4dd00ca7c59cd61dc336b6a8efbd6150ca85c404d213ecb61f6bcee4094ffc")
+    add_versions("1.0.1", "635bdd6e3b70886f1d9aa75c48e5bdb4084afae1f159bbfe5ea91f99b0460f6b")
+    add_versions("1.0.0", "602018239d23a1805d35ebda704fd5c969a0693fc513fcf7459063b628459e5b")
     add_versions("0.19.6", "48dc4c4abf5ab5a7c6f84b9259cc8be1b02c601d31893647ab44e143cdc4b6d5")
     add_versions("0.19.2", "aa3fcc494424e0e20b177125458a6a6ed39c751a3d3d5193054e88bdf8a146d2")
 
     add_configs("profiler", {description = "Enable experimental profiler API", default = false, type = "boolean"})
     add_configs("runtime_checks", {description = "Build CAF with extra runtime assertions", default = false, type = "boolean"})
-    add_configs("exceptions", {description = "Build CAF with support for exceptions", default = false, type = "boolean"})
+    add_configs("exceptions", {description = "Build CAF with support for exceptions", default = true, type = "boolean"})
     add_configs("io", {description = "Build legacy networking I/O module", default = false, type = "boolean"})
     add_configs("net", {description = "Build networking I/O module", default = false, type = "boolean"})
     add_configs("openssl", {description = "Build OpenSSL module", default = false, type = "boolean"})
@@ -33,6 +37,9 @@ package("actor-framework")
     end)
 
     on_install("windows", "linux", "macosx", "bsd", function (package)
+        io.replace("CMakeLists.txt", "add_library(libcaf_test)", "", {plain = true})
+        io.replace("CMakeLists.txt", "add_subdirectory(libcaf_test)", "", {plain = true})
+
         local configs =
         {
             "-DCAF_ENABLE_EXAMPLES=OFF",

+ 40 - 7
packages/a/ada/xmake.lua

@@ -6,34 +6,67 @@ package("ada")
     set_urls("https://github.com/ada-url/ada/archive/refs/tags/$(version).tar.gz",
              "https://github.com/ada-url/ada.git")
 
+    add_versions("v3.2.6", "2e0b0c464ae9b5d97bc99fbec37878dde4a436fa0a34127f5755a0dfeb2c84a0")
+    add_versions("v3.2.5", "cfda162be4b4e30f368e404e8df6704cdb18f0f26c901bb2f0290150c91e04b5")
+    add_versions("v3.2.4", "ce79b8fb0f6be6af3762a16c5488cbcd38c31d0655313a7030972a7eb2bda9e5")
+    add_versions("v3.2.3", "8b9aa4dff92772d0029d8bc1f3f704afe34a899e23334bf04c7f0d019a5071c2")
+    add_versions("v3.2.2", "2eb3d3d7bd2e0c74785f873fc98cf56556294ac76532ef69a01605329b629162")
+    add_versions("v3.2.1", "2530b601224d96554333ef2e1504cebf040e86b79a4166616044f5f79c47eaa5")
+    add_versions("v3.1.3", "8bd8df0413d57b56b32e6a5216a1c7f402a52edf33172a39e80484ccce0bb627")
+    add_versions("v3.0.1", "525890a87a002b1cc14c091800c53dcf4a24746dbfc5e3b8a9c80490daad9263")
+    add_versions("v2.9.2", "f41575ad7eec833afd9f6a0d6101ee7dc2f947fdf19ae8f1b54a71d59f4ba5ec")
+    add_versions("v2.9.1", "64eb3d91db941645d1b68ac8d1cbb7b534fbe446b66c1da11e384e17fca975e7")
+    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")
+    add_versions("v2.4.0", "14624f1dfd966fee85272688064714172ff70e6e304a1e1850f352a07e4c6dc7")
+    add_versions("v2.3.1", "298992ec0958979090566c7835ea60c14f5330d6372ee092ef6eee1d2e6ac079")
 
-    if is_plat("macosx") then
+    if is_plat("mingw") and is_subhost("msys") then
+        add_extsources("pacman::ada-url")
+    elseif is_plat("macosx") then
         add_extsources("brew::ada-url")
     end
 
     add_deps("cmake")
 
+    if on_check then
+        on_check("android", function (package)
+            if package:version() and package:version():ge("3.0.0") then
+                local ndk = package:toolchain("ndk"):config("ndkver")
+                assert(ndk and tonumber(ndk) > 22, "package(ada >=3.0.0) require ndk version > 22")
+            end
+        end)
+    end
+
     on_install(function (package)
-        local configs = {"-DBUILD_TESTING=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"))
         io.replace("CMakeLists.txt", "add_subdirectory(singleheader)", "", {plain = true})
         io.replace("CMakeLists.txt", "add_subdirectory(tools)", "", {plain = true})
+
+        io.replace("src/CMakeLists.txt", "/WX", "", {plain = true})
+
+        local configs = {"-DBUILD_TESTING=OFF", "-DADA_TOOLS=OFF"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        table.insert(configs, "-DADA_SANITIZE=" .. (package:config("asan") and "ON" or "OFF"))
         import("package.tools.cmake").install(package, configs)
     end)
 
     on_test(function (package)
+        local languages
+        if package:version() and package:version():ge("3.0.0") then
+            languages = "c++20"
+        else
+            languages = "c++17"
+        end
         assert(package:check_cxxsnippets({test = [[
+            #include <iostream>
             #include <ada.h>
             void test() {
                 auto url = ada::parse<ada::url_aggregator>("https://xmake.io");
             }
-        ]]}, {configs = {languages = "c++17"}}))
+        ]]}, {configs = {languages = languages}}))
     end)

+ 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)

+ 37 - 0
packages/a/aklomp-base64/xmake.lua

@@ -0,0 +1,37 @@
+package("aklomp-base64")
+    set_homepage("https://github.com/aklomp/base64")
+    set_description("Fast Base64 stream encoder/decoder in C99, with SIMD acceleration.")
+    set_license("BSD-2-Clause")
+
+    add_urls("https://github.com/aklomp/base64/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/aklomp/base64.git")
+
+    add_versions("v0.5.2", "723a0f9f4cf44cf79e97bcc315ec8f85e52eb104c8882942c3f2fba95acc080d")
+
+    add_deps("cmake")
+    on_load(function (package)
+        package:add("links", "base64")
+        if not package:config("shared") then
+            package:add("defines", "BASE64_STATIC_DEFINE")
+        end
+    end)
+
+    on_install(function (package)
+        local configs = {}
+        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_csnippets({test = [[
+            void test() {
+                char src[] = "hello world";
+                char out[20];
+                size_t srclen = sizeof(src) - 1;
+                size_t outlen;
+
+                base64_encode(src, srclen, out, &outlen, 0);
+            }
+        ]]}, {configs = {languages = "c99"}, includes = "libbase64.h"}))
+    end)

+ 30 - 0
packages/a/alcatraz/xmake.lua

@@ -0,0 +1,30 @@
+package("alcatraz")
+    set_kind("binary")
+    set_homepage("https://github.com/weak1337/Alcatraz")
+    set_description("x64 binary obfuscator")
+
+    set_urls("https://github.com/weak1337/Alcatraz.git", {submodules = false})
+
+    add_versions("2023.07.14", "739e65ebadaeb3f8206fb2199700725331465abb")
+
+    add_deps("asmjit", "zydis")
+
+    on_install("@windows", function (package)
+        io.replace("Alcatraz/obfuscator/obfuscator.cpp", "#include <iostream>",
+            "#include <iostream>\n#include <bit>", {plain = true})
+
+        io.writefile("xmake.lua", [[
+            add_rules("mode.debug", "mode.release")
+            add_requires("asmjit", "zydis")
+            set_languages("c++20")
+            target("alcatraz")
+                set_kind("binary")
+                add_files("Alcatraz/**.cpp")
+                add_packages("asmjit", "zydis")
+        ]])
+        import("package.tools.xmake").install(package)
+    end)
+
+    on_test(function (package)
+        os.vrun("alcatraz")
+    end)

+ 57 - 9
packages/a/alembic/xmake.lua

@@ -1,29 +1,77 @@
 package("alembic")
-
     set_homepage("https://alembic.io/")
     set_description("Open framework for storing and sharing scene data that includes a C++ library, a file format, and client plugins and applications.")
     set_license("BSD-3-Clause")
 
     add_urls("https://github.com/alembic/alembic/archive/refs/tags/$(version).tar.gz",
              "https://github.com/alembic/alembic.git")
+
+    add_versions("1.8.8", "ba1f34544608ef7d3f68cafea946ec9cc84792ddf9cda3e8d5590821df71f6c6")
+    add_versions("1.8.7", "6de0b97cd14dcfb7b2d0d788c951b6da3c5b336c47322ea881d64f18575c33da")
     add_versions("1.8.6", "c572ebdea3a5f0ce13774dd1fceb5b5815265cd1b29d142cf8c144b03c131c8c")
     add_versions("1.8.5", "180a12f08d391cd89f021f279dbe3b5423b1db751a9898540c8059a45825c2e9")
 
-    add_deps("cmake", "imath")
-    if is_plat("linux") then
-        add_syslinks("m")
+    add_configs("arnold", {description = "Include Arnold stuff", default = false, type = "boolean"})
+    add_configs("hdf5", {description = "Include HDF5 stuff", default = false, type = "boolean"})
+    add_configs("maya", {description = "Include maya stuff", default = false, type = "boolean"})
+    add_configs("prman", {description = "Include prman stuff", default = false, type = "boolean"})
+    add_configs("tools", {description = "Build tools", default = false, type = "boolean"})
+
+    if is_plat("linux", "bsd") then
+        add_syslinks("m", "pthread")
     end
-    on_load("windows", function (package)
-        if package:config("shared") then
+
+    add_deps("cmake", "imath")
+
+    on_load(function (package)
+        if package:is_plat("windows") and package:config("shared") then
             package:add("defines", "ALEMBIC_DLL")
         end
+
+        if package:config("tools") then
+            package:config_set("hdf5", true)
+        end
+
+        if package:config("hdf5") then
+            package:add("deps", "hdf5", {configs = {zlib = true}})
+        end
     end)
 
-    on_install("windows", "macosx", "linux", function (package)
-        local configs = {"-DBUILD_TESTING=OFF"}
-        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release"))
+    on_install(function (package)
+        if package:is_plat("windows", "mingw") then
+            io.replace("lib/Alembic/Ogawa/OStream.cpp", "#include <stdexcept>", "#include <stdexcept>\n#include <Windows.h>", {plain = true})
+        end
+
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DUSE_TESTS=OFF",
+            "-DALEMBIC_DEBUG_WARNINGS_AS_ERRORS=OFF",
+        }
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
         table.insert(configs, "-DALEMBIC_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        if package:is_plat("windows") then
+            table.insert(configs, "-DCMAKE_COMPILE_PDB_OUTPUT_DIRECTORY=''")
+        end
+
+        table.insert(configs, "-DUSE_ARNOLD=" .. (package:config("arnold") and "ON" or "OFF"))
+        table.insert(configs, "-DUSE_MAYA=" .. (package:config("maya") and "ON" or "OFF"))
+        table.insert(configs, "-DUSE_PRMAN=" .. (package:config("prman") and "ON" or "OFF"))
+        table.insert(configs, "-DUSE_BINARIES=" .. (package:config("tools") and "ON" or "OFF"))
+
+        local hdf5 = package:dep("hdf5")
+        if hdf5 then
+            table.insert(configs, "-DUSE_HDF5=ON")
+            table.insert(configs, "-DUSE_STATIC_HDF5=" .. (hdf5:config("shared") and "OFF" or "ON"))
+        else
+            table.insert(configs, "-DUSE_HDF5=OFF")
+        end
         import("package.tools.cmake").install(package, configs)
+
+        if package:is_plat("windows") and package:is_debug() then
+            local dir = package:installdir(package:config("shared") and "bin" or "lib")
+            os.vcp(path.join(package:buildir(), "lib/**.pdb"), dir)
+            os.vcp(path.join(package:buildir(), "bin/**.pdb"), package:installdir("bin"))
+        end
     end)
 
     on_test(function (package)

+ 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)

+ 29 - 0
packages/a/alpaca/xmake.lua

@@ -0,0 +1,29 @@
+package("alpaca")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/p-ranav/alpaca")
+    set_description("Serialization library written in C++17 - Pack C++ structs into a compact byte-array without any macros or boilerplate code")
+    set_license("MIT")
+
+    add_urls("https://github.com/p-ranav/alpaca/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/p-ranav/alpaca.git", {submodules = false})
+    -- 2024.07.20
+    add_versions("v0.2.1", "ea5ab2aaa97be20d48c0ce99eb90321f1db91929")
+
+    add_deps("cmake")
+
+    on_install("!wasm and !bsd", function (package)
+        import("package.tools.cmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            struct Config {
+                std::string device;
+            };
+            void test() {
+                Config c{"/dev/video0"};
+                std::vector<uint8_t> bytes;
+                auto bytes_written = alpaca::serialize(c, bytes);
+            }
+        ]]}, {configs = {languages = "c++17"}, includes = "alpaca/alpaca.h"}))
+    end)

+ 1 - 1
packages/a/alsa-lib/xmake.lua

@@ -11,7 +11,7 @@ package("alsa-lib")
     add_configs("versioned", {description = "pass flag --without-versioned", default = true, type = "boolean"})
 
     if is_plat("linux") then
-        add_syslinks("pthread")
+        add_syslinks("pthread", "dl", "m")
         add_extsources("pacman::alsa-lib", "apt::libasound2-dev")
     end
 

+ 4 - 3
packages/a/amgcl/xmake.lua

@@ -9,16 +9,17 @@ package("amgcl")
     add_versions("1.4.0", "018b824396494c8958faa6337cebcaba48a2584d828f279eef0bbf9e05f900a7")
     add_versions("1.4.2", "db0de6b75e6c205f44542c3ac8d9935c8357a58072963228d0bb11a54181aea8")
     add_versions("1.4.3", "e920d5767814ce697d707d1f359a16c9b9eb79eba28fe19e14c18c2a505fe0ad")
+    add_versions("1.4.4", "02fd5418e14d669422f65fc739ce72bf9516ced2d8942574d4b8caa05dda9d8c")
 
     add_deps("cmake")
-    add_deps("boost", {configs = {serialization = true, program_options = true}})
-    on_install("windows", "macosx", "linux", function (package)
+    add_deps("boost", {configs = {cmake = false, serialization = true, program_options = true}})
+    on_install("windows", "mingw", "macosx", "linux", function (package)
         io.replace("CMakeLists.txt", "unit_test_framework", "", {plain = true})
         local configs = {"-DBoost_USE_STATIC_LIBS=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"))
         if package:is_plat("windows") then
-            table.insert(configs, "-DBoost_USE_STATIC_RUNTIME=" .. (package:config("vs_runtime"):startswith("MT") and "ON" or "OFF"))
+            table.insert(configs, "-DBoost_USE_STATIC_RUNTIME=" .. (package:has_runtime("MT", "MTd") and "ON" or "OFF"))
         else
             table.insert(configs, "-DBoost_USE_STATIC_RUNTIME=OFF")
         end

+ 1 - 0
packages/a/amqp-cpp/xmake.lua

@@ -6,6 +6,7 @@ package("amqp-cpp")
     add_urls("https://github.com/CopernicaMarketingSoftware/AMQP-CPP/archive/refs/tags/$(version).tar.gz",
              "https://github.com/CopernicaMarketingSoftware/AMQP-CPP.git")
 
+    add_versions("v4.3.27", "af649ef8b14076325387e0a1d2d16dd8395ff3db75d79cc904eb6c179c1982fe")
     add_versions("v4.3.26", "2baaab702f3fd9cce40563dc1e23f433cceee7ec3553bd529a98b1d3d7f7911c")
 
     if is_plat("windows", "mingw") then

+ 33 - 0
packages/a/amrex/patches/24.09/remove-symlink.patch

@@ -0,0 +1,33 @@
+diff --git a/Src/CMakeLists.txt b/Src/CMakeLists.txt
+index 6e8af043..df5ca007 100644
+--- a/Src/CMakeLists.txt
++++ b/Src/CMakeLists.txt
+@@ -27,11 +27,7 @@ add_library(amrex ALIAS amrex_${AMReX_SPACEDIM_LAST}d)
+ add_library(AMReX::amrex ALIAS amrex_${AMReX_SPACEDIM_LAST}d)
+ 
+ # legacy symlink for build directory: libamrex.[so|a] / amrex.[dll.lib]
+-add_custom_command(TARGET amrex_${AMReX_SPACEDIM_LAST}d POST_BUILD
+-    COMMAND ${CMAKE_COMMAND} -E create_symlink
+-        $<TARGET_FILE_NAME:amrex_${AMReX_SPACEDIM_LAST}d>
+-        $<TARGET_FILE_DIR:amrex_${AMReX_SPACEDIM_LAST}d>/$<TARGET_FILE_PREFIX:amrex_${AMReX_SPACEDIM_LAST}d>amrex$<TARGET_FILE_SUFFIX:amrex_${AMReX_SPACEDIM_LAST}d>
+-)
++
+ 
+ 
+ #
+diff --git a/Tools/CMake/AMReXInstallHelpers.cmake b/Tools/CMake/AMReXInstallHelpers.cmake
+index 7c832d3a..ea5ea535 100644
+--- a/Tools/CMake/AMReXInstallHelpers.cmake
++++ b/Tools/CMake/AMReXInstallHelpers.cmake
+@@ -72,11 +72,6 @@ function (install_amrex_targets)
+        # legacy symlink for: libamrex.[so|a] / amrex.[dll.lib]
+        #   escape spaces for generated cmake_install.cmake file
+        file(TO_CMAKE_PATH "${CMAKE_INSTALL_PREFIX}/lib" ABS_INSTALL_LIB_DIR)
+-       install(CODE "file(CREATE_LINK
+-           $<TARGET_FILE_NAME:amrex_${AMReX_SPACEDIM_LAST}d>
+-           \"${ABS_INSTALL_LIB_DIR}/$<TARGET_FILE_PREFIX:amrex_${AMReX_SPACEDIM_LAST}d>amrex$<TARGET_FILE_SUFFIX:amrex_${AMReX_SPACEDIM_LAST}d>\"
+-           COPY_ON_ERROR SYMBOLIC)"
+-       )
+ 
+        # Install fortran modules if Fortran is enabled
+        get_property(_lang GLOBAL PROPERTY ENABLED_LANGUAGES)

+ 91 - 0
packages/a/amrex/xmake.lua

@@ -0,0 +1,91 @@
+package("amrex")
+    set_homepage("https://amrex-codes.github.io/amrex")
+    set_description("AMReX: Software Framework for Block Structured AMR")
+
+    add_urls("https://github.com/AMReX-Codes/amrex/releases/download/$(version)/amrex-$(version).tar.gz",
+             "https://github.com/AMReX-Codes/amrex.git")
+
+    add_versions("25.06", "2f69c708ddeaba6d4be3a12ab6951f171952f6f7948e628c5148d667c4197838")
+    add_versions("25.05", "d80ae0b4ccb26696fcd3c04d96838592fd0043be25fceebd82cd165f809b1a5d")
+    add_versions("25.04", "71c3f01a9cfbf3aff7f0a5dd66c2ac99a606334f1910052194c2520df3f7b7be")
+    add_versions("25.03", "7a2dc60d01619afdcbce0ff624a3c1a5a605e28dd8721c0fbec638076228cab0")
+    add_versions("25.02", "2680a5a9afba04e211cd48d27799c5a25abbb36c6c3d2b6c13cd4757c7176b23")
+    add_versions("24.12", "ca4b41ac73fabb9cf3600b530c9823eb3625f337d9b7b9699c1089e81c67fc67")
+    add_versions("24.09", "a1435d16532d04a1facce9a9ae35d68a57f7cd21a5f22a6590bde3c265ea1449")
+
+    add_patches(">=24.09", "patches/24.09/remove-symlink.patch", "d71adb07252e488ee003f6f04fea756864d6af2232b43208c9e138e062eb6e4d")
+
+    add_configs("openmp", {description = "Enable OpenMP", default = false, type = "boolean"})
+    add_configs("mpi", {description = "Enable MPI", default = false, type = "boolean", readonly = true})
+    add_configs("cuda", {description = "Enable CUDA", default = false, type = "boolean"})
+    add_configs("hdf5", {description = "Enable HDF5-based I/O", default = false, type = "boolean"})
+    add_configs("fortran", {description = "Enable fortran", default = false, type = "boolean"})
+    add_configs("tools", {description = "Build tools", default = false, type = "boolean"})
+
+    if is_plat("linux", "bsd") then
+        add_syslinks("pthread")
+    end
+
+    add_deps("cmake")
+
+    if on_check then
+        on_check("windows", function (package)
+            import("core.base.semver")
+
+            local msvc = package:toolchain("msvc")
+            if msvc then
+                local vs_sdkver = msvc:config("vs_sdkver")
+                assert(vs_sdkver and semver.match(vs_sdkver):gt("10.0.19041"), "package(amrex) require vs_sdkver > 10.0.19041.0")
+            end
+        end)
+    end
+
+    on_load(function (package)
+        if package:config("openmp") then
+            package:add("deps", "openmp")
+        end
+        if package:config("cuda") then
+            package:add("deps", "cuda")
+        end
+        if package:config("hdf5") then
+            package:add("deps", "hdf5")
+        end
+        if package:config("fortran") and package:is_plat("linux", "macosx") then
+            package:add("deps", "gfortran", {kind = "binary"})
+        end
+    end)
+
+    on_install("windows", "macosx", "linux", "bsd", "mingw", "msys", function (package)
+        local configs = {"-DAMReX_ENABLE_TESTS=OFF"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        table.insert(configs, "-DAMReX_PIC=" .. (package:config("pic") and "ON" or "OFF"))
+
+        local configs_map = {
+            openmp = "OMP",
+            tools = "PLOTFILE_TOOLS",
+        }
+        for name, enabled in table.orderpairs(package:configs()) do
+            if not package:extraconf("configs", name, "builtin") then
+                local real = configs_map[name] or name:upper()
+                local enabled = (package:config(name) and "ON" or "OFF")
+                table.insert(configs, format("-DAMReX_%s=%s", real, enabled))
+            end
+        end
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include <AMReX.H>
+            #include <AMReX_Print.H>
+
+            void test(int argc, char* argv[]) {
+                amrex::Initialize(argc,argv);
+                {
+                    amrex::Print() << "Hello world from AMReX version " << amrex::Version() << "\n";
+                }
+                amrex::Finalize();
+            }
+        ]]}, {configs = {languages = "c++17"}}))
+    end)

+ 34 - 0
packages/a/anari/xmake.lua

@@ -0,0 +1,34 @@
+package("anari")
+    set_homepage("https://github.com/KhronosGroup/ANARI-SDK")
+    set_description("ANARI Software Development Kit (SDK)")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/KhronosGroup/ANARI-SDK/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/KhronosGroup/ANARI-SDK.git")
+
+    add_versions("v0.14.1", "a1df9e917bdb0b6edb0ad4b8e59e1171468a446f850559c74ad5731317201e16")
+    add_versions("v0.13.1", "b8979ab0dea22cf71c2eacf9421b0cf3fe5807224147c63686d6ed07e65873f4")
+    add_versions("v0.12.1", "1fc5cf360b260cc2e652bff4a41dcf3507c84d25701dc6c6630f6f6f83656b6c")
+
+    add_deps("cmake", "python 3.x", {kind = "binary"})
+
+    on_install(function (package)
+        if not package:config("shared") and package:is_plat("windows") then
+            package:add("defines", "ANARI_STATIC_DEFINE")
+        end
+
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DBUILD_EXAMPLES=OFF",
+            "-DBUILD_VIEWER=OFF",
+            "-DCTS_ENABLE_GLTF=OFF",
+            "-DBUILD_HELIDE_DEVICE=OFF",
+        }
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (not package:config("shared") and "ON" or "OFF"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("anariLoadLibrary", {includes = "anari/anari.h"}))
+    end)

+ 3 - 1
packages/a/angelscript/port/xmake.lua

@@ -2,9 +2,11 @@ add_rules("mode.debug", "mode.release")
 add_rules("utils.install.cmake_importfiles")
 set_languages("c++11")
 
-option("exceptions", {showmenu = true,  default = false})
+option("exceptions", {default = true})
+option("vers", {description = "Set the version"})
 
 target("angelscript")
+    set_version("$(vers)")
     set_kind("shared")
     add_files("angelscript/source/*.cpp")
     add_headerfiles("angelscript/include/*.h")

+ 18 - 3
packages/a/angelscript/xmake.lua

@@ -3,7 +3,10 @@ package("angelscript")
     set_description("Extremely flexible cross-platform scripting library designed to allow applications to extend their functionality through external scripts")
     set_license("zlib")
 
+    add_urls("https://github.com/codecat/angelscript-mirror.git")
     add_urls("http://angelcode.com/angelscript/sdk/files/angelscript_$(version).zip")
+
+    add_versions("2.37.0", "0c52d1688016a0b2484e9ca549471c4e295df060770c57840144c64815f54f10")
     add_versions("2.36.0", "33f95f7597bc0d88b097d35e7b1320d15419ffc5779851d9d2a6cccec57811b3")
     add_versions("2.35.1", "5c1096b6d6cf50c7e77ae93c736d35b69b07b1e5047161c7816bca25b413a18b")
     add_versions("2.35.0", "010dd45e23e734d46f5891d70e268607a12cb9ab12503dda42f842d9db7e8857")
@@ -11,22 +14,34 @@ package("angelscript")
 
     add_patches(">=2.34.0", "patches/msvc-arm64.patch", "1433f474870102e6fd8d0c9978b6d122a098cdecded29be70176b9dab534564f")
 
-    add_configs("exceptions", {description = "Enable exception handling in script context", default = false, type = "boolean"})
+    add_configs("exceptions", {description = "Enable exception handling in script context", default = true, type = "boolean"})
 
     if is_plat("linux") then
         add_syslinks("pthread")
     end
 
+    if on_check then
+        on_check("mingw", function (package)
+            if is_host("macosx") and package:is_arch("i386") and package:version():eq("2.37.0") then
+                assert(false, "package(angelscript 2.37.0): Unsupported version on mingw|i386")
+            end
+        end)
+    end
+
     on_load("windows|x86", "windows|x64", "linux", "android", "msys", "mingw", function (package)
         package:add("deps", "cmake")
     end)
 
     on_install("windows|x86", "windows|x64", "linux", "android", "msys", "mingw", function (package)
-        os.cd("angelscript/projects/cmake")
         local configs = {}
         table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
         table.insert(configs, "-DAS_NO_EXCEPTIONS=" .. (package:config("exceptions") and "OFF" or "ON"))
+
+        if package:gitref() then
+            os.cd("sdk")
+        end
+        os.cd("angelscript/projects/cmake")
         if package:is_plat("android") then
             io.gsub("CMakeLists.txt", "set_property", "#set_property")
         end
@@ -34,7 +49,7 @@ package("angelscript")
     end)
 
     on_install("windows|arm64", function (package)
-        local configs = {}
+        local configs = {vers = package:version_str()}
         configs.exceptions = package:config("exceptions")
         os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
         import("package.tools.xmake").install(package, configs)

+ 21 - 0
packages/a/annoy/xmake.lua

@@ -0,0 +1,21 @@
+package("annoy")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/spotify/annoy")
+    set_description("Approximate Nearest Neighbors in C++/Python optimized for memory usage and loading/saving to disk")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/spotify/annoy/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/spotify/annoy.git")
+
+    add_versions("v1.17.3", "c121d38cacd98f5103b24ca4e94ca097f18179eed3037e9eb93ad70ec1e6356e")
+    add_versions("v1.17.2", "ad3518f36bdd5ea54576dfe1c765c93d5c737342f269aada2cd7ff1bc0d0cd93")
+
+    add_deps("cmake")
+
+    on_install(function (package)
+        import("package.tools.cmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cxxincludes("annoy/annoylib.h", {configs = {languages = "c++11"}}))
+    end)

+ 13 - 0
packages/a/antlr4-runtime/patches/4.13.2/add-include-chrono.patch

@@ -0,0 +1,13 @@
+diff --git a/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp b/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp
+index 9fd86d6..5220492 100644
+--- a/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp
++++ b/runtime/Cpp/runtime/src/atn/ProfilingATNSimulator.cpp
+@@ -10,6 +10,7 @@
+ #include "support/CPPUtils.h"
+ 
+ #include "atn/ProfilingATNSimulator.h"
++#include <chrono>
+ 
+ using namespace antlr4;
+ using namespace antlr4::atn;
+ 

+ 13 - 7
packages/a/antlr4-runtime/xmake.lua

@@ -6,8 +6,11 @@ package("antlr4-runtime")
     add_urls("https://github.com/antlr/antlr4/archive/refs/tags/$(version).tar.gz",
              "https://github.com/antlr/antlr4.git")
 
+    add_versions("4.13.2", "9f18272a9b32b622835a3365f850dd1063d60f5045fb1e12ce475ae6e18a35bb")
     add_versions("4.13.1", "da20d487524d7f0a8b13f73a8dc326de7fc2e5775f5a49693c0a4e59c6b1410c")
 
+    add_patches("4.13.2", "patches/4.13.2/add-include-chrono.patch", "79400e790cc757760a292168a52762e6e2b91045190231fdf06cba60a164309e")
+
     if is_plat("mingw") and is_subhost("msys") then
         add_extsources("pacman::antlr4-runtime-cpp")
     elseif is_plat("linux") then
@@ -27,18 +30,21 @@ package("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"))
+        if not package:config("shared") then
+            package:add("defines", "ANTLR4CPP_STATIC")
+        end
 
         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})
+        io.replace("CMakeLists.txt", "add_subdirectory(runtime)",
+            "include(GNUInstallDirs)\nadd_subdirectory(runtime)", {plain = true})
+        
+        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"))
         import("package.tools.cmake").install(package, configs)
-        if not package:config("shared") then
-            package:add("defines", "ANTLR4CPP_STATIC")
-        end
     end)
 
     on_test(function (package)

+ 19 - 0
packages/a/antlr4/rules/find_antlr4.lua

@@ -0,0 +1,19 @@
+-- https://github.com/antlr/antlr4/blob/master/runtime/Cpp/cmake/antlr4-generator.cmake.in
+rule("find_antlr4")
+    on_config(function(target)
+        import("lib.detect.find_tool")
+
+        assert(target:pkg("antlr4"), "Please configure add_packages(\"antlr4\") for target(" .. target:name() .. ")")
+        
+        local envs = target:pkgenvs()
+        local java = assert(find_tool("java", {envs = envs}), "java not found!")
+        local argv = {
+            "-classpath",
+            envs.CLASSPATH,
+            "org.antlr.v4.Tool",
+            "-Dlanguage=Cpp",
+        }
+
+        target:data_set("antlr4.tool", java)
+        target:data_set("antlr4.tool.argv", argv)
+    end)

+ 176 - 0
packages/a/antlr4/rules/g4.lua

@@ -0,0 +1,176 @@
+-- Usage
+--[[
+    add_requires("antlr4", "antlr4-runtime")
+
+    set_languages("c++17")
+    set_exceptions("cxx")
+
+    target("test")
+        set_kind("object")
+        add_files("src/*.g4")
+        add_rules("@antlr4/g4")
+        add_packages("antlr4", "antlr4-runtime")
+--]]
+
+rule("g4")
+    set_extensions(".g4")
+
+    add_deps("@find_antlr4")
+
+    if xmake.version():ge("3.0.0") then
+        on_prepare_files(function (target, jobgraph, sourcebatch, opt)
+            import("core.project.depend")
+            import("utils.progress")
+
+            local group_name = path.join(target:fullname(), "generate/g4")
+            local autogendir = path.join(target:autogendir(), "rules/antlr4")
+            jobgraph:group(group_name, function()
+                for _, sourcefile in ipairs(sourcebatch.sourcefiles) do
+                    local jave_job = path.join(group_name, sourcefile)
+                    local sourcefile_dir = path.normalize(path.join(autogendir, path.directory(sourcefile)))
+                    target:add("includedirs", sourcefile_dir, {public = true})
+                    os.mkdir(sourcefile_dir)
+                    jobgraph:add(jave_job, function (index, total, opt)
+                        local java = target:data("antlr4.tool")
+                        local argv = target:data("antlr4.tool.argv")
+                        table.join2(argv, target:values("antlr4.flags"))
+
+                        local fileconfig = target:fileconfig(sourcefile)
+                        if fileconfig then
+                            table.insert(argv, (fileconfig.visitor and "-visitor" or "-no-visitor"))
+                            table.insert(argv, (fileconfig.listener and "-listener" or "-no-listener"))
+                        end
+                        table.insert(argv, "-o")
+                        table.insert(argv, autogendir)
+                        table.insert(argv, "-lib")
+                        table.insert(argv, sourcefile_dir)
+                        table.insert(argv, sourcefile)
+
+                        depend.on_changed(function()
+                            progress.show(opt.progress or 0, "${color.build.object}compiling.g4 %s", sourcefile)
+                            os.vrunv(java.program, argv)
+                        end, {
+                            files = sourcefile,
+                            dependfile = target:dependfile(sourcefile),
+                            changed = target:is_rebuilt()
+                        })
+                    end)
+                end
+            end)
+        end, {jobgraph = true})
+
+        on_build_files(function (target, jobgraph, sourcebatch, opt)
+            for _, sourcefile in ipairs(sourcebatch.sourcefiles) do
+                local group_name = path.join(target:fullname(), "obj", sourcefile)
+                local sourcefile_dir = path.normalize(path.join(target:autogendir(), "rules/antlr4", path.directory(sourcefile)))
+                jobgraph:group(group_name, function()
+                    local batchcxx = {
+                        rulename = "c++.build",
+                        sourcekind = "cxx",
+                        sourcefiles = {},
+                        objectfiles = {},
+                        dependfiles = {}
+                    }
+                    -- g4 file have 3 case
+                    -- lexer grammar LuaLexer;
+                    -- parser grammar LuaParser;
+                    -- grammar C;
+                    local sourcefile_string = io.readfile(sourcefile)
+                    local lexer_name = sourcefile_string:match("lexer grammar (%w+);")
+                    local parser_name = sourcefile_string:match("parser grammar (%w+);")
+                    -- lexer and parser same name
+                    local grammar_name = sourcefile_string:match("grammar (%w+);")
+                    if lexer_name or parser_name then
+                        if lexer_name then
+                            table.insert(batchcxx.sourcefiles, path.join(sourcefile_dir, lexer_name .. ".cpp"))
+                        end
+                        if parser_name then
+                            table.insert(batchcxx.sourcefiles, path.join(sourcefile_dir, parser_name .. ".cpp"))
+                        end
+                    elseif grammar_name then
+                        table.insert(batchcxx.sourcefiles, path.join(sourcefile_dir, grammar_name .. "Parser.cpp"))
+                        table.insert(batchcxx.sourcefiles, path.join(sourcefile_dir, grammar_name .. "Lexer.cpp"))
+                    end
+
+                    for _, sourcefile in ipairs(batchcxx.sourcefiles) do
+                        local objectfile = target:objectfile(sourcefile)
+                        local dependfile = target:dependfile(objectfile)
+                        table.insert(target:objectfiles(), objectfile)
+                        table.insert(batchcxx.objectfiles, objectfile)
+                        table.insert(batchcxx.dependfiles, dependfile)
+                    end
+                    import("private.action.build.object")(target, jobgraph, batchcxx, opt)
+                end)
+            end
+        end, {jobgraph = true, distcc = true})
+    else
+        on_config(function (target)
+            local includedirs = {}
+            local autogendir = path.join(target:autogendir(), "rules/antlr4")
+            for _, sourcebatch in pairs(target:sourcebatches()) do
+                if sourcebatch.rulename == "@antlr4/g4" then
+                    for _, sourcefile in ipairs(sourcebatch.sourcefiles) do
+                        table.insert(includedirs, path.normalize(path.join(autogendir, path.directory(sourcefile))))
+                    end
+                    break
+                end
+            end
+            target:add("includedirs", table.unique(includedirs), {public = true})
+        end)
+
+        before_buildcmd_file(function (target, batchcmds, sourcefile_g4, opt)
+            local autogendir = path.join(target:autogendir(), "rules/antlr4")
+            local sourcefile_dir = path.normalize(path.join(autogendir, path.directory(sourcefile_g4)))
+            batchcmds:mkdir(sourcefile_dir)
+
+            local java = target:data("antlr4.tool")
+            local argv = target:data("antlr4.tool.argv")
+            table.join2(argv, target:values("antlr4.flags"))
+
+            local fileconfig = target:fileconfig(sourcefile_g4)
+            if fileconfig then
+                table.insert(argv, (fileconfig.visitor and "-visitor" or "-no-visitor"))
+                table.insert(argv, (fileconfig.listener and "-listener" or "-no-listener"))
+            end
+            table.insert(argv, "-o")
+            table.insert(argv, autogendir)
+            table.insert(argv, "-lib")
+            table.insert(argv, sourcefile_dir)
+            table.insert(argv, path(sourcefile_g4))
+
+            batchcmds:show_progress(opt.progress, "${color.build.object}compiling.g4 %s", sourcefile_g4)
+            batchcmds:vrunv(java.program, argv)
+
+            local _build = function (sourcefile_cxx)
+                local objectfile = target:objectfile(sourcefile_cxx)
+                table.insert(target:objectfiles(), objectfile)
+                batchcmds:show_progress(opt.progress, "${color.build.object}compiling.$(mode) %s", sourcefile_cxx)
+                batchcmds:compile(sourcefile_cxx, objectfile)
+        
+                batchcmds:add_depfiles(sourcefile_g4)
+                batchcmds:set_depmtime(os.mtime(objectfile))
+                batchcmds:set_depcache(target:dependfile(objectfile))
+            end
+
+            -- g4 file have 3 case
+            -- lexer grammar LuaLexer;
+            -- parser grammar LuaParser;
+            -- grammar C;
+            local g4_string = io.readfile(sourcefile_g4)
+            local lexer_name = g4_string:match("lexer grammar (%w+);")
+            local parser_name = g4_string:match("parser grammar (%w+);")
+            -- lexer and parser same name
+            local grammar_name = g4_string:match("grammar (%w+);")
+            if lexer_name or parser_name then
+                if lexer_name then
+                    _build(path.join(sourcefile_dir, lexer_name .. ".cpp"))
+                end
+                if parser_name then
+                    _build(path.join(sourcefile_dir, parser_name .. ".cpp"))
+                end
+            elseif grammar_name then
+                _build(path.join(sourcefile_dir, grammar_name .. "Lexer.cpp"))
+                _build(path.join(sourcefile_dir, grammar_name .. "Parser.cpp"))
+            end
+        end)
+    end

+ 33 - 0
packages/a/antlr4/xmake.lua

@@ -0,0 +1,33 @@
+package("antlr4")
+    set_kind("binary")
+    set_homepage("https://www.antlr.org")
+    set_description("powerful parser generator for reading, processing, executing, or translating structured text or binary files.")
+    set_license("BSD-3-Clause")
+
+    add_urls("https://www.antlr.org/download/antlr-$(version)-complete.jar")
+
+    add_versions("4.13.2", "eae2dfa119a64327444672aff63e9ec35a20180dc5b8090b7a6ab85125df4d76")
+    add_versions("4.13.1", "bc13a9c57a8dd7d5196888211e5ede657cb64a3ce968608697e4f668251a8487")
+
+    if is_plat("linux") then
+        add_extsources("pacman::antlr4", "apt::antlr4")
+    elseif is_plat("macosx") then
+        add_extsources("brew::antlr")
+    end
+
+    set_policy("package.precompiled", false)
+
+    add_deps("openjdk")
+
+    on_load(function (package)
+        package:mark_as_pathenv("CLASSPATH")
+        package:addenv("CLASSPATH", "lib/antlr-complete.jar")
+    end)
+
+    on_install("@windows", "@linux", "@macosx", function (package)
+        os.vcp(package:originfile(), path.join(package:installdir("lib"), "antlr-complete.jar"))
+    end)
+
+    on_test(function (package)
+        os.vrun("java -classpath $(env CLASSPATH) org.antlr.v4.Tool")
+    end)

+ 43 - 0
packages/a/aom/xmake.lua

@@ -0,0 +1,43 @@
+package("aom")
+    set_homepage("https://aomedia.googlesource.com/aom")
+    set_description("AV1 Codec Library")
+    set_license("BSD-2-Clause")
+
+    add_urls("https://storage.googleapis.com/aom-releases/libaom-$(version).tar.gz",
+             "https://aomedia.googlesource.com/aom.git")
+
+    add_versions("3.9.1", "dba99fc1c28aaade28dda59821166b2fa91c06162d1bc99fde0ddaad7cecc50e")
+
+    add_configs("tools", {description = "Build tools", default = false, type = "boolean"})
+
+    if is_plat("linux", "bsd") then
+        add_syslinks("pthread", "m")
+    end
+
+    add_deps("cmake", "nasm")
+    if is_plat("windows") or (is_plat("mingw") and is_host("windows")) then
+        add_deps("strawberry-perl")
+    end
+
+    on_install("!wasm and (!windows or windows|!arm64)", function (package)
+        local configs = {
+            "-DENABLE_EXAMPLES=OFF",
+            "-DENABLE_TESTS=OFF",
+            "-DENABLE_DOCS=OFF",
+            "-DCONFIG_LIBYUV=0",
+            "-DCONFIG_WEBM_IO=0",
+        }
+        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"))
+        if package:is_plat("windows") and package:is_arch("arm.*") then
+            table.insert(configs, "-DCMAKE_SYSTEM_NAME=Windows")
+            table.insert(configs, "-DCMAKE_SYSTEM_PROCESSOR=" .. package:arch())
+        end
+
+        table.insert(configs, "-DENABLE_TOOLS=" .. (package:config("tools") and "ON" or "OFF"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("aom_codec_version_str", {includes = "aom/aom_codec.h"}))
+    end)

+ 2 - 0
packages/a/apr/xmake.lua

@@ -5,6 +5,8 @@ package("apr")
 
     add_urls("https://github.com/apache/apr/archive/refs/tags/$(version).tar.gz",
              "https://github.com/apache/apr.git")
+    add_versions("1.7.6", "01a1811d9f69fef2656c742890e2e911d81be48362740cb003878e0c9f8f6416")
+    add_versions("1.7.5", "6d0712c529503cd2457011d03164491bbc16d0050bc40ef89568b1ac491c6600")
     add_versions("1.7.4", "060b6e5ca8b3251545a93777c9ef744ceff02d4a59bb60a7dd9b3da9da33673e")
     add_versions("1.7.0", "a7e2c5e6d60f6c7b1611b31a2f914a3e58f44eded5b064f0bae43ff30b16a4e6")
 

+ 27 - 13
packages/a/aqt/xmake.lua

@@ -4,24 +4,35 @@ package("aqt")
     set_description("aqt: Another (unofficial) Qt CLI Installer on multi-platforms")
     set_license("MIT")
 
+    add_configs("shared", {description = "Download shared binaries.", default = true, type = "boolean", readonly = true})
+
     if is_host("windows") and (os.arch() == "x64" or os.arch() == "x86") then
-        add_configs("shared", {description = "Download shared binaries.", default = true, type = "boolean", readonly = true})
         add_configs("runtimes", {description = "Set compiler runtimes.", default = "MD", readonly = true})
 
         if os.arch() == "x86" then
-            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt_x86_signed.exe", { alias = "signed" })
-            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt_x86.exe", { alias = "regular" })
-            add_versions("signed:3.1.6", "dc675b64caceaacaf2d2bd711fb7a005ab2bcf7f6a28702e52408965f65718ec")
-            add_versions("regular:3.1.6", "093b536fab2e3726a792cdb60292313c0c8950b8aa9b56ccdeff7adb1146f964")
-            add_versions("regular:3.0.2", "aac5d8949eed3f231bfc589736afe0f88372dc590182c8b3a2bed7c78952b944")
-            add_versions("regular:2.0.6", "b980985cfeb1cefef1d2ebab91ae4e648873a27fae8831deff8144661480c56a")
+            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt_x86.exe")
+            add_versions("3.1.21", "b79465e771a78a76a8967c4bc49ac93210e25d6ead58b929a57100b3c6da71df")
+            add_versions("3.1.17", "d3abbd3378907f2e3ebf3af3387590245bb04175e1a720d04463b047732e1cd2")
+            add_versions("3.1.6", "093b536fab2e3726a792cdb60292313c0c8950b8aa9b56ccdeff7adb1146f964")
+            add_versions("3.0.2", "aac5d8949eed3f231bfc589736afe0f88372dc590182c8b3a2bed7c78952b944")
+            add_versions("2.0.6", "b980985cfeb1cefef1d2ebab91ae4e648873a27fae8831deff8144661480c56a")
+        else
+            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt_x64.exe")
+            add_versions("3.1.21", "da834e08268f3ffbb4c3e1c3e8a3ef8885d446e96e48dd35780a8d73e4a9e4ed")
+            add_versions("3.1.17", "02acc10c6317a2a9f76464d5c26b129b836531f81938b2b222498c495d69fcdb")
+            add_versions("3.1.6", "4f7e3fbc2d155f903ed9597b7929201681ffb7628e97765511cc7efa8a60f3e6")
+            add_versions("3.0.2", "96e46eca0d18a899db00a26facd20c799f2400645aef6445d49f4bd0aeab0a3f")
+            add_versions("2.0.6", "b0ad07fe8fd2c094425449f3053598959e467833dadf509da948571259510078")
+        end
+    elseif is_host("macosx") and (os.arch() == "arm64" or os.arch() == "x86_64") then
+        if os.arch() == "arm64" then
+            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt-macos")
+            add_versions("3.1.21", "aa720dbf0928b0843d02b06273086d0e4974b742461783c343b6ddde5ec7e0be")
+            add_versions("3.1.17", "cb51decbc12500d2e3e4b743dd4abb86a91fd9f25a916cafe54572963acf0690")
         else
-            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt_x64_signed.exe", { alias = "signed" })
-            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt_x64.exe", { alias = "regular" })
-            add_versions("signed:3.1.6", "ca988c2aedaed379d1672e95ed38f91be5e803a5f2947b25c29e8b28fb2bd5c8")
-            add_versions("regular:3.1.6", "4f7e3fbc2d155f903ed9597b7929201681ffb7628e97765511cc7efa8a60f3e6")
-            add_versions("regular:3.0.2", "96e46eca0d18a899db00a26facd20c799f2400645aef6445d49f4bd0aeab0a3f")
-            add_versions("regular:2.0.6", "b0ad07fe8fd2c094425449f3053598959e467833dadf509da948571259510078")
+            add_urls("https://github.com/miurahr/aqtinstall/releases/download/v$(version)/aqt-macos")
+            add_versions("3.1.21", "aa720dbf0928b0843d02b06273086d0e4974b742461783c343b6ddde5ec7e0be")
+            add_versions("3.1.17", "cb51decbc12500d2e3e4b743dd4abb86a91fd9f25a916cafe54572963acf0690")
         end
     else
         add_deps("7z")
@@ -31,6 +42,9 @@ package("aqt")
     on_install("@macosx", "@linux", "@windows", "@msys", function (package)
         if is_host("windows") and (os.arch() == "x64" or os.arch() == "x86") then
             os.cp(package:originfile(), path.join(package:installdir("bin"), "aqt.exe"))
+        elseif is_host("macosx") and (os.arch() == "arm64" or os.arch() == "x86_64") then
+            os.cp(package:originfile(), path.join(package:installdir("bin"), "aqt"))
+            os.vrunv("chmod", {"+x", path.join(package:installdir("bin"), "aqt")})
         else
             -- ensurepip has been dropped in recent releases
             try {function () os.vrunv("python3", {"-m", "ensurepip"}) end}

+ 64 - 0
packages/a/aravis/xmake.lua

@@ -0,0 +1,64 @@
+package("aravis")
+    set_homepage("https://github.com/AravisProject/aravis")
+    set_description("A vision library for genicam based cameras")
+    set_license("LGPL-2.1")
+
+    add_urls("https://github.com/AravisProject/aravis.git")
+    add_urls("https://github.com/AravisProject/aravis/releases/download/$(version)/aravis-$(version).tar.xz", {alias = "release"})
+    add_urls("https://github.com/AravisProject/aravis/archive/refs/tags/$(version).tar.gz", {alias = "github"})
+
+    add_versions("release:0.8.33", "3c4409a12ea70bba4de25e5b08c777112de854bc801896594f2cb6f8c2bd6fbc")
+
+    add_versions("github:0.8.33", "d70b125666b23ca4c0f8986fa0786a3d2b9efb7a56b558b703083cdfaa793f4e")
+
+    add_configs("gst_plugin", {description = "Build GStreamer plugin", default = false, type = "boolean"})
+    add_configs("usb", {description = "Enable USB support", default = false, type = "boolean"})
+    add_configs("packet_socket", {description = "Enable packet socket support", default = false, type = "boolean"})
+    add_configs("introspection", {description = "Enable packet socket support", default = false, type = "boolean"})
+
+    if is_plat("windows") then
+        add_syslinks("ws2_32", "iphlpapi")
+    elseif is_plat("linux", "bsd") then
+        add_syslinks("dl", "pthread", "m", "resolv")
+    end
+
+    add_deps("meson", "ninja")
+    if is_plat("windows") then
+        add_deps("pkgconf")
+    else
+        add_deps("pkg-config")
+    end
+    add_deps("glib", "libxml2", "zlib")
+
+    on_load(function (package)
+        if package:config("gst_plugin") then
+            package:add("deps", "gstreamer")
+        end
+        if package:config("usb") then
+            package:add("deps", "libusb")
+        end
+
+        local version = package:version()
+        assert(version, "require version to set includedirs")
+        package:add("includedirs", "include", format("include/aravis-%d.%d", version:major(), version:minor()))
+    end)
+
+    on_install("windows|native", "macosx|native", "linux|native", function (package)
+        -- patch xrepo package name to find .pc
+        local libusb = package:dep("libusb")
+        if libusb and not libusb:is_system() then
+            io.replace("meson.build", "libusb-1.0", "libusb", {plain = true})
+        end
+
+        local configs = {"-Dviewer=disabled", "-Dtests=false"}
+        table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
+        table.insert(configs, "-Dgst-plugin=" .. (package:config("gst_plugin") and "enabled" or "disabled"))
+        table.insert(configs, "-Dusb=" .. (package:config("usb") and "enabled" or "disabled"))
+        table.insert(configs, "-Dpacket-socket=" .. (package:config("packet_socket") and "enabled" or "disabled"))
+        table.insert(configs, "-Dintrospection=" .. (package:config("introspection") and "enabled" or "disabled"))
+        import("package.tools.meson").install(package, configs, {packagedeps = {"libintl", "libiconv"}})
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("arv_get_n_interfaces", {includes = "arv.h"}))
+    end)

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

@@ -7,6 +7,13 @@ package("arduinojson")
     add_urls("https://github.com/bblanchon/ArduinoJson/archive/refs/tags/$(version).tar.gz",
              "https://github.com/bblanchon/ArduinoJson.git")
 
+    add_versions("v7.4.2", "681f703dd237f5b7f1dc1d7009a9cf246e88676b349572e73eae9154e8994a55")
+    add_versions("v7.4.1", "4db7245408c58c4869c135aece5e92c784d8026f5dbc6efd0485e52b84264d10")
+    add_versions("v7.3.1", "1b00fad9bd2b86ff9814d3e0e393fee1dbf0f37ac07f1181b41bc503e6a3b1a2")
+    add_versions("v7.3.0", "e2b6739a00c64813169cbcea2d0884cbd63efe2223c0b1307de4e655d87730d8")
+    add_versions("v7.2.1", "2780504927533d64cf4256c57de51412b835b327ef4018c38d862b0664d36d4f")
+    add_versions("v7.2.0", "d20aefd14f12bd907c6851d1dfad173e4fcd2d993841fa8c91a1d8ab5a71188b")
+    add_versions("v7.1.0", "74bc745527a274bcab85c6498de77da749627113c4921ccbcaf83daa7ac35dee")
     add_versions("v7.0.4", "98ca14d98e9f1e8978ce5ad3ca0eeda3d22419d17586c60f299f369078929917")
     add_versions("v7.0.3", "6da2d069e0caa0c829444912ee13e78bdf9cc600be632428a164c92e69528000")
     add_versions("v6.21.4", "9551af9282372f6e64cf4009fc43be7f2df6eb96fe9c0aab44d4eed217d09747")
@@ -22,7 +29,11 @@ package("arduinojson")
             #include <ArduinoJson.h>
             void test() {
                 char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
+                #if ARDUINOJSON_VERSION_MAJOR < 7
                 DynamicJsonDocument doc(1024);
+                #else
+                JsonDocument doc;
+                #endif
                 deserializeJson(doc, json);
             }
         ]]}, {configs = {languages = "c++11"}}))

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

@@ -6,6 +6,8 @@ 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.2", "14c1a0e975d6877dfeaf52a1e79e54f70169a847e29c7e13aa7fe68a3d0ecbf1")
+    add_versions("3.1", "3e5a59ab7688dcd1f918bc92051a10564113d4f36c3bbed3ef596c25e519a062")
     add_versions("3.0", "674e724c2702f0bfef1619161815257a407e1babce30d908327729fba6ce4124")
     add_versions("2.6", "ce4e58d527b83679bdcc4adfa852af7ec9df16b76c11637823ef642cb02d2618")
     add_versions("2.7", "58cf098fd195895aeb9b9120d96f1e310994b2f44d72934c438ec91bf2191f46")

+ 36 - 0
packages/a/argtable3/xmake.lua

@@ -0,0 +1,36 @@
+package("argtable3")
+    set_homepage("http://www.argtable.org")
+    set_description("A single-file, ANSI C, command-line parsing library that parses GNU-style command-line options.")
+    set_license("BSD-3-Clause")
+
+    add_urls("https://github.com/argtable/argtable3.git")
+
+    add_versions("v3.2.2", "76fd1576e296bd9f93309b2a6e16a3268ad9b8c8")
+
+    add_deps("cmake")
+
+    on_install(function (package)
+        if package:config("shared") then
+            package:add("defines", "argtable3_IMPORTS")
+        end
+
+        if package:is_plat("mingw") then
+            io.replace("src/version.rc.in", "#include <verrsrc.h>", "", {plain = true})
+        end
+
+        if package:version() then
+            io.writefile("version.tag", package:version_str() .. ".xmake")
+        end
+
+        local configs = {"-DARGTABLE3_ENABLE_TESTS=OFF", "-DARGTABLE3_ENABLE_EXAMPLES=OFF"}
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        table.insert(configs, "-DARGTABLE3_ENABLE_ARG_REX_DEBUG=" .. (package:is_debug() and "ON" or "OFF"))
+        table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+
+        os.mkdir(path.join(package:buildir(), "src/pdb"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("arg_parse", {includes = "argtable3.h"}))
+    end)

+ 39 - 0
packages/a/argus/xmake.lua

@@ -0,0 +1,39 @@
+package("argus")
+    set_homepage("https://argus-lib.com")
+    set_description("Argus is a cross-platform modern feature-rich command-line argument parser for C")
+    set_license("MIT")
+
+    add_urls("https://github.com/lucocozz/Argus/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/lucocozz/Argus.git")
+
+    add_versions("v0.1.0", "0e7780db65a06f72268a60336d8621ea17f704ec12c6d679c0ae86048ec6e8fc")
+
+    add_configs("regex", {description = "Enable regex validation support using PCRE2", default = false, type = "boolean"})
+    if is_plat("wasm") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
+
+    add_deps("meson", "ninja")
+
+    on_load(function (package)
+        if package:config("regex") then
+            package:add("deps", "pcre2")
+        end
+    end)
+
+    on_install(function (package)
+        if package:is_plat("mingw") then
+            io.replace("includes/argus/internal/compiler.h", "#define ARGUS_API __declspec(dllimport) __cdecl", "#define ARGUS_API", {plain = true})
+        elseif package:is_plat("windows") then
+            io.replace("includes/argus/internal/compiler.h", "#define ARGUS_API __declspec(dllimport)", "#define ARGUS_API", {plain = true})
+        end
+        io.replace("meson.build", "werror=true", "werror=false", {plain = true})
+        io.replace("meson.build", "both_libraries", "library", {plain = true})
+        local configs = {"-Dregex=" .. (package:config("regex") and "true" or "false")}
+        table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
+        import("package.tools.meson").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("argus_init", {includes = "argus.h"}))
+    end)

+ 31 - 0
packages/a/argz/xmake.lua

@@ -0,0 +1,31 @@
+package("argz")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/stephenberry/argz")
+    set_description("A light weight C++ in memory argument parser")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/stephenberry/argz/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/stephenberry/argz.git")
+
+    add_versions("v0.2.1", "1a9d85ef7e4722f81ce426c2cf8ceaa0a10cc42e7762cdf2465ae6484ece9c7e")
+
+    add_includedirs("include/argz")
+
+    add_deps("cmake")
+
+    on_install(function (package)
+        if package:has_tool("cxx", "cl") then
+            package:add("cxxflags", "/Zc:preprocessor", "/GL", "/permissive-", "/Zc:lambda")
+        end
+        io.replace("CMakeLists.txt", "include(cmake/dev-mode.cmake)", "", {plain = true})
+        import("package.tools.cmake").install(package)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                constexpr std::string_view version = "1.2.3";
+                argz::about about{ "My program description", version };
+            }
+        ]]}, {configs = {languages = "c++20"}, includes = {"argz/argz.hpp"}}))
+    end)

+ 25 - 0
packages/a/arkari/xmake.lua

@@ -0,0 +1,25 @@
+package("arkari")
+    set_kind("toolchain")
+    set_homepage("https://github.com/KomiMoe/Arkari")
+    set_description("Yet another llvm based obfuscator based on goron.")
+    set_license("Apache-2.0")
+
+    local version_map = {
+        ["19.1.3"] = "1.6.0"
+    }
+
+    add_urls("https://github.com/KomiMoe/Arkari/releases/download/$(version)/$(version).7z", {version = function (version)
+        local llvm_ver = tostring(version)
+        local obf_ver = version_map[llvm_ver]
+        return string.format("Win64-MT-%s-obf%s", llvm_ver, obf_ver)
+    end})
+
+    add_versions("19.1.3", "9a181798ef3648cf8acb2f83941792f948d589a94b9d579a783b97331770ce93")
+
+    on_install("windows|x64", function (package)
+        os.mv("*", package:installdir())
+    end)
+
+    on_test(function (package)
+        os.vrun("llvm-config --version")
+    end)

+ 71 - 0
packages/a/asbind20/xmake.lua

@@ -0,0 +1,71 @@
+package("asbind20")
+    set_homepage("https://asbind20.readthedocs.io/")
+    set_description("C++20 AngelScript binding library")
+    set_license("MIT")
+
+    add_urls("https://github.com/HenryAWE/asbind20/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/HenryAWE/asbind20.git")
+
+    add_versions("1.7.0", "43d0cbb0edb64b35f4a847cf16dbb41bd94d13d2cb7cdc4187de2e1d03869652")
+    add_versions("1.6.0", "e936b5c1c89d7e66165f34ba4f536faab9fea397c36172b3e455436d525da461")
+
+    add_deps("cmake")
+    add_deps("angelscript >= 2.37.0")
+
+    -- Shared library is not supported by current release (1.6) --
+    add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    add_configs("ext", {description = "Build the extensions.", default = true, type = "boolean"})
+
+    on_check(function (package)
+        if package:is_plat("mingw") then
+            if is_host("macosx") and package:is_arch("i386") then
+                assert(false, "package(asbind20): Unsupported on mingw|i386")
+            end
+        end
+        assert(package:check_cxxsnippets({test = [[
+            #include <concepts>
+            void test(std::signed_integral auto x) {
+                static_assert(std::integral<int>);
+                static_assert(std::floating_point<double>);
+                static_assert(std::same_as<int, signed>);
+                static_assert(std::convertible_to<int, long>);
+            }
+        ]]}, {configs = {languages = "c++20"}}), "package(asbind20): need std::convertible_to from <concepts> header.")
+    end)
+
+    on_load(function (package)
+        -- The core library is header-only --
+        if not package:config("ext") then
+            package:set("kind", "library", {headeronly = true})
+        end
+    end)
+
+    on_install("windows", "linux", "android", "msys", "mingw", function (package)
+        if package:is_plat("windows") and package:is_arch("arm64") then
+            -- Exported target namespace starts with capital letter, but XMake auto-generated CMakeConfig defines it as angelscript::angelscript
+            io.replace("CMakeLists.txt", "Angelscript::angelscript", "angelscript::angelscript", {plain = true})
+        end
+        local configs = {}
+        table.insert(configs, "-Dasbind_build_ext=" .. (package:config("ext") and "ON" or "OFF"))
+        table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
+        table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        if package:config("ext") then
+            assert(package:check_cxxsnippets({test = [[
+                #include <asbind20/ext/stdstring.hpp>
+                void test() {
+                    auto engine = asbind20::make_script_engine();
+                    asbind20::ext::configure_engine_for_ext_string(engine);
+                }
+            ]]}, {configs = {languages = "c++20"}}))
+        end
+        assert(package:check_cxxsnippets({test = [[
+            #include <asbind20/asbind.hpp>
+            void test() {
+                auto engine = asbind20::make_script_engine();
+            }
+        ]]}, {configs = {languages = "c++20"}}))
+    end)

+ 8 - 0
packages/a/asio/xmake.lua

@@ -7,6 +7,10 @@ package("asio")
 
     add_urls("https://sourceforge.net/projects/asio/files/asio/$(version) (Stable)/asio-$(version).tar.gz", {alias = "sourceforge"})
     add_urls("https://github.com/chriskohlhoff/asio/archive/refs/tags/asio-$(version).tar.gz", {alias = "github", version = function (version) return version:gsub("%.", "-") end})
+
+    add_versions("github:1.34.2", "f3bac015305fbb700545bd2959fbc52d75a1ec2e05f9c7f695801273ceb78cf5")
+    add_versions("github:1.34.0", "061ed6c8b97527756aed3e34d2cbcbcb6d3c80afd26ed6304f51119e1ef6a1cd")
+    add_versions("github:1.32.0", "f1b94b80eeb00bb63a3c8cef5047d4e409df4d8a3fe502305976965827d95672")
     add_versions("github:1.30.2", "755bd7f85a4b269c67ae0ea254907c078d408cce8e1a352ad2ed664d233780e8")
     add_versions("github:1.29.0", "44305859b4e6664dbbf853c1ef8ca0259d694f033753ae309fcb2534ca20f721")
     add_versions("github:1.28.0", "226438b0798099ad2a202563a83571ce06dd13b570d8fded4840dbc1f97fa328")
@@ -15,6 +19,10 @@ package("asio")
     add_versions("sourceforge:1.20.0", "4cd5cd0ad97e752a4075f02778732a3737b587f5eeefab59cd98dc43b0dcadb3")
     add_versions("github:1.20.0", "34a8f07be6f54e3753874d46ecfa9b7ab7051c4e3f67103c52a33dfddaea48e6")
 
+    if is_plat("mingw") then
+        add_syslinks("ws2_32", "bcrypt")
+    end
+
     on_install("!wasm", function (package)
         if os.isdir("asio") then
             os.cp("asio/include/asio.hpp", package:installdir("include"))

+ 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;
+     }

+ 22 - 6
packages/a/asio2/xmake.lua

@@ -1,18 +1,34 @@
 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).tar.gz",
+             "https://github.com/zhllxt/asio2.git")
+
+    add_versions("v2.9", "d173e83a22f6d4ec8697ac533f4cf71051b7aa5c550d24997d991610206dd534")
+
+    add_configs("ssl", {description = "Build OpenSSL module", default = false, type = "boolean"})
+
+    add_patches("2.9", "patches/2.9/remove-const.patch", "6326f333ab2d0484c23bb3cd9cfd5a565030b5525d083677565a693f5f8803b6")
 
-    add_deps("asio", "cereal", "fmt", "openssl3")
+    add_deps("asio", "cereal")
     add_deps("spdlog", { configs = { header_only = false, fmt_external = true } })
 
-    on_install("windows", "linux", "macosx", "mingw", "bsd", function (package)
-        os.cp(path.join("include", "*"), package:installdir("include"))
+    if is_plat("windows", "mingw") then
+        add_syslinks("ws2_32")
+    end
+
+    on_load(function (package)
+        if package:config("ssl") then
+            package:add("deps", "openssl3")
+            package:add("defines", "ASIO2_ENABLE_SSL")
+        end
+    end)
+
+    on_install("windows", "linux", "macosx", "mingw", "bsd", "cross", function (package)
+        os.cp("include/*", package:installdir("include"))
     end)
 
     on_test(function (package)

+ 16 - 0
packages/a/assimp/patches/5.4.3/fix_mingw.patch

@@ -0,0 +1,16 @@
+diff --git a/code/Common/DefaultIOStream.cpp b/code/Common/DefaultIOStream.cpp
+index e423eae4f8..35bbb67a5a 100644
+--- a/code/Common/DefaultIOStream.cpp
++++ b/code/Common/DefaultIOStream.cpp
+@@ -157,9 +157,9 @@ size_t DefaultIOStream::FileSize() const {
+             return 0;
+         mCachedSize = (size_t)(fileStat.st_size);
+ #elif defined _WIN32
+-        struct _stat32 fileStat;
++        struct _stat fileStat;
+         //using fileno + fstat avoids having to handle the filename
+-        int err = _fstat32(_fileno(mFile), &fileStat);
++        int err = _fstat(_fileno(mFile), &fileStat);
+         if (0 != err)
+             return 0;
+         mCachedSize = (size_t)(fileStat.st_size);

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

@@ -5,6 +5,9 @@ package("assimp")
 
     set_urls("https://github.com/assimp/assimp/archive/refs/tags/$(version).zip",
              "https://github.com/assimp/assimp.git")
+    add_versions("v6.0.1", "24256974f66e36df6c72b78d4903e1bb6875b6d3f8aa8638639def68f2c50fd0")
+    add_versions("v5.4.3", "795c29716f4ac123b403e53b677e9f32a8605c4a7b2d9904bfaae3f4053b506d")
+    add_versions("v5.4.2", "03e38d123f6bf19a48658d197fd09c9a69db88c076b56a476ab2da9f5eb87dcc")
     add_versions("v5.4.1", "08837ee7c50b98ca72d2c9e66510ca6640681db8800aa2d3b1fcd61ccc615113")
     add_versions("v5.4.0", "0f3698e9ba0110df0b636dbdd95706e7e28d443ff3dbaf5828926c23bfff778d")
     add_versions("v5.3.1", "f4020735fe4601de9d85cb335115568cce0e027a65e546dd8895081696d624bd")
@@ -23,6 +26,7 @@ package("assimp")
     add_patches("v5.2.3", path.join(os.scriptdir(), "patches", "5.2.1", "fix_zlib_filefunc_def.patch"), "a9f8a9aa1975888ea751b80c8268296dee901288011eeb1addf518eac40b71b1")
     add_patches("v5.2.3", path.join(os.scriptdir(), "patches", "5.2.3", "cmake_static_crt.patch"), "3872a69976055bed9e40814e89a24a3420692885b50e9f9438036e8d809aafb4")
     add_patches("v5.2.4", path.join(os.scriptdir(), "patches", "5.2.4", "fix_x86_windows_build.patch"), "becb4039c220678cf1e888e3479f8e68d1964c49d58f14c5d247c86b4a5c3293")
+    add_patches("v5.4.3", path.join(os.scriptdir(), "patches", "5.4.3", "fix_mingw.patch"), "2498bb9438a0108becf1c514fcbfc103e012638914c9d21160572ed24a9fa3b3")
 
     if not is_host("windows") then
         add_extsources("pkgconfig::assimp")
@@ -134,6 +138,12 @@ package("assimp")
             if minizip and not minizip:is_system() then
                 packagedeps = table.join2(packagedeps or {}, "minizip")
             end
+            -- fix ninja debug build
+            os.mkdir(path.join(package:buildir(), "code/pdb"))
+            -- MDd == _DEBUG + _MT + _DLL
+            if package:is_debug() and package:has_runtime("MD", "MT") then
+                io.replace("CMakeLists.txt", "/D_DEBUG", "", {plain = true})
+            end
         end
 
         local zlib = package:dep("zlib")

+ 55 - 9
packages/a/astc-encoder/xmake.lua

@@ -4,8 +4,10 @@ package("astc-encoder")
     set_license("Apache-2.0")
 
     add_urls("https://github.com/ARM-software/astc-encoder/archive/refs/tags/$(version).tar.gz",
-             "https://github.com/ARM-software/astc-encoder.git")
+             "https://github.com/ARM-software/astc-encoder.git", {submodules = false})
 
+    add_versions("5.3.0", "6bd248f460b90576f90a5499c0f6b8d785b3af3837bcab82607d9a3b5bba77e2")
+    add_versions("5.2.0", "1680d440b765c3809490b6b49664a2ba0798624629615da4ff834401c0f1fe23")
     add_versions("4.8.0", "6c12f4656be21a69cbacd9f2c817283405decb514072dc1dcf51fd9a0b659852")
     add_versions("4.7.0", "a57c81f79055aa7c9f8c82ac5464284e3df9bba682895dee09fa35bd1fdbab93")
     add_versions("4.6.1", "a73c7afadb2caba00339a8f715079d43f9b7e75cf57463477e5ac36ef7defd26")
@@ -18,17 +20,52 @@ package("astc-encoder")
     add_configs("native", {description = "Enable astcenc builds for native SIMD", default = false, type = "boolean"})
     add_configs("decompressor", {description = "Enable astcenc builds for decompression only", default = false, type = "boolean"})
     add_configs("diagnostics", {description = "Enable astcenc builds with diagnostic trace", default = false, type = "boolean"})
-    add_configs("asan", {description = "Enable astcenc builds with address sanitizer", default = false, type = "boolean"})
 
     add_configs("invariance", {description = "Enable astcenc floating point invariance", default = true, type = "boolean"})
     add_configs("cli", {description = "Enable build of astcenc command line tools", default = true, type = "boolean"})
 
+    if is_plat("linux", "bsd") then
+        add_syslinks("pthread")
+    end
+
     add_deps("cmake")
 
-    on_install("windows|x64", "windows|x86", "mingw|x86_64", "linux", function (package)
+    on_load(function (package)
+        package:config_set("cli", not package:is_cross())
+        if package:is_plat("wasm", "cross") then
+            package:config_set("none", true)
+        end
+
+        if package:config("shared") then
+            package:add("defines", "ASTCENC_DYNAMIC_LIBRARY")
+        end
+    end)
+    -- arm_neon_sve_bridge.h: No such file or directory
+    on_install("!linux or linux|!arm64", function (package)
+        io.replace("Source/CMakeLists.txt", "-flto", "", {plain = true})
+        io.replace("Source/CMakeLists.txt", "-flto=auto", "", {plain = true})
         io.replace("Source/cmake_core.cmake", "-Werror", "", {plain = true})
+        io.replace("Source/cmake_core.cmake", "if(${ASTCENC_CLI})\n        # Enable LTO on release builds", "if(0)", {plain = true})
+        io.replace("Source/cmake_core.cmake", "add_library(${ASTCENC_TARGET}-veneer1", "add_library(${ASTCENC_TARGET}-veneer1 STATIC", {plain = true})
+        io.replace("Source/cmake_core.cmake", "add_library(${ASTCENC_TARGET}-veneer2", "add_library(${ASTCENC_TARGET}-veneer2 STATIC", {plain = true})
+        if package:is_plat("mingw", "android", "bsd") or package:has_tool("cxx", "clang", "clang_cl") then
+            io.replace("Source/cmake_core.cmake", "$<${is_clangcl}:-mcpu=native -march=native>", "", {plain = true})
+            io.replace("Source/cmake_core.cmake", "$<${is_gnu_fe}:-mcpu=native -march=native>", "", {plain = true})
+        end
 
-        local configs = {}
+        local file = io.open("Source/cmake_core.cmake", "a")
+        local target_name = "${ASTCENC_TARGET}-" .. (package:config("shared") and "shared" or "static")
+        file:write(format([[
+            include(GNUInstallDirs)
+            install(TARGETS %s
+                RUNTIME DESTINATION bin
+                LIBRARY DESTINATION lib
+                ARCHIVE DESTINATION lib
+            )
+        ]], target_name))
+        file:close()
+
+        local configs = {"-DASTCENC_WERROR=OFF"}
         table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:is_debug() and "Debug" or "Release"))
         table.insert(configs, "-DASTCENC_SHAREDLIB=" .. (package:config("shared") and "ON" or "OFF"))
 
@@ -44,16 +81,25 @@ package("astc-encoder")
         table.insert(configs, "-DASTCENC_INVARIANCE=" .. (package:config("invariance") and "ON" or "OFF"))
         table.insert(configs, "-DASTCENC_CLI=" .. (package:config("cli") and "ON" or "OFF"))
 
-        import("package.tools.cmake").install(package, configs)
+        local opt = {}
+        if package:is_plat("linux", "bsd") then
+            opt.ldflags = "-lpthread"
+            opt.shflags = "-lpthread"
+        end
+        import("package.tools.cmake").install(package, configs, opt)
 
-        os.cp("Source/astcenc.h", package:installdir("include"))
         if package:config("shared") then
-            package:add("linkdirs", "bin")
+            io.replace("Source/astcenc.h",
+                [[#define ASTCENC_PUBLIC extern "C" __declspec(dllexport)]],
+                [[#define ASTCENC_PUBLIC extern "C" __declspec(dllimport)]], {plain = true})
         end
+
+        os.cp("Source/astcenc.h", package:installdir("include"))
         if package:config("cli") then
-            local exe_prefix = package:is_plat("mingw", "windows") and ".exe" or ""
-            os.mv(path.join(package:installdir("bin"), "astcenc-native" .. exe_prefix), path.join(package:installdir("bin"), "astcenc" .. exe_prefix))
             package:addenv("PATH", "bin")
+            local exe_prefix = package:is_plat("mingw", "windows") and ".exe" or ""
+            -- TODO: rename astcenc-neno?
+            os.trymv(path.join(package:installdir("bin"), "astcenc-native" .. exe_prefix), path.join(package:installdir("bin"), "astcenc" .. exe_prefix))
         end
     end)
 

+ 9 - 2
packages/a/async_simple/xmake.lua

@@ -16,7 +16,15 @@ package("async_simple")
 
     add_deps("cmake")
 
-    on_install("windows", "linux", "macosx", function (package)
+    on_load("!linux and !macosx", function (package)
+        package:set("kind", "library", {headeronly = true})
+    end)
+
+    on_install(function (package)
+        if package:is_plat("linux") and package:is_arch("arm.*") then
+            io.replace("CMakeLists.txt", [[list(APPEND CXX_FLAGS "-m]], [[#list(APPEND CXX_FLAGS "-m]], {plain = true})
+        end
+
         if package:version():le("1.3") then
             io.replace("async_simple/CMakeLists.txt",
             [[file(GLOB coro_header "coro/*.h")]],
@@ -40,7 +48,6 @@ package("async_simple")
 
     on_test(function (package)
         assert(package:check_cxxsnippets({test = [[
-            #include <async_simple/coro/Lazy.h>
             async_simple::coro::Lazy<void> func() {
                 co_return;
             }

+ 28 - 0
packages/a/at-spi2-core/xmake.lua

@@ -0,0 +1,28 @@
+package("at-spi2-core")
+
+    set_homepage("https://gitlab.gnome.org/GNOME/at-spi2-core")
+    set_description("contains the DBus interface definitions for AT-SPI - the core of an accessibility stack for free software systems.")
+    set_license("LGPL-2.1")
+
+    add_urls("https://gitlab.gnome.org/GNOME/at-spi2-core/-/archive/AT_SPI2_CORE_$(version)/at-spi2-core-AT_SPI2_CORE_$(version).tar.gz", {version = function (version)
+        return version:gsub("%.", "_")
+    end})
+    add_versions("2.53.90", "6b0a7c15b5fceb69f501e8b6b8bebe9896c35b9edb1ee08fe0b202d488a71363")
+
+    add_includedirs("include", "include/at-spi-2.0", "include/atk-1.0", "include/at-spi2-atk/2.0")
+
+    add_links("atk-bridge-2.0", "atspi", "atk-1.0")
+
+    add_deps("meson", "ninja", "glib", "pkg-config", "dbus", "libx11", "libxtst", "libxi", "libxml2")
+    on_install("linux", function (package)
+        local configs = {}
+        table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
+        import("package.tools.meson").install(package, configs, {packagedeps = {"glib", "libiconv", "libx11", "libxtst", "libxi", "dbus"}})
+        local atspi_pkgconfig_dir = package:installdir("lib/pkgconfig/atspi-2.pc")
+        io.replace(atspi_pkgconfig_dir, [[-DG_LOG_DOMAIN="dbind"]], [[-DG_LOG_DOMAIN=\"dbind\"]])
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("atk_bridge_adaptor_init", {includes = "atk-bridge.h"}))
+        assert(package:has_cfuncs("atk_object_initialize", {includes = "atk/atk.h"}))
+    end)

+ 16 - 9
packages/a/atk/xmake.lua

@@ -1,13 +1,14 @@
 package("atk")
-
     set_homepage("https://gitlab.gnome.org/GNOME/atk")
     set_description("ATK - The Accessibility Toolkit")
     set_license("LGPL-2.0")
 
-    add_urls("https://download.gnome.org/sources/atk/$(version).tar.xz", {version = function (version)
-        return format("%d.%d/atk-%s", version:major(), version:minor(), version)
-    end})
-    add_versions("2.36.0", "fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788")
+    add_urls("https://gitlab.gnome.org/Archive/atk/-/archive/$(version)/atk-$(version).tar.bz2",
+             "https://gitlab.gnome.org/Archive/atk.git")
+
+    add_versions("2.38.0", "469313d28bd22bcbf7b7ea300dddb9b6c13854455d297f4d51a944e378b0a9d7")
+
+    add_configs("introspection", {description = "Whether to build introspection files", default = false, type = "boolean"})
 
     if is_plat("mingw") and is_subhost("msys") then
         add_extsources("pacman::atk")
@@ -17,12 +18,18 @@ package("atk")
         add_extsources("brew::atk")
     end
 
-    add_deps("meson", "ninja", "glib", "pkg-config")
     add_includedirs("include/atk-1.0")
-    on_install("linux", function (package)
-        local configs = {"-Dintrospection=false"}
+
+    add_deps("meson", "ninja", "glib")
+    if is_plat("windows") then
+        add_deps("pkgconf")
+    end
+
+    on_install("windows", "macosx", "linux", "cross", function (package)
+        local configs = {}
         table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
-        import("package.tools.meson").install(package, configs)
+        table.insert(configs, "-Dintrospection=" .. (package:config("introspection") and "true" or "false"))
+        import("package.tools.meson").install(package, configs, {packagedeps = {"libintl", "libiconv"}})
     end)
 
     on_test(function (package)

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

@@ -6,6 +6,9 @@ package("atomic_queue")
 
     add_urls("https://github.com/max0x7ba/atomic_queue/archive/refs/tags/$(version).tar.gz",
              "https://github.com/max0x7ba/atomic_queue.git")
+    add_versions("v1.6.9", "6d2fc922c3e0325c9ab000832d59a860ae3b6f7f319b645148455c4bef7b52a9")
+    add_versions("v1.6.5", "0257efe6781637091ff7f11d836cff4a8e0b5ea22c943fa70e00e83d83360583")
+    add_versions("v1.6.4", "e9c3ae4b850dc6503ee484748701f06f3737ad177c5cb31030f74e3fef40e282")
     add_versions("v1.5", "599b76a0222e7b54118d6f0fb686845c9d323107f2de76b3f68292b057e5a99f")
     add_versions("v1.6.3", "0ad6e0203d90367f6a4e496449dfd9ad65b80168fadafef4eac08820c6bda79c")
 

+ 2 - 0
packages/a/audiofile/xmake.lua

@@ -7,6 +7,8 @@ package("audiofile")
     add_urls("https://github.com/adamstark/AudioFile/archive/refs/tags/$(version).tar.gz",
              "https://github.com/adamstark/AudioFile.git")
 
+    add_versions("1.1.3", "abc22bbe798cb552048485ce19278f35f587340bf0d5c68ac0028505eaf70dfe")
+    add_versions("1.1.2", "d090282207421e27be57c3df1199a9893e0321ea7c971585361a3fc862bb8c16")
     add_versions("1.1.1", "664f9d5fbbf1ff6c603ae054a35224f12e9856a1d8680be567909015ccaac328")
     add_versions("1.1.0", "7546e39ca17ac09c653f46bfecce4a9936fae3784209ad53094915c78792a327")
     add_versions("1.0.9", "1d609b80496fc5c688d8e83086cdcad5b60ddb20f02d160f80be271fab97c4c0")

+ 27 - 0
packages/a/aurora-au/xmake.lua

@@ -0,0 +1,27 @@
+package("aurora-au")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://aurora-opensource.github.io/au")
+    set_description("A C++14-compatible physical units library with no dependencies and a single-file delivery option. Emphasis on safety, accessibility, performance, and developer experience.")
+    set_license("Apache-2.0")
+
+    set_urls("https://github.com/aurora-opensource/au/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/aurora-opensource/au.git")
+
+    add_versions("0.4.1", "5e88a0ffcb0a0843f4bd4d4ea4429c793f85dfcb8c1e7f7978de6fecab739b84")
+
+    add_deps("cmake")
+
+    on_install(function (package)
+        local configs = {"-DAU_ENABLE_TESTING=OFF", "-DAU_EXCLUDE_GTEST_DEPENDENCY=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"))
+        import("package.tools.cmake").install(package, configs)
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                constexpr auto length = au::meters(100.0);
+            }
+        ]]}, {configs = {languages = "c++14"}, includes = "au/units/meters.hh"}))
+    end)

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

@@ -11,6 +11,7 @@ package("autoconf")
     add_versions("2.68", "eff70a2916f2e2b3ed7fe8a2d7e63d72cf3a23684b56456b319c3ebce0705d99")
     add_versions("2.69", "954bd69b391edc12d6a4a51a2dd1476543da5c6bbf05a95b59dc0dd6fd4c2969")
     add_versions("2.71", "431075ad0bf529ef13cb41e9042c542381103e80015686222b8a9d4abef42a1c")
+    add_versions("2.72", "afb181a76e1ee72832f6581c0eddf8df032b83e2e0239ef79ebedc4467d92d6e")
 
     if is_host("linux") then
         add_extsources("apt::autoconf")

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

@@ -7,6 +7,7 @@ package("automake")
     add_urls("https://ftpmirror.gnu.org/gnu/automake/automake-$(version).tar.gz",
              "https://ftp.gnu.org/gnu/automake/automake-$(version).tar.gz",
              "https://mirrors.ustc.edu.cn/gnu/automake/automake-$(version).tar.gz")
+    add_versions("1.17", "397767d4db3018dd4440825b60c64258b636eaf6bf99ac8b0897f06c89310acd")
     add_versions("1.16.5", "07bd24ad08a64bc17250ce09ec56e921d6343903943e99ccf63bbf0705e34605")
     add_versions("1.16.4", "8a0f0be7aaae2efa3a68482af28e5872d8830b9813a6a932a2571eac63ca1794")
     add_versions("1.16.1", "608a97523f97db32f1f5d5615c98ca69326ced2054c9f82e65bade7fc4c9dea8")

+ 11 - 0
packages/a/autotools/xmake.lua

@@ -0,0 +1,11 @@
+package("autotools")
+    set_kind("binary")
+
+    if is_subhost("msys") then
+        add_deps("pacman::autotools")
+    else
+        add_deps("autoconf", "automake", "libtool")
+    end
+
+    on_install("@linux", "@macosx", "@bsd", "@msys", function (package)
+    end)

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

@@ -8,6 +8,7 @@ package("avir")
     add_urls("https://github.com/avaneev/avir/archive/refs/tags/$(version).tar.gz",
              "https://github.com/avaneev/avir.git")
 
+    add_versions("3.1", "8235740e578f86d08d03d3f7ae2a6893554c1ae17a061117475219fe3538a7d2")
     add_versions("3.0", "011909d31cf782152a69f570563eb70700504f168174a6049b6acbb9b9f511ea")
 
     on_install(function (package)

+ 19 - 7
packages/a/aws-c-auth/xmake.lua

@@ -6,23 +6,35 @@ package("aws-c-auth")
     add_urls("https://github.com/awslabs/aws-c-auth/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-auth.git")
 
+    add_versions("v0.9.0", "aa6e98864fefb95c249c100da4ae7aed36ba13a8a91415791ec6fad20bec0427")
+    add_versions("v0.8.7", "b961cbed0b82248d3ea7a47f5a49bf174d5a0a977bbdd7ef3e1b2d2eb5468af5")
+    add_versions("v0.8.6", "5f5df716d02a2b973ec685f1b50749b2e82736599189926817fbca00cfb194d7")
+    add_versions("v0.8.0", "217a0ebf8d7c5ad7e5f5ae814c2a371042164b64b4b9330c1c4bb2c6db1dbd33")
+    add_versions("v0.7.31", "7f97aacef6bd1649734383c2bf022250671f353b7fa60d195e6865d7f4594b43")
+    add_versions("v0.7.29", "f49f5dce1153e908dd9c0639f4aa4b1477f8564a28635f433cc0be121a18106e")
+    add_versions("v0.7.25", "8f7993f8fad2992ca19c00123ea16e72c4d13acbeeb6333061034a299274f081")
     add_versions("v0.7.22", "f249a12a6ac319e929c005fb7efd5534c83d3af3a3a53722626ff60a494054bb")
     add_versions("v0.7.18", "c705199655066f1f874bc3758683f32e288024196a22f28360d336231e45406f")
     add_versions("v0.7.17", "8fe380255a71a2d5c9acd4979c135f9842135ce6385010ea562bc0b532bf5b84")
     add_versions("v0.7.3", "22e334508b76f1beddefbf877f200c8a5ace4e3956c6be6545b7572762afe8c5")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
     add_configs("assert_lock_help", {description = "Enable ASSERT_SYNCED_DATA_LOCK_HELD for checking thread issue", default = false, type = "boolean"})
 
-    add_deps("cmake", "aws-c-common", "aws-c-cal", "aws-c-io", "aws-c-sdkutils", "aws-c-http")
+    add_deps("cmake")
+    add_deps("aws-c-io", "aws-c-sdkutils", "aws-c-http")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "cross", function (package)
-        local cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        if package:is_plat("windows") then
-            cmakedir = cmakedir:gsub("\\", "/")
+    on_install("!wasm and (!mingw or mingw|!i386)", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "USE_WINDOWS_DLL_SEMANTICS", "AWS_AUTH_USE_IMPORT_EXPORT")
         end
 
-        local configs = {"-DBUILD_TESTING=OFF", "-DCMAKE_MODULE_PATH=" .. cmakedir}
+        local cmakedir = path.unix(package:dep("aws-c-common"):installdir("lib", "cmake"))
+
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
+        }
         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_SANITIZERS=" .. (package:config("asan") and "ON" or "OFF"))

+ 36 - 8
packages/a/aws-c-cal/xmake.lua

@@ -6,6 +6,15 @@ 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.9.2", "f9f3bc6a069e2efe25fcdf73e4d2b16b5608c327d2eb57c8f7a8524e9e1fcad0")
+    add_versions("v0.9.0", "516ff370a45bfc49fd6d34a9bd2b1b3e753221046a9e2fbd117341d6f9d39edc")
+    add_versions("v0.8.7", "5882096093f6f39d9442f9b8a4e377155a6846277d4277334a58cd36b736674f")
+    add_versions("v0.8.3", "413a5226a881eb2d7c7b453707c90b6ad1c0f63edfc15e87087f56d7d10c2a1b")
+    add_versions("v0.8.1", "4d603641758ef350c3e5401184804e8a6bba4aa5294593cc6228b0dca77b22f5")
+    add_versions("v0.8.0", "3803311ee7c73446a35466199084652ec5f76dedcf20452ebdbba8ed34d4230d")
+    add_versions("v0.7.4", "8020ecbe850ceb402aa9c81a1ef34e3becdbcb49587a1b19eb5c7e040f369b58")
+    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")
@@ -13,26 +22,40 @@ package("aws-c-cal")
     add_versions("v0.6.2", "777feb1e88b261415e1ad607f7e420a743c3b432e21a66a5aaf9249149dc6fef")
 
     add_configs("openssl", {description = "Set this if you want to use your system's OpenSSL 1.0.2/1.1.1 compatible libcrypto", default = false, type = "boolean"})
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
+    if is_plat("wasm") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
+
+    if is_plat("windows","mingw") then
+        add_syslinks("bcrypt", "ncrypt")
+    elseif is_plat("linux", "bsd") then
+        add_syslinks("pthread")
+    elseif is_plat("macosx", "iphoneos") then
+        add_frameworks("Security", "CoreFoundation")
+    end
 
     add_deps("cmake", "aws-c-common")
 
     on_load(function (package)
-        if not package:is_plat("windows", "mingw", "msys", "macosx") then
+        if package:is_plat("linux", "bsd", "cross", "android") then
             package:config_set("openssl", true)
         end
         if package:config("openssl") then
             package:add("deps", "openssl")
         end
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "AWS_C_RT_USE_WINDOWS_DLL_SEMANTICS", "AWS_CAL_USE_IMPORT_EXPORT")
+        end
     end)
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "cross", function (package)
-        local cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        if package:is_plat("windows") then
-            cmakedir = cmakedir:gsub("\\", "/")
-        end
+    on_install("!wasm and (!mingw or mingw|!i386)", function (package)
+        local cmakedir = path.unix(package:dep("aws-c-common"):installdir("lib", "cmake"))
 
-        local configs = {"-DBUILD_TESTING=OFF", "-DCMAKE_MODULE_PATH=" .. cmakedir}
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
+        }
         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_SANITIZERS=" .. (package:config("asan") and "ON" or "OFF"))
@@ -41,6 +64,11 @@ package("aws-c-cal")
         end
         table.insert(configs, "-DUSE_OPENSSL=" .. (package:config("openssl") and "ON" or "OFF"))
         import("package.tools.cmake").install(package, configs)
+
+        if package:is_plat("windows") and package:is_debug() then
+            local dir = package:installdir(package:config("shared") and "bin" or "lib")
+            os.vcp(path.join(package:buildir(), "*.pdb"), dir)
+        end
     end)
 
     on_test(function (package)

+ 20 - 3
packages/a/aws-c-common/xmake.lua

@@ -6,6 +6,20 @@ 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.12.4", "0b7705a4d115663c3f485d353a75ed86e37583157585e5825d851af634b57fe3")
+    add_versions("v0.12.3", "a4e7ac6c6f840cb6ab56b8ee0bcd94a61c59d68ca42570bca518432da4c94273")
+    add_versions("v0.12.2", "ecea168ea974f2da73b5a0adc19d9c5ebca73ca4b9f733de7c37fc453ee7d1c2")
+    add_versions("v0.12.0", "765ca1be2be9b62a63646cb1f967f2aa781071f7780fdb5bbc7e9acfea0a1f35")
+    add_versions("v0.11.3", "efcd2fb20f3149752fed87fa7901e933f3b1a64dfa4ac989f869ded87891bb3c")
+    add_versions("v0.11.1", "b442cc59f507fbe232c0ae433c836deff83330270a58fa13bf360562efda368a")
+    add_versions("v0.10.6", "d0acbabc786035d41791c3a2f45dbeda31d9693521ee746dc1375d6380eb912b")
+    add_versions("v0.10.3", "15cc7282cfe4837fdaf1c3bb44105247da712ae97706a8717866f8e73e1d4fd9")
+    add_versions("v0.10.0", "1fc7dea83f1d5a4b6fa86e3c8458200ed6e7f69c65707aa7b246900701874ad1")
+    add_versions("v0.9.28", "bf265e9e409d563b0eddcb66e1cb00ff6b371170db3e119348478d911d054317")
+    add_versions("v0.9.27", "0c0eecbd7aa04f85b1bdddf6342789bc8052737c6e9aa2ca35e26caed41d06ba")
+    add_versions("v0.9.25", "443f3268387715e6e2c417a87114a6b42873aeeebc793d3f6f631323e7c48a80")
+    add_versions("v0.9.24", "715a15399fe6dce2971c222ecabea4276e42ba3465a63c175724fc0c80d7a888")
+    add_versions("v0.9.23", "adf838daf6a60aa31268522105b03262d745f529bc981d3ac665424133d6f91b")
     add_versions("v0.9.19", "196430fda1bca2c77df7d9199232956d371a92f49ee48fd6c29ff969410ca0ed")
     add_versions("v0.9.17", "82f1a88494c5563892f0e048f0f56acfe7e10e5aa3fe9267b956dbabcc043440")
     add_versions("v0.9.15", "8f36c7a6a5d2e17365759d15591f800d3e76dcaa34a226389b92647cbd92393a")
@@ -13,7 +27,6 @@ package("aws-c-common")
     add_versions("v0.9.13", "6d2044fc58e5d7611610976602f3fc2173676726b00eed026526962c599ece1d")
     add_versions("v0.9.3", "389eaac7f64d7d5a91ca3decad6810429eb5a65bbba54798b9beffcb4d1d1ed6")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
     if is_plat("wasm") then
         add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
     end
@@ -28,8 +41,12 @@ package("aws-c-common")
 
     add_deps("cmake")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "android", "iphoneos", "cross", "wasm", function (package)
-        local configs = {"-DBUILD_TESTING=OFF"}
+    on_install("!mingw or mingw|!i386", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "AWS_COMMON_USE_IMPORT_EXPORT")
+        end
+
+        local configs = {"-DBUILD_TESTING=OFF", "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW"}
         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_SANITIZERS=" .. (package:config("asan") and "ON" or "OFF"))

+ 15 - 11
packages/a/aws-c-compression/xmake.lua

@@ -6,29 +6,33 @@ package("aws-c-compression")
     add_urls("https://github.com/awslabs/aws-c-compression/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-compression.git")
 
+    add_versions("v0.3.1", "d89fca17a37de762dc34f332d2da402343078da8dbd2224c46a11a88adddf754")
+    add_versions("v0.3.0", "7e5d7308d1dbb1801eae9356ef65558f707edf33660dd6443c985db9474725eb")
+    add_versions("v0.2.19", "51796f98a29a0d6e257c02e1f842bbc41db324758939093e6d46ec28337a3272")
     add_versions("v0.2.18", "517c361f3b7fffca08efd5ad251a20489794f056eab0dfffacc6d5b341df8e86")
     add_versions("v0.2.17", "703d1671e395ea26f8b0b70d678ed471421685a89e127f8aa125e2b2ecedb0e0")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
     if is_plat("wasm") then
         add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
     end
 
-    add_deps("cmake", "aws-c-common")
+    add_deps("cmake")
+    add_deps("aws-c-common")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "android", "iphoneos", "cross", "wasm", function (package)
-        local aws_cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        local aws_c_common_configdir = package:dep("aws-c-common"):installdir("lib", "aws-c-common", "cmake")
+    on_install("!mingw or mingw|!i386", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "USE_WINDOWS_DLL_SEMANTICS", "AWS_COMPRESSION_USE_IMPORT_EXPORT")
+        end
+
+        local cmakedir = package:dep("aws-c-common"):installdir("lib/cmake")
         if is_host("windows") then
-            aws_cmakedir = aws_cmakedir:gsub("\\", "/")
-            aws_c_common_configdir = aws_c_common_configdir:gsub("\\", "/")
+            cmakedir = cmakedir:gsub("\\", "/")
         end
 
-        local configs =
-        {
+        local configs = {
             "-DBUILD_TESTING=OFF",
-            "-DCMAKE_MODULE_PATH=" .. aws_cmakedir,
-            "-Daws-c-common_DIR=" .. aws_c_common_configdir
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
         }
         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"))

+ 5 - 0
packages/a/aws-c-event-stream/xmake.lua

@@ -6,6 +6,11 @@ package("aws-c-event-stream")
     add_urls("https://github.com/awslabs/aws-c-event-stream/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-event-stream.git")
 
+    add_versions("v0.5.5", "f6e55c8fd6afd7f904e08d36c3210e199ece5dc838f0f8457b43b72ec4d818e9")
+    add_versions("v0.5.4", "cef8b78e362836d15514110fb43a0a0c7a86b0a210d5fe25fd248a82027a7272")
+    add_versions("v0.5.1", "22ce7a695b82debe118c9ecc641ea8bc7e59c9843f92d5acf8401fc86cac847a")
+    add_versions("v0.5.0", "3a53a9d05f9e2fd06036a12854a8b4f05a0c4858bb5b8df8a30edba9de8532b5")
+    add_versions("v0.4.3", "d7d82c38bae68d2287ac59972a76b2b6159e7a3d7c9b7edb1357495aa4d0c0de")
     add_versions("v0.4.2", "c98b8fa05c2ca10aacfce7327b92a84669c2da95ccb8e7d7b3e3285fcec8beee")
     add_versions("v0.4.1", "f8915fba57c86148f8df4c303ca6f31de6c23375de554ba8d6f9aef2a980e93e")
     add_versions("v0.3.2", "3134b35a45e9f9d974c2b78ee44fd2ea0aebc04df80236b80692aa63bee2092e")

+ 22 - 6
packages/a/aws-c-http/xmake.lua

@@ -6,21 +6,37 @@ 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.10.1", "1550f7bf9666bb8f86514db9e623f07249e3c53e868d2f36ff69b83bd3eadfec")
+    add_versions("v0.10.0", "f7881e2f9af1a2e114b4147be80d70480f06af2b9cd195e8448afb750c74b1ae")
+    add_versions("v0.9.5", "cbdb8411b439677f302d3a3b4691e2dc1852e69f406d3c2fced2be95ae2397f9")
+    add_versions("v0.9.4", "2282067c4eb0bd07f632facb52c98bb6380f74410bc8640256e9490b66a2d582")
+    add_versions("v0.9.3", "63061321fd3234a4f8688cff1a6681089321519436a5f181e1bcb359204df7c8")
+    add_versions("v0.9.2", "328013ebc2b5725326cac01941041eec1e1010058c60709da2c23aa8fb967370")
+    add_versions("v0.9.0", "ffba3a208e605ed247a130e2986f9d524283faf85f26da3452aac878ecefdfa2")
+    add_versions("v0.8.10", "f878802a4e0bcefadce9959ce443acaf77607a68d138f9d3db04a5a878f1a871")
+    add_versions("v0.8.7", "173ed7634c87485c2defbd9a96a246a79ec3f3659b28b235ac38e6e92d67392a")
     add_versions("v0.8.2", "a76ba75e59e1ac169df3ec00c0d1c453db1a4db85ee8acd3282a85ee63d6b31c")
     add_versions("v0.8.1", "83fb47e2d7956469bb328f16dea96663e96f8f20dc60dc4e9676b82804588530")
     add_versions("v0.7.12", "0f92f295c96e10aa9c1e66ac73c038ee9d9c61e1be7551e721ee0dab9c89fc6f")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
+    add_deps("cmake")
+    add_deps("aws-c-io", "aws-c-compression")
 
-    add_deps("cmake", "aws-c-cal", "aws-c-io", "aws-c-compression")
+    on_install("!wasm and (!mingw or mingw|!i386)", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "USE_WINDOWS_DLL_SEMANTICS", "AWS_HTTP_USE_IMPORT_EXPORT")
+        end
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "cross", function (package)
-        local cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        if package:is_plat("windows") then
+        local cmakedir = package:dep("aws-c-common"):installdir("lib/cmake")
+        if is_host("windows") then
             cmakedir = cmakedir:gsub("\\", "/")
         end
 
-        local configs = {"-DBUILD_TESTING=OFF", "-DCMAKE_MODULE_PATH=" .. cmakedir}
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
+        }
         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_SANITIZERS=" .. (package:config("asan") and "ON" or "OFF"))

+ 38 - 10
packages/a/aws-c-io/xmake.lua

@@ -6,31 +6,54 @@ 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.21.1", "1d4c6ac5d65acdad8c07f7b0bdd417fd52ab99d29d6d79788618eba317679cf1")
+    add_versions("v0.21.0", "31232dd35995c9d5d535f3cf5ce7d561d680285a0e2a16318d4f0d4512b907c4")
+    add_versions("v0.20.1", "8e2abf56e20f87383c44af6818235a12f54051b40c98870f44b2d5d05be08641")
+    add_versions("v0.19.1", "f2fea0c066924f7fe3c2b1c7b2fa9be640f5b16a6514854226330e63a1faacd0")
+    add_versions("v0.18.1", "65d275bbde1a1d287cdcde62164dc015b9613a5525fe688e972111d8a3b568fb")
+    add_versions("v0.18.0", "c65a9f059dfe3208dbc92b7fc11f6d846d15e1a14cd0dabf98041ce9627cadda")
+    add_versions("v0.17.0", "edf8dbd19704685f7400c6fc3fcb875ab858b1e55382c7ec933efddff28b2332")
+    add_versions("v0.15.3", "d8cb4d7d3ec4fb27cbce158d6823a1f2f5d868e116f1d6703db2ab8159343c3f")
+    add_versions("v0.15.1", "70f119b44f2758fc482872141cb712122f1c3c82fea16d203b7286a98c139a71")
+    add_versions("v0.15.0", "a8fbc39721395c12fd66bf2ce39b4cac24df395b35700b9ae718a7923d229df4")
+    add_versions("v0.14.19", "127aa30608084affbcc0b7b26982ab4d98404d1aa103b91693d0e76b564da21d")
+    add_versions("v0.14.18", "44e9dee181ed7d867d1cc2944f4b4669259b569fc56bdd6dd4c7c30440fc4bf8")
+    add_versions("v0.14.16", "bf78ab5dbeeaec2f55cb035e18c49ce8ba4e2ea7519e8b94e18ccd8851e39f4d")
+    add_versions("v0.14.14", "c62400e83232e6d7c04bacebf02d552f6699d90735d9b8b6ee5fae879735c458")
+    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")
     add_versions("v0.14.5", "2700bcde062f7de1c1cbfd236b9fdfc9b24b4aa6dc0fb09bb156e16e07ebd0b6")
     add_versions("v0.13.32", "2a6b18c544d014ca4f55cb96002dbbc1e52a2120541c809fa974cb0838ea72cc")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
+    if is_plat("wasm") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
 
-    if is_plat("windows") then
+    if is_plat("windows","mingw") then
         add_syslinks("advapi32", "crypt32", "secur32", "ncrypt")
-    elseif is_plat("linux", "bsd", "cross") then
+    elseif is_plat("linux", "bsd", "cross", "android") then
         add_deps("s2n-tls")
-    elseif is_plat("macosx") then
-        add_frameworks("Security")
+    elseif is_plat("macosx", "iphoneos") then
+        add_frameworks("Security", "Network")
     end
 
     add_deps("cmake", "aws-c-common", "aws-c-cal")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "cross", function (package)
-        local cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        if package:is_plat("windows") then
-            cmakedir = cmakedir:gsub("\\", "/")
+    on_install("!wasm and (!mingw or mingw|!i386)", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "USE_WINDOWS_DLL_SEMANTICS", "AWS_IO_USE_IMPORT_EXPORT")
         end
 
-        local configs = {"-DBUILD_TESTING=OFF", "-DCMAKE_MODULE_PATH=" .. cmakedir}
+        local cmakedir = path.unix(package:dep("aws-c-common"):installdir("lib", "cmake"))
+
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
+        }
         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_SANITIZERS=" .. (package:config("asan") and "ON" or "OFF"))
@@ -38,6 +61,11 @@ package("aws-c-io")
             table.insert(configs, "-DAWS_STATIC_MSVC_RUNTIME_LIBRARY=" .. (package:config("vs_runtime"):startswith("MT") and "ON" or "OFF"))
         end
         import("package.tools.cmake").install(package, configs)
+
+        if package:is_plat("windows") and package:is_debug() then
+            local dir = package:installdir(package:config("shared") and "bin" or "lib")
+            os.vcp(path.join(package:buildir(), "*.pdb"), dir)
+        end
     end)
 
     on_test(function (package)

+ 6 - 0
packages/a/aws-c-mqtt/xmake.lua

@@ -6,6 +6,12 @@ package("aws-c-mqtt")
     add_urls("https://github.com/awslabs/aws-c-mqtt/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-mqtt.git")
 
+    add_versions("v0.13.2", "8d22b181e4c90f5c683e786aadb9fb59a30a699c332e96e16595216ef9058c2f")
+    add_versions("v0.12.3", "c2ea5d3b34692c5b71ec4ff3efd8277af01f16706970e8851373c361abaf1d72")
+    add_versions("v0.12.1", "04abe47c798bf9dcb95e25ea9acd62a35a3f22e58b61c16912a6275c2f8230fe")
+    add_versions("v0.11.0", "3854664c13896b6de3d56412f928435a4933259cb7fe62b10c1f497e6999333c")
+    add_versions("v0.10.7", "197bb549f7b121d05d59bb58dd641b56fdf80337d027f0a69146196bd8f92604")
+    add_versions("v0.10.6", "7579fafc74a8751c15c0196eda6ec93d00a17e7f79fb994f34a8f62ceb66cc62")
     add_versions("v0.10.4", "6a41456f9eee15d71e4e2ee162b354865809f26620f1e6e5acb237f190f77f3f")
     add_versions("v0.10.3", "bb938d794b0757d669b5877526363dc6f6f0e43869ca19fc196ffd0f7a35f5b9")
     add_versions("v0.9.5", "987289535d3c988fe949f49d81268736c96fe27b27c98c899f0a148577f6627b")

+ 26 - 6
packages/a/aws-c-s3/xmake.lua

@@ -6,22 +6,42 @@ 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.8.3", "c1c233317927091ee966bb297db2e6adbb596d6e5f981dbc724b0831b7e8f07d")
+    add_versions("v0.8.1", "c8b09780691d2b94e50d101c68f01fa2d1c3debb0ff3aed313d93f0d3c9af663")
+    add_versions("v0.7.15", "458b32811069e34186cfcef6c2d63a02b34657e70e880e1c0706976ce4b58389")
+    add_versions("v0.7.14", "1a8cd98612f5d08ac12f1c0ab7235e1750faf8fb0e7680662101626b81963a66")
+    add_versions("v0.7.12", "096ac66bc830c8a29cb12652db095e03a2ed5b15645baa4d7c78de419a0d6a54")
+    add_versions("v0.7.7", "843571de8cd504428bd4ef9ff574e3c91b51ae010813111757e1cfca951cf35e")
+    add_versions("v0.7.5", "d2f68e8a8e9a9e9b16aecd4ae72d78860e3d71d6fe9ccd8f2d50a7ee5faf5619")
+    add_versions("v0.7.4", "0e315694c524aece68da9327ab1c57f5d5dd9aed843fea3950429bb7cec70f35")
+    add_versions("v0.7.1", "0723610c85262b2ac19be0bd98622857f09edc3317be707f6cfe9a9849796ef4")
+    add_versions("v0.7.0", "d7a7dc82988221a1e7038a3ba1b4454c91dd66e41c08f2a83455d265d8683818")
+    add_versions("v0.6.5", "b671006ae2b5c1302e49ca022e0f9e6504cfe171d9e47c3e59c52b2ab8e80ef5")
+    add_versions("v0.6.0", "0a29dbb13ea003de3fd0d08a61fa705b1c753db4b35de9c464641432000f13ec")
     add_versions("v0.5.9", "7a337195b295406658d163b6dac64ff81f7556291b8a8e79e58ebaa2d55178ee")
     add_versions("v0.5.7", "2f2eab9bf90a319030fd3525953dc7ac00c8dc8c0d33e3f0338f2a3b554d3b6a")
     add_versions("v0.3.17", "72fd93a2f9a7d9f205d66890da249944b86f9528216dc0321be153bf19b2ecd5")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
     add_configs("assert_lock_help", {description = "Enable ASSERT_SYNCED_DATA_LOCK_HELD for checking thread issue", default = false, type = "boolean"})
 
-    add_deps("cmake", "aws-c-common", "aws-checksums", "aws-c-io", "aws-c-http", "aws-c-auth")
+    add_deps("cmake")
+    add_deps("aws-checksums", "aws-c-io", "aws-c-http", "aws-c-auth")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "cross", function (package)
-        local cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        if package:is_plat("windows") then
+    on_install("!wasm and (!mingw or mingw|!i386)", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "WIN32", "AWS_S3_USE_IMPORT_EXPORT")
+        end
+
+        local cmakedir = package:dep("aws-c-common"):installdir("lib/cmake")
+        if is_host("windows") then
             cmakedir = cmakedir:gsub("\\", "/")
         end
 
-        local configs = {"-DBUILD_TESTING=OFF", "-DCMAKE_MODULE_PATH=" .. cmakedir}
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
+        }
         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_SANITIZERS=" .. (package:config("asan") and "ON" or "OFF"))

+ 16 - 12
packages/a/aws-c-sdkutils/xmake.lua

@@ -6,30 +6,34 @@ package("aws-c-sdkutils")
     add_urls("https://github.com/awslabs/aws-c-sdkutils/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-c-sdkutils.git")
 
+    add_versions("v0.2.4", "493cbed4fa57e0d4622fcff044e11305eb4fc12445f32c8861025597939175fc")
+    add_versions("v0.2.3", "5a0489d508341b84eea556e351717bc33524d3dfd6207ee3aba6068994ea6018")
+    add_versions("v0.2.2", "75defbfd4d896b8bdc0790bd25d854218acae61b9409d1956d33832924b82045")
+    add_versions("v0.2.1", "17bdec593f3ae8a837622ef81055db81cc2dd14b86d33b21df878a7ab918d0e4")
+    add_versions("v0.2.0", "5c73caa1c0ebde71b357d05a8f0ff6c1be09b32e0935b16d7385c9342f3e59c2")
+    add_versions("v0.1.19", "66bd7a8679703386aec1539407aaed0942a78032fe340ab44e810a3cf6d7e505")
     add_versions("v0.1.16", "4a818563d7c6636b5b245f5d22d4d7c804fa33fc4ea6976e9c296d272f4966d3")
     add_versions("v0.1.15", "15fa30b8b0a357128388f2f40ab0ba3df63742fd333cc2f89cb91a9169f03bdc")
     add_versions("v0.1.12", "c876c3ce2918f1181c24829f599c8f06e29733f0bd6556d4c4fb523390561316")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
     if is_plat("wasm") then
         add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
     end
 
-    add_deps("cmake", "aws-c-common")
+    add_deps("cmake")
+    add_deps("aws-c-common")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "android", "iphoneos", "cross", "wasm", function (package)
-        local aws_cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        local aws_c_common_configdir = package:dep("aws-c-common"):installdir("lib", "aws-c-common", "cmake")
-        if is_host("windows") then
-            aws_cmakedir = aws_cmakedir:gsub("\\", "/")
-            aws_c_common_configdir = aws_c_common_configdir:gsub("\\", "/")
+    on_install("!mingw or mingw|!i386", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "USE_WINDOWS_DLL_SEMANTICS", "AWS_SDKUTILS_USE_IMPORT_EXPORT")
         end
 
-        local configs =
-        {
+        local cmakedir = path.unix(package:dep("aws-c-common"):installdir("lib", "cmake"))
+
+        local configs = {
             "-DBUILD_TESTING=OFF",
-            "-DCMAKE_MODULE_PATH=" .. aws_cmakedir,
-            "-Daws-c-common_DIR=" .. aws_c_common_configdir
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
         }
         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"))

+ 38 - 6
packages/a/aws-checksums/xmake.lua

@@ -6,20 +6,52 @@ package("aws-checksums")
     add_urls("https://github.com/awslabs/aws-checksums/archive/refs/tags/$(version).tar.gz",
              "https://github.com/awslabs/aws-checksums.git")
 
+    add_versions("v0.2.7", "178e8398d98111f29150f7813a70c20ad97ab30be0de02525440355fe84ccb1d")
+    add_versions("v0.2.3", "c688f311db8a1b70bb6d22f6e8f2817b39e1419546e339cf753d61340969eeb4")
+    add_versions("v0.2.2", "96acfea882c06acd5571c845e4968892d6ffc0fae81b31a0b1565100049743b2")
+    add_versions("v0.2.0", "aae619de7fb5908a52223eae3b80fae70260eed5919ad4c385b2d5a144a641f0")
+    add_versions("v0.1.20", "12f80085993662b6d2cbd2d090b49b4350d19396b1d218d52323712cc8dee252")
+    add_versions("v0.1.19", "844e5a4f659f454112c559d4f4043b7accfbb134e47a55f4c55f79d9c71bdab1")
     add_versions("v0.1.18", "bdba9d0a8b8330a89c6b8cbc00b9aa14f403d3449b37ff2e0d96d62a7301b2ee")
     add_versions("v0.1.17", "83c1fbae826631361a529e9565e64a942c412baaec6b705ae5da3f056b97b958")
 
-    add_configs("asan", {description = "Enable Address Sanitize.", default = false, type = "boolean"})
+    if is_plat("wasm") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
 
-    add_deps("cmake", "aws-c-common")
+    add_deps("cmake")
+    add_deps("aws-c-common")
 
-    on_install("windows|x64", "windows|x86", "linux", "macosx", "bsd", "msys", "cross", function (package)
-        local cmakedir = package:dep("aws-c-common"):installdir("lib", "cmake")
-        if package:is_plat("windows") then
+    if on_check then
+        on_check(function (package)
+            if package:version():ge("0.1.19") then
+                if package:is_plat("windows") and package:has_tool("cxx", "clang_cl") then
+                    raise("package(aws-checksums >=0.1.19) unsupported clang-cl toolchain")
+                end
+            end
+            if package:version():eq("0.1.19") then
+                if not package:is_plat("windows") and package:has_tool("cxx", "clang") then
+                    raise("package(aws-checksums 0.1.19) unsupported clang toolchain")
+                end
+            end
+        end)
+    end
+
+    on_install("!mingw or mingw|!i386", function (package)
+        if package:is_plat("windows") and package:config("shared") then
+            package:add("defines", "AWS_CHECKSUMS_USE_IMPORT_EXPORT")
+        end
+
+        local cmakedir = package:dep("aws-c-common"):installdir("lib/cmake")
+        if is_host("windows") then
             cmakedir = cmakedir:gsub("\\", "/")
         end
 
-        local configs = {"-DBUILD_TESTING=OFF", "-DCMAKE_MODULE_PATH=" .. cmakedir}
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-DCMAKE_MODULE_PATH=" .. cmakedir,
+        }
         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_SANITIZERS=" .. (package:config("asan") and "ON" or "OFF"))

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

@@ -6,6 +6,14 @@ 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.29.8", "a693b1b6a802dd8bf0210cbb9f01fd58a95c851309a10a221e1ba7496b81384c")
+    add_versions("v0.29.5", "17dd4a39537b5bd4040ff951c5a658e27c5d74d3f3cfab72831d3ecbabd58d35")
+    add_versions("v0.28.3", "0d0255eb1983ff3b6f7a7e98a54f65e2e8b40a7c7d6118a96a9c656ada7afb5f")
+    add_versions("v0.28.2", "7f27df9d2028008e665bab4b2e094365eac696610610e52182c679a43dbeaf6f")
+    add_versions("v0.27.5", "cc69252ee132f5cc76b1fcf1ebec574e88f7080b05caa8125aab5684b26a37b9")
+    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")

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

@@ -0,0 +1,95 @@
+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.53.0", "b7c3a456df40c0d19621848e8c7b70c1fa333f9e8f5aa72755890fb50c9963de")
+    add_versions("v1.51.2", "7df65427f92a4c3cd3db6923e1d395014e41b1fcc38671806c1e342cb6fa02f6")
+    add_versions("v1.49.1", "2fa2e31efab7220b2e0aac581fc6d4f2a6e0e16a26b9e6037f5f137d5e57b4df")
+    add_versions("v1.48.5", "b3e572d09e7ef28d0b03866e610379d3a56a5940fabe6e59785ce0f874b9e959")
+    add_versions("v1.48.1", "a65f79b01dc5ef3d2be743dabf5f9b72d4eda869c425348463154a5ae0746afd")
+    add_versions("v1.45.0", "b136d4331583e16dbcb0c501d56e80afbe5ea1314a4a1c89056953d76e37e9fc")
+    add_versions("v1.41.1", "c81376005466339564c3ca5ad83c52ca350f79391414999d052b5629d008a4d6")
+    add_versions("v1.40.0", "5397a2fdb60230912dae4d7aeb3847c6b39a2f820504abbf55e376ed6a175a55")
+    add_versions("v1.39.0", "37f5a379081b97adba3e1316017e09484d6c4ed6dc336d57fae6f0b7b27472fc")
+    add_versions("v1.37.0", "d5ba1bd922247ce8bdd9139289bf5a021237b121e1f29a323c0ef1730cb1ed07")
+    add_versions("v1.34.2", "4958ac76edd53ced46d3a064cb58be8bd11e4937bcc3857623d319c2894d0904")
+    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"})
+    if is_plat("wasm") then
+        add_configs("shared", {description = "Build shared library.", default = false, type = "boolean", readonly = true})
+    end
+
+    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
+
+    if on_check then
+        on_check("wasm", function (target)
+            if package:version() and package:version():eq("1.45.0") then
+                raise("package(aws-lc 1.45.0) unsupported version")
+            end
+        end)
+    end
+
+    on_load(function (package)
+        if not package:is_precompiled() then
+            if package:config("go") then
+                package:add("deps", "go")
+            end
+            if is_subhost("windows") and package:config("perl") then
+                package:add("deps", "strawberry-perl")
+            end
+        end
+
+        if package:config("shared") and package:is_plat("windows") then
+            package:add("defines", "BORINGSSL_SHARED_LIBRARY")
+        end
+    end)
+
+    on_install("!cross and (!windows or windows|!arm64)", function (package)
+        io.replace("CMakeLists.txt", "-WX", "", {plain = true})
+        io.replace("CMakeLists.txt", [[set(C_CXX_FLAGS "${C_CXX_FLAGS} -Werror -Wformat=2 -Wsign-compare -Wmissing-field-initializers -Wwrite-strings")]], "", {plain = true})
+
+        local configs = {
+            "-DBUILD_TESTING=OFF",
+            "-DCMAKE_POLICY_DEFAULT_CMP0057=NEW",
+            "-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"))
+
+        local opt = {}
+        if package:is_plat("mingw") and not package:is_arch64() then
+            table.insert(configs, "-DOPENSSL_NO_ASM=ON")
+            if package:version() and package:version():ge("1.52.0") then
+                opt.cxflags = "-D_SSIZE_T_DEFINED"
+            end
+        end
+        import("package.tools.cmake").install(package, configs, opt)
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("SSL_new", {includes = "openssl/ssl.h"}))
+    end)

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

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

+ 40 - 0
packages/b/babl/xmake.lua

@@ -0,0 +1,40 @@
+package("babl")
+    set_homepage("https://gegl.org/babl/")
+    set_description("A pixel encoding and color space conversion engine.")
+    set_license("LGPL-3.0-or-later")
+
+    add_urls("https://ftp.fau.de/gimp/babl/$(version).tar.xz", {version = function (version)
+        return format("%d.%d/babl-%s", version:major(), version:minor(), version)
+    end})
+
+    add_versions("0.1.110", "bf47be7540d6275389f66431ef03064df5376315e243d0bab448c6aa713f5743")
+
+    add_configs("lcms", {description = "Build with lcms", default = false, type = "boolean"})
+
+    if is_plat("mingw", "msys") then
+        add_configs("shared", {description = "Build shared library.", default = true, type = "boolean", readonly = true})
+    end
+
+    if is_plat("linux", "bsd", "android") then
+        add_syslinks("dl", "m")
+    end
+
+    add_deps("meson", "ninja")
+
+    on_load(function (package)
+        if package:config("lcms") then
+            package:add("deps", "lcms")
+        end
+    end)
+
+    on_install("!iphoneos and !windows and !wasm", function (package)
+        local configs = {"-Dwith-docs=false", "-Denable-gir=false", "-Denable-vapi=false", "-Dgi-docgen=disabled"}
+        table.insert(configs, "-Dwith-lcms=" .. (package:config("lcms") and "true" or "false"))
+        table.insert(configs, "-Ddefault_library=" .. (package:config("shared") and "shared" or "static"))
+        import("package.tools.meson").install(package, configs)
+        os.cp(package:installdir("include/babl-0.1/babl/*.h"), package:installdir("include/babl"))
+    end)
+
+    on_test(function (package)
+        assert(package:has_cfuncs("babl_init", {includes = "babl/babl.h"}))
+    end)

+ 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)
-

+ 13 - 0
packages/b/bandit/patches/2023.08.05/debundle-snowhouse.patch

@@ -0,0 +1,13 @@
+diff --git a/bandit/adapters/snowhouse.h b/bandit/adapters/snowhouse.h
+index f3d9fde..ee3844c 100644
+--- a/bandit/adapters/snowhouse.h
++++ b/bandit/adapters/snowhouse.h
+@@ -3,7 +3,7 @@
+ 
+ #include <bandit/adapters/interface.h>
+ #include <bandit/assertion_exception.h>
+-#include <bandit/assertion_frameworks/snowhouse/snowhouse.h>
++#include <snowhouse/snowhouse.h>
+ 
+ namespace bandit {
+   namespace adapter {

+ 30 - 0
packages/b/bandit/xmake.lua

@@ -0,0 +1,30 @@
+package("bandit")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://banditcpp.github.io/bandit/")
+    set_description("Human-friendly unit testing for C++11")
+
+    add_urls("https://github.com/banditcpp/bandit.git", {submodules = false})
+
+    add_versions("2023.08.05", "f297efd8aecc6e9ce8f84e33264898bf77f9cb73")
+    add_patches("2023.08.05", "patches/2023.08.05/debundle-snowhouse.patch", "66d5f6beb2a2f099b7e22ed6b7993f70ee01630e0df10f149c4d0e792b3a42a0")
+
+    add_deps("snowhouse")
+
+    on_install(function (package)
+        os.cp("bandit", package:installdir("include"))
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            #include <bandit/bandit.h>
+            using namespace bandit;
+            go_bandit([](){
+                AssertThat(123, snowhouse::Equals(123));
+            });
+            void test() {
+                int argc;
+                char* argv[2];
+                bandit::run(argc, argv);
+            }
+        ]]}, {configs = {languages = "c++11"}}))
+    end)

+ 43 - 0
packages/b/barkeep/xmake.lua

@@ -0,0 +1,43 @@
+package("barkeep")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://oir.github.io/barkeep/")
+    set_description("Small C++ header to display async animations, counters, and progress bars")
+    set_license("Apache-2.0")
+
+    add_urls("https://github.com/oir/barkeep/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/oir/barkeep.git")
+
+    add_versions("v0.1.5", "2577b09cfa7e5e117d13b765cfa4792f9e2b50719715786be275ae32dbf63b7c")
+    add_versions("v0.1.4", "2dc1b2cf6f0e0c0de1a0f18a1d31a97bc698ed0cfdf186780daf5a17aa56dfa2")
+    add_versions("v0.1.3", "211425e348b570547b49d11edfb6e3750701d97cc89f073771b16d6012530a66")
+
+    add_configs("fmt", {description = "Use fmt format", default = true, type = "boolean"})
+
+    if is_plat("linux", "bsd") then
+        add_syslinks("pthread")
+    end
+
+    on_load(function (package)
+        if package:config("fmt") then
+            package:add("deps", "fmt")
+            package:add("defines", "BARKEEP_ENABLE_FMT_FORMAT")
+        else
+            package:add("defines", "BARKEEP_ENABLE_STD_FORMAT")
+        end
+    end)
+
+    on_install(function (package)
+        if package:has_tool("cxx", "cl") then
+            package:add("cxxflags", "/utf-8")
+        end
+
+        os.cp("barkeep", package:installdir("include"))
+    end)
+
+    on_test(function (package)
+        assert(package:check_cxxsnippets({test = [[
+            void test() {
+                auto anim = barkeep::Animation({.message = "Working"});
+            }
+        ]]}, {configs = {languages = "c++20"}, includes = {"barkeep/barkeep.h"}}))
+    end)

Niektoré súbory nie sú zobrazené, pretože je v týchto rozdielových dátach zmenené mnoho súborov