Skip to content

Commit f3b7f81

Browse files
authored
feat: Windows on Arm prebuilt binary (#181)
1 parent 315a3eb commit f3b7f81

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ jobs:
201201
await buildBinary("x64", ["--gpu", "false"]);
202202
await buildBinary("x64", ["--gpu", "cuda"]);
203203
await buildBinary("x64", ["--gpu", "vulkan"]);
204-
// await buildBinary("arm64", ["--gpu", "false"], windowsOnArmNodeVersion); // disabled arm64 for now as compilation doesn't work
204+
await buildBinary("arm64", ["--gpu", "false"], windowsOnArmNodeVersion);
205205
} else if (process.env.ARTIFACT_NAME === "linux") {
206206
await buildBinary("x64", ["--gpu", "false"]);
207207
await buildBinary("x64", ["--gpu", "cuda"]);
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
set(CMAKE_SYSTEM_NAME Windows)
2+
set(CMAKE_SYSTEM_PROCESSOR ARM64)
3+
4+
# Look for cl.exe in the Visual Studio installation directories
5+
set(PROGRAMFILES "$ENV{ProgramFiles}")
6+
set(PROGRAMFILES_X86 "$ENV{ProgramFiles\(x86\)}")
7+
8+
set(VS_INSTALL_PATHS
9+
"${PROGRAMFILES_X86}/Microsoft Visual Studio"
10+
"${PROGRAMFILES}/Microsoft Visual Studio"
11+
"C:/Program Files (x86)/Microsoft Visual Studio"
12+
"C:/Program Files/Microsoft Visual Studio"
13+
)
14+
foreach(PATH IN LISTS VS_INSTALL_PATHS)
15+
if(CL_EXE_PATH)
16+
break()
17+
endif()
18+
19+
file(GLOB_RECURSE FOUND_CL_EXE "${PATH}/*/VC/Tools/MSVC/*/bin/Hostx64/arm64/cl.exe")
20+
if(FOUND_CL_EXE)
21+
list(GET FOUND_CL_EXE 0 CL_EXE_PATH)
22+
break()
23+
endif()
24+
25+
if(CL_EXE_PATH)
26+
break()
27+
endif()
28+
29+
file(GLOB_RECURSE FOUND_CL_EXE "${PATH}/**/*/VC/Tools/MSVC/*/bin/Hostx64/arm64/cl.exe")
30+
if(FOUND_CL_EXE)
31+
list(GET FOUND_CL_EXE 0 CL_EXE_PATH)
32+
break()
33+
endif()
34+
endforeach()
35+
36+
if(NOT CL_EXE_PATH)
37+
message(FATAL_ERROR "cl.exe not found for ARM architecture.")
38+
else()
39+
set(CMAKE_C_COMPILER "${CL_EXE_PATH}")
40+
set(CMAKE_CXX_COMPILER "${CL_EXE_PATH}")
41+
endif()

0 commit comments

Comments
 (0)