From 743389df52b63c925dafe9c13454215ac7dc1d1f Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 18 Sep 2026 13:30:53 +0100 Subject: [PATCH 1/7] [ci] Add windows arm64 to matrix --- .github/workflows/main.yml | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index d63bb1cd..b662f621 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -144,27 +144,30 @@ jobs: name: windows strategy: matrix: - arch: [Win32, x64] + arch: [Win32, x64, Arm64] vstools: [vs2017, vs2022] include: - arch: x64 name_suffix: 64 - - vstools: vs2017 - arch: Win32 - cmake_generator: Visual Studio 15 2017 + - arch: Arm64 + name_suffix: -arm64 + runner: windows-11-arm - vstools: vs2017 - arch: x64 - cmake_generator: Visual Studio 15 2017 Win64 + cmake_generator: Visual Studio 15 2017 - vstools: vs2022 cmake_generator: Visual Studio 17 2022 + exclude: + - vstools: vs2017 + arch: Arm64 + env: CMAKE_BUILD_TYPE: RelWithDebInfo - runs-on: windows-2022 + runs-on: ${{ matrix.runner || 'windows-2022' }} steps: - name: Checkout uses: actions/checkout@v7 @@ -176,9 +179,7 @@ jobs: - name: CMake run: | - cmake . -G "${{ matrix.cmake_generator }}" ${{ env.CMAKE_ARCH_FLAG }} - env: - CMAKE_ARCH_FLAG: ${{ matrix.vstools == 'vs2022' && format('-A {0}', matrix.arch) || ' ' }} + cmake . -G "${{ matrix.cmake_generator }}" -A ${{ matrix.arch }} - name: Download dependencies run: | @@ -449,7 +450,7 @@ jobs: rclone copyto neko-*-win.zip "s3:hxbuilds/builds/neko/windows/neko_latest.zip" rclone copyto neko-*-win64.zip "s3:hxbuilds/builds/neko/windows64/neko_latest.zip" rclone copyto neko.*.nupkg "s3:hxbuilds/builds/neko/windows64-choco/neko_latest.nupkg" - + curl "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \ -fsS \ -H 'Content-Type: application/json' \ From 76ff51768a4e93e168b711ea9cf15d5d055e5b3f Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 18 Sep 2026 13:59:06 +0100 Subject: [PATCH 2/7] [cmake] Update pcre2 to fix cmake error The previously used version of pcre2 set a minimum cmake version that modern cmake no longer supports. See: https://github.com/PCRE2Project/pcre2/commit/c7364c4694250c416e16b9dd81f281cb331c73de --- libs/regexp/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/regexp/CMakeLists.txt b/libs/regexp/CMakeLists.txt index 20763827..9831cd05 100644 --- a/libs/regexp/CMakeLists.txt +++ b/libs/regexp/CMakeLists.txt @@ -9,8 +9,8 @@ if (STATIC_PCRE2) COMPILE_DEFINITIONS PCRE2_STATIC_LINK ) set(PCRE2_CONFIG - URL https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz - URL_HASH SHA256=c33b418e3b936ee3153de2c61cc638e7e4fe3156022a5c77d0711bcbb9d64f1f + URL https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.48/pcre2-10.48.tar.gz + URL_HASH SHA256=ebcc25aadf2a51fa1fefa9b8bc9e7a79b3dae86870a0f1152a22e42befd46888 ) if (WIN32) ExternalProject_Add(pcre2 From 2b88bb2051487980894d401339e6afe301edf304 Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 18 Sep 2026 13:30:29 +0100 Subject: [PATCH 3/7] [cmake] Add windows arm64 openssl config --- libs/mysql/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/mysql/CMakeLists.txt b/libs/mysql/CMakeLists.txt index e296c01a..194b74f2 100644 --- a/libs/mysql/CMakeLists.txt +++ b/libs/mysql/CMakeLists.txt @@ -6,7 +6,9 @@ if (STATIC_OPENSSL) if (WIN32) # perl is needed to run the openssl Configure script... find_package(Perl REQUIRED) - if (arch_64) + if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(ARM64|aarch64)$") + set(openssl_target VC-WIN64-ARM) + elseif (arch_64) set(openssl_target VC-WIN64A) else() set(openssl_target VC-WIN32) From a53488e2f536b829d6599e25936b49958b3003c9 Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 18 Sep 2026 15:57:08 +0100 Subject: [PATCH 4/7] [cmake] Update openssl for windows arm64 fix 3.0.8 was missing this patch: https://github.com/openssl/openssl/commit/075652f224479dad2e64b92e791b296177af8705 --- libs/mysql/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libs/mysql/CMakeLists.txt b/libs/mysql/CMakeLists.txt index 194b74f2..31a4776c 100644 --- a/libs/mysql/CMakeLists.txt +++ b/libs/mysql/CMakeLists.txt @@ -52,8 +52,8 @@ if (STATIC_OPENSSL) endif() ExternalProject_Add(OpenSSL ${EP_CONFIGS} - URL https://www.openssl.org/source/openssl-3.0.8.tar.gz - URL_HASH SHA256=6c13d2bf38fdf31eac3ce2a347073673f5d63263398f1f69d0df4a41253e4b3e + URL https://github.com/openssl/openssl/releases/download/openssl-3.6.4/openssl-3.6.4.tar.gz + URL_HASH SHA256=9bffaa1ad1e07b354c21bd3324ec02fa15579f45a7d0494b3e74bc449b7333ef ${OPENSSL_CONFIGS} BYPRODUCTS ${OPENSSL_LIBRARIES} SOURCE_DIR ${CMAKE_BINARY_DIR}/libs/src/openssl From da73417c2299d39c13464cc5d136cd0b404128fe Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 18 Sep 2026 19:52:04 +0100 Subject: [PATCH 5/7] [ci] Disable apache support for windows arm64 Apache httpd cannot yet compile on windows arm64: https://bz.apache.org/bugzilla/show_bug.cgi?id=70237 --- .github/workflows/main.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b662f621..48063beb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -153,6 +153,7 @@ jobs: - arch: Arm64 name_suffix: -arm64 runner: windows-11-arm + CMAKE_FLAGS: -DWITH_APACHE=OFF - vstools: vs2017 cmake_generator: Visual Studio 15 2017 @@ -179,7 +180,7 @@ jobs: - name: CMake run: | - cmake . -G "${{ matrix.cmake_generator }}" -A ${{ matrix.arch }} + cmake . -G "${{ matrix.cmake_generator }}" -A ${{ matrix.arch }} ${{ matrix.CMAKE_FLAGS }} - name: Download dependencies run: | From e0ebe0ee3cfa2298919464e3b4d52d386e18f68b Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 18 Sep 2026 20:30:24 +0100 Subject: [PATCH 6/7] [ci] Upload windows arm64 nightlies --- .github/workflows/main.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 48063beb..0e122f89 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -357,6 +357,11 @@ jobs: with: name: windows64-vs2017-binaries + - name: Download windows-arm64-vs2022-binaries + uses: actions/download-artifact@v8 + with: + name: windows-arm64-vs2022-binaries + - name: Download chocolatey uses: actions/download-artifact@v8 with: @@ -403,6 +408,7 @@ jobs: rclone copyto mac-static-universal-binaries/neko-*.tar.gz "r2:hxbuilds-hjtpx7fj/builds/neko/mac-universal/${FILE_NAME}.tar.gz" rclone copyto neko-*-win.zip "r2:hxbuilds-hjtpx7fj/builds/neko/windows/${FILE_NAME}.zip" rclone copyto neko-*-win64.zip "r2:hxbuilds-hjtpx7fj/builds/neko/windows64/${FILE_NAME}.zip" + rclone copyto neko-*-win-arm64.zip "r2:hxbuilds-hjtpx7fj/builds/neko/windows-arm64/${FILE_NAME}.zip" rclone copy neko.*.nupkg "r2:hxbuilds-hjtpx7fj/builds/neko/windows64-choco/" rclone copyto linux-static-amd64-binaries/neko-*.tar.gz "s3:hxbuilds/builds/neko/linux64/${FILE_NAME}.tar.gz" @@ -412,6 +418,7 @@ jobs: rclone copyto mac-static-universal-binaries/neko-*.tar.gz "s3:hxbuilds/builds/neko/mac-universal/${FILE_NAME}.tar.gz" rclone copyto neko-*-win.zip "s3:hxbuilds/builds/neko/windows/${FILE_NAME}.zip" rclone copyto neko-*-win64.zip "s3:hxbuilds/builds/neko/windows64/${FILE_NAME}.zip" + rclone copyto neko-*-win-arm64.zip "s3:hxbuilds/builds/neko/windows-arm64/${FILE_NAME}.zip" rclone copy neko.*.nupkg "s3:hxbuilds/builds/neko/windows64-choco/" - name: Update "latest" @@ -441,6 +448,7 @@ jobs: rclone copyto mac-static-universal-binaries/neko-*.tar.gz "r2:hxbuilds-hjtpx7fj/builds/neko/mac-universal/neko_latest.tar.gz" rclone copyto neko-*-win.zip "r2:hxbuilds-hjtpx7fj/builds/neko/windows/neko_latest.zip" rclone copyto neko-*-win64.zip "r2:hxbuilds-hjtpx7fj/builds/neko/windows64/neko_latest.zip" + rclone copyto neko-*-win-arm64.zip "r2:hxbuilds-hjtpx7fj/builds/neko/windows-arm64/neko_latest.zip" rclone copyto neko.*.nupkg "r2:hxbuilds-hjtpx7fj/builds/neko/windows64-choco/neko_latest.nupkg" rclone copyto linux-static-amd64-binaries/neko-*.tar.gz "s3:hxbuilds/builds/neko/linux64/neko_latest.tar.gz" @@ -450,6 +458,7 @@ jobs: rclone copyto mac-static-universal-binaries/neko-*.tar.gz "s3:hxbuilds/builds/neko/mac-universal/neko_latest.tar.gz" rclone copyto neko-*-win.zip "s3:hxbuilds/builds/neko/windows/neko_latest.zip" rclone copyto neko-*-win64.zip "s3:hxbuilds/builds/neko/windows64/neko_latest.zip" + rclone copyto neko-*-win-arm64.zip "s3:hxbuilds/builds/neko/windows-arm64/neko_latest.zip" rclone copyto neko.*.nupkg "s3:hxbuilds/builds/neko/windows64-choco/neko_latest.nupkg" curl "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \ @@ -465,6 +474,7 @@ jobs: "https://build.haxe.org/builds/neko/mac-universal/neko_latest.tar.gz", "https://build.haxe.org/builds/neko/windows/neko_latest.zip", "https://build.haxe.org/builds/neko/windows64/neko_latest.zip", + "https://build.haxe.org/builds/neko/windows-arm64/neko_latest.zip", "https://build.haxe.org/builds/neko/windows64-choco/neko_latest.nupkg" ] }' From d486fd4273389162d01f412e7d5eab99a50ffdee Mon Sep 17 00:00:00 2001 From: Tobiasz Laskowski Date: Fri, 18 Sep 2026 20:36:24 +0100 Subject: [PATCH 7/7] [cmake] Set package suffix for windows arm64 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f074b2a1..b10ebe6e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -738,7 +738,7 @@ else() set(OS_NAME "") endif() -if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64") +if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(ARM|arm|aarch)64$") set(arch_suffix "-arm64") else() set(arch_suffix ${arch_64})