From 1d018db5e904bc7f34908f862bdb3429cd85b81e Mon Sep 17 00:00:00 2001 From: Xevion Date: Fri, 8 Aug 2025 10:15:43 -0500 Subject: [PATCH] ci: handle pre-activated emsdk --- web.build.ts | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/web.build.ts b/web.build.ts index 649a6ce..3f21d0a 100644 --- a/web.build.ts +++ b/web.build.ts @@ -187,20 +187,35 @@ async function main() { const release = process.env.RELEASE !== "0"; const emsdkDir = resolve("./emsdk"); - // Ensure the emsdk directory exists before attempting to activate or use it - if (!(await fs.exists(emsdkDir))) { + + // Check if Emscripten is already activated in the environment + const emscriptenAlreadyActivated = + process.env.EMSCRIPTEN || process.env.EMSDK; + + let vars: Record; + + if (emscriptenAlreadyActivated) { log( - `Emscripten SDK directory not found at ${emsdkDir}. Please install or clone 'emsdk' and try again.` + "Emscripten SDK already activated in environment, using existing configuration" ); - process.exit(1); - } - const vars = match(await activateEmsdk(emsdkDir)) // result handling - .with({ vars: P.select() }, (vars) => vars) - .with({ err: P.any }, ({ err }) => { - log("Error activating Emscripten SDK: " + err); + vars = process.env as Record; + } else { + // Ensure the emsdk directory exists before attempting to activate or use it + if (!(await fs.exists(emsdkDir))) { + log( + `Emscripten SDK directory not found at ${emsdkDir}. Please install or clone 'emsdk' and try again.` + ); process.exit(1); - }) - .exhaustive(); + } + + vars = match(await activateEmsdk(emsdkDir)) // result handling + .with({ vars: P.select() }, (vars) => vars) + .with({ err: P.any }, ({ err }) => { + log("Error activating Emscripten SDK: " + err); + process.exit(1); + }) + .exhaustive(); + } // Check if the Emscripten SDK is activated/installed properly for the current OS match({