commit stuff for windows arm

This commit is contained in:
Benjamin Shafii
2026-03-22 19:57:07 -07:00
parent 5c85142098
commit 31d894ae98
5 changed files with 3252 additions and 10 deletions

View File

@@ -7,6 +7,7 @@
"scripts": {
"dev": "OPENWORK_DEV_MODE=1 OPENWORK_DATA_DIR=\"$HOME/.openwork/openwork-orchestrator-dev\" tauri dev --config src-tauri/tauri.dev.conf.json --config \"{\\\"build\\\":{\\\"devUrl\\\":\\\"http://localhost:${PORT:-5173}\\\"}}\"",
"dev:windows": "node ./scripts/dev-windows.mjs",
"dev:windows:x64": "node ./scripts/dev-windows.mjs x64",
"build": "tauri build",
"prepare:sidecar": "node ./scripts/prepare-sidecar.mjs"
},

View File

@@ -6,8 +6,11 @@ const pnpmCmd = process.platform === "win32" ? "corepack.cmd" : "pnpm";
const pnpmArgs = process.platform === "win32" ? ["pnpm"] : [];
const port = Number.parseInt(process.env.PORT ?? "", 10);
const resolvedPort = Number.isFinite(port) && port > 0 ? port : 5173;
const tauriTarget =
process.platform === "win32" && process.arch === "arm64" ? "x86_64-pc-windows-msvc" : null;
const requestedTarget = process.argv[2] === "x64" ? "x64" : null;
const hostArch = process.arch === "arm64" ? "arm64" : "x64";
const targetArch = requestedTarget ?? hostArch;
const tauriTarget = targetArch === "x64" && hostArch === "arm64" ? "x86_64-pc-windows-msvc" : null;
const llvmBin = process.env.LLVM_BIN || "C:\\Program Files\\LLVM\\bin";
const loadWindowsBuildEnv = () => {
if (process.platform !== "win32") return {};
@@ -18,8 +21,6 @@ const loadWindowsBuildEnv = () => {
if (!existsSync(vsDevCmd)) return {};
const targetArch = tauriTarget === "x86_64-pc-windows-msvc" ? "x64" : process.arch;
const hostArch = process.arch === "arm64" ? "arm64" : "x64";
const command = `\"${vsDevCmd}\" -arch=${targetArch} -host_arch=${hostArch} >nul && set`;
const result = spawnSync(process.env.ComSpec || "cmd.exe", ["/d", "/s", "/c", command], {
encoding: "utf8",
@@ -41,8 +42,12 @@ const loadWindowsBuildEnv = () => {
};
const windowsBuildEnv = loadWindowsBuildEnv();
const mergedPath =
windowsBuildEnv.Path || windowsBuildEnv.PATH || process.env.Path || process.env.PATH || "";
const mergedPath = [
existsSync(llvmBin) ? llvmBin : null,
windowsBuildEnv.Path || windowsBuildEnv.PATH || process.env.Path || process.env.PATH || null,
]
.filter(Boolean)
.join(";");
const env = {
...process.env,
@@ -53,12 +58,18 @@ const env = {
`${homedir()}${process.platform === "win32" ? "\\" : "/"}.openwork${process.platform === "win32" ? "\\" : "/"}openwork-orchestrator-dev`,
OPENWORK_USE_COREPACK_PNPM: "1",
PORT: String(resolvedPort),
CC: process.env.CC || "clang",
CXX: process.env.CXX || "clang++",
CLANG_PATH: process.env.CLANG_PATH || (existsSync(llvmBin) ? `${llvmBin}\\clang.exe` : "clang"),
...(tauriTarget
? {
CC_x86_64_pc_windows_msvc: process.env.CC_x86_64_pc_windows_msvc || "clang",
TAURI_ENV_TARGET_TRIPLE: tauriTarget,
CARGO_BUILD_TARGET: tauriTarget,
}
: {}),
: {
CC_aarch64_pc_windows_msvc: process.env.CC_aarch64_pc_windows_msvc || "clang",
}),
};
if (mergedPath) {

File diff suppressed because it is too large Load Diff

View File

@@ -4,7 +4,8 @@
"version": "0.0.0",
"scripts": {
"dev": "OPENWORK_DEV_MODE=1 pnpm --filter @openwork/desktop dev",
"dev:windows": "scripts/dev-windows.cmd",
"dev:windows": ".\\scripts\\dev-windows.cmd",
"dev:windows:x64": ".\\scripts\\dev-windows.cmd x64",
"dev:ui": "OPENWORK_DEV_MODE=1 pnpm --filter @openwork/app dev",
"dev:story": "OPENWORK_DEV_MODE=1 pnpm --filter @openwork/story-book dev",
"dev:web": "OPENWORK_DEV_MODE=1 pnpm --filter @openwork-ee/den-web dev",

View File

@@ -1,6 +1,30 @@
@echo off
setlocal
set "TARGET_ARCH=%~1"
set "VSDEVCMD=%VSDEVCMD_PATH%"
set "HOST_ARCH=x64"
if /I "%PROCESSOR_ARCHITECTURE%"=="ARM64" set "HOST_ARCH=arm64"
if /I "%TARGET_ARCH%"=="x64" (
set "VS_ARCH=x64"
) else (
set "VS_ARCH=%HOST_ARCH%"
)
if not defined VSDEVCMD if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" for /f "usebackq delims=" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -find Common7\Tools\VsDevCmd.bat`) do set "VSDEVCMD=%%i"
if not defined VSDEVCMD if exist "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat" set "VSDEVCMD=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\Common7\Tools\VsDevCmd.bat"
if defined VSDEVCMD call "%VSDEVCMD%" -arch=x64 -host_arch=arm64 >nul
call corepack pnpm --filter @openwork/desktop dev:windows
if not defined VSDEVCMD (
echo [openwork] Could not find VsDevCmd.bat. Install Visual Studio Build Tools with Desktop development with C++.
exit /b 1
)
call "%VSDEVCMD%" -arch=%VS_ARCH% -host_arch=%HOST_ARCH% >nul
if errorlevel 1 exit /b %errorlevel%
if /I "%TARGET_ARCH%"=="x64" (
call corepack pnpm --filter @openwork/desktop dev:windows:x64
) else (
call corepack pnpm --filter @openwork/desktop dev:windows
)