Files
scriptc/packages/llvm-darwin-arm64/scripts/build.mjs
Chris Tate c08ab955ae Enforce linting and consistent source formatting
- Enforce oxlint and oxfmt for owned JavaScript and TypeScript with independent CI checks.
- Preserve compiler import boundaries and protected fixtures while cleaning up lint findings.
- Standardize source formatting and validate import, fixture, and embedded-source protections.
2026-10-05 17:51:24 -05:00

58 lines
2.0 KiB
JavaScript

#!/usr/bin/env node
import { nativeTargetCmakeArgs } from "../../../native/llvm-codegen/targets.mjs";
import { execFileSync } from "node:child_process";
import { chmodSync, copyFileSync, mkdirSync, readFileSync } from "node:fs";
import { join } from "node:path";
import { fileURLToPath } from "node:url";
const packageRoot = fileURLToPath(new URL("..", import.meta.url));
const repoRoot = fileURLToPath(new URL("../../..", import.meta.url));
if (process.platform !== "darwin" || process.arch !== "arm64") {
process.stdout.write("@scriptc/llvm-darwin-arm64: skipped on this host\n");
process.exit(0);
}
const manifest = JSON.parse(readFileSync(join(packageRoot, "package.json"), "utf8"));
const buildDir = join(repoRoot, "node_modules/.cache/scriptc-llvm-darwin-arm64");
const llvmDir = process.env.LLVM_DIR ?? "/opt/homebrew/opt/llvm@22/lib/cmake/llvm";
execFileSync(
"cmake",
[
"-S",
join(repoRoot, "native/llvm-codegen"),
"-B",
buildDir,
"-G",
"Ninja",
`-DLLVM_DIR=${llvmDir}`,
`-DSCRIPTC_PACKAGE_VERSION=${manifest.version}`,
...nativeTargetCmakeArgs,
"-DCMAKE_BUILD_TYPE=Release",
],
{ stdio: "inherit" },
);
execFileSync("cmake", ["--build", buildDir, "--target", "scriptc-llvm-codegen"], {
stdio: "inherit",
});
const binDir = join(packageRoot, "bin");
mkdirSync(binDir, { recursive: true });
const output = join(binDir, "scriptc-llvm-codegen");
copyFileSync(join(buildDir, "scriptc-llvm-codegen"), output);
execFileSync("strip", ["-x", output], { stdio: "inherit" });
chmodSync(output, 0o755);
const version = JSON.parse(
execFileSync(output, ["version", "--format=json"], {
encoding: "utf8",
}),
);
if (
version.protocol_version !== "1" ||
version.scriptc_package_version !== manifest.version ||
version.llvm_version !== "22.1.8" ||
!Array.isArray(version.supported_targets) ||
!version.supported_targets.includes("arm64-apple-macosx14.0.0")
) {
throw new Error(`built helper reported an incompatible identity: ${JSON.stringify(version)}`);
}