mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-26 06:34:20 +08:00
* Expand LLVM native output targets - Add owned helper and runtime-pack contracts for macOS x64, Linux glibc/musl, Windows x64, and WASI. - Generalize LLVM target selection, package validation, linker plans, and release/CI matrices. - Document linker boundaries and add focused native-output and runtime-pack coverage. * Pin Windows LLVM helper CI to VS 2022 The official LLVM archive needs the Visual Studio 2022 CMake generator, which is not guaranteed by windows-latest. * Align bootstrap cache with LLVM runtime-pack builds Use the same target-specific helper and linker identity before and after compiler loading so routed executable cache hits remain lightweight. * Install Windows LLVM CI tools with Chocolatey windows-2022 includes Visual Studio but not winget; use its available Chocolatey bootstrap for CMake and Ninja. * Prevent Zig version probes from leaving runtime-pack objects Run runtime-pack compiler version probes in a private temporary directory and remove the accidental tracked WASI a.o file. * Use 7-Zip for Windows LLVM setup Extract the official LLVM development archive with two-stage 7-Zip instead of Windows tar.exe, which timed out while materializing the toolchain tree. * Define ssize_t for the MSVC runtime pack Clang's MSVC target does not expose POSIX ssize_t through sys/types.h; define the pointer-sized runtime type without affecting MinGW. * Build the Windows runtime pack with Zig Use the MinGW-compatible Windows sysroot required by the runtime while retaining COFF helper output and installing Zig in the Windows native CI lane. * Give macOS LLVM differential shard time to finish Shard 1 passed its setup and focused contracts but was cancelled during its cold LLVM differential slice at the 20-minute job limit.
33 lines
1.4 KiB
TypeScript
33 lines
1.4 KiB
TypeScript
/** Small CLI-startup surface. Importing the package root eagerly loads the
|
|
* full lowering/emitter graph; exact builds need only these cache/native
|
|
* identity primitives before deciding whether that graph is necessary. */
|
|
export { readRoutedExecutableCache } from "./executable/executable-cache.js";
|
|
export type { EarlyExecutableRouteOptions } from "./executable/executable-cache.js";
|
|
export {
|
|
executableNativeEnvironmentFingerprint,
|
|
configuredTargetPlatform,
|
|
legacyCExecutablePathRequested,
|
|
resolveCc,
|
|
targetPlatform,
|
|
} from "./backend/external-c.js";
|
|
export { prepareBuildCacheRoot, resolveBuildCacheRoot } from "./backend/build-cache.js";
|
|
export {
|
|
executableLinkerEnvironmentFingerprint,
|
|
resolvePlatformLinker,
|
|
} from "./backend/linker.js";
|
|
import { legacyCExecutablePathRequested } from "./backend/external-c.js";
|
|
import { nativeCodegenTarget, type NativeTargetSpec } from "./backend/targets.js";
|
|
|
|
/** Whether an ordinary LLVM executable can take the helper/object plus
|
|
* precompiled-runtime-pack route. Keep this startup-sized: the CLI bootstrap
|
|
* needs the exact cache identity before deciding whether it must import the
|
|
* full compiler graph. */
|
|
export function precompiledRuntimePackTarget(
|
|
env: NodeJS.ProcessEnv = process.env,
|
|
): NativeTargetSpec | null {
|
|
if (env["SCRIPTC_RUNTIME_PACK"] === "0" ||
|
|
env["SCRIPTC_FETCH_CURL"] === "1" ||
|
|
legacyCExecutablePathRequested(env)) return null;
|
|
return nativeCodegenTarget(env);
|
|
}
|