diff --git a/.github/workflows/vulkan-loader.yml b/.github/workflows/vulkan-loader.yml index 4b6b9fb1dc..59ac8ee2c4 100644 --- a/.github/workflows/vulkan-loader.yml +++ b/.github/workflows/vulkan-loader.yml @@ -46,6 +46,9 @@ jobs: for arch in amd64 arm64 armhf; do sudo apt install -y libx11-xcb-dev:$arch libxkbcommon-dev:$arch libwayland-dev:$arch libxrandr-dev:$arch done + wget https://github.com/mstorsjo/llvm-mingw/releases/download/20240417/llvm-mingw-20240417-msvcrt-ubuntu-20.04-x86_64.tar.xz + sudo mkdir /opt/llvm-mingw-msvcrt + sudo tar xf llvm-mingw-20240417-msvcrt-ubuntu-20.04-x86_64.tar.xz --strip-components 1 -C /opt/llvm-mingw-msvcrt - os: windows-2022 name: Windows nuke_invoke: ./build.cmd diff --git a/build/cmake/aarch64-w64-mingw32.cmake b/build/cmake/aarch64-w64-mingw32.cmake new file mode 100644 index 0000000000..411e02cbd1 --- /dev/null +++ b/build/cmake/aarch64-w64-mingw32.cmake @@ -0,0 +1,12 @@ +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR aarch64) +set(CMAKE_ASM_COMPILER "aarch64-w64-mingw32-as") +set(CMAKE_C_COMPILER "aarch64-w64-mingw32-gcc") +set(CMAKE_CXX_COMPILER "aarch64-w64-mingw32-g++") +set(CMAKE_RC_COMPILER "aarch64-w64-mingw32-windres") +set(CMAKE_LINKER "aarch64-w64-mingw32-ld") +set(CMAKE_FIND_ROOT_PATH "/opt/llvm-mingw-msvcrt/aarch64-w64-mingw32") +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) diff --git a/build/nuke/Native/Core.cs b/build/nuke/Native/Core.cs index 30d9223eb3..e9aeafacd0 100644 --- a/build/nuke/Native/Core.cs +++ b/build/nuke/Native/Core.cs @@ -65,15 +65,15 @@ public void PrUpdatedNativeBinary(string name, [CanBeNull] string glob = null) // it's assumed that the pushable token was used to checkout the repo if (OperatingSystem.IsWindows()) { - glob ??= "src/Native/**/*.dll"; + glob ??= "src/Native/**/*.dll src/Native/**/*.json"; } else if (OperatingSystem.IsMacOS()) { - glob ??= "src/Native/**/*.a src/Native/**/*.dylib"; + glob ??= "src/Native/**/*.a src/Native/**/*.dylib src/Native/**/*.json"; } else if (OperatingSystem.IsLinux()) { - glob ??= "src/Native/**/*.so*"; + glob ??= "src/Native/**/*.so* src/Native/**/*.json"; } Git("fetch --all", RootDirectory); diff --git a/build/nuke/Native/SwiftShader.cs b/build/nuke/Native/SwiftShader.cs index 522bfd3c7d..95e1623b7e 100644 --- a/build/nuke/Native/SwiftShader.cs +++ b/build/nuke/Native/SwiftShader.cs @@ -54,6 +54,7 @@ partial class Build { { ("Win32", "win-x86"), ("x64", "win-x64"), + ("ARM64", "win-arm64"), }) { EnsureCleanDirectory(buildDir); diff --git a/build/nuke/Native/VulkanLoader.cs b/build/nuke/Native/VulkanLoader.cs index fd5b7cbe35..428be02170 100644 --- a/build/nuke/Native/VulkanLoader.cs +++ b/build/nuke/Native/VulkanLoader.cs @@ -60,7 +60,6 @@ partial class Build { } else if (OperatingSystem.IsLinux()) { - foreach (var (triple, rid) in new[] { ("x86_64-linux-gnu", "linux-x64"), @@ -76,6 +75,16 @@ partial class Build { CopyAll((buildDir / "loader").GlobFiles("libvulkan.so"), runtimes / rid / "native"); } + + // Build for win-arm64 with llvm-mingw. + { + EnsureCleanDirectory(buildDir); + + InheritedShell($"{prepare} -DUSE_GAS=ON {GetCMakeToolchainFlag("aarch64-w64-mingw32")}", buildDir).AssertZeroExitCode(); + InheritedShell(build, buildDir).AssertZeroExitCode(); + + CopyAll((buildDir / "loader").GlobFiles("libvulkan-1.dll"), runtimes / "win-arm64" / "native"); + } } else if (OperatingSystem.IsMacOS()) { diff --git a/build/submodules/SwiftShader b/build/submodules/SwiftShader index bbe6452b42..764410d4d6 160000 --- a/build/submodules/SwiftShader +++ b/build/submodules/SwiftShader @@ -1 +1 @@ -Subproject commit bbe6452b420c5ddc4b0fd421b0a3ce271262f4ca +Subproject commit 764410d4d65546fd1e536b02059b1f714a390720 diff --git a/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj b/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj index 4ab9b2f9bd..9d584035d7 100644 --- a/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj +++ b/src/Native/Silk.NET.Vulkan.Loader.Native/Silk.NET.Vulkan.Loader.Native.csproj @@ -22,6 +22,7 @@ + diff --git a/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj b/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj index 534198ba3f..75d5180e12 100644 --- a/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj +++ b/src/Native/Silk.NET.Vulkan.SwiftShader.Native/Silk.NET.Vulkan.SwiftShader.Native.csproj @@ -18,13 +18,20 @@ + + + + + + + + + + - - -