build/llvmPackages: more dedicated overrides

This commit is contained in:
2024-07-04 19:49:57 +08:00
parent bd5e7e357a
commit 4efcaf90bb

View File

@@ -6,6 +6,16 @@ import { promisifySpawn } from "lyc/cli";
import os from "os";
import { SpawnOptions, spawn } from "child_process";
export interface LLVMPackageOverrides {
cmakeDefinitionOverrides?: {
llvm?: Object,
libpgmath?: Object,
cflang?: Object,
};
spawnOverrides?: (old: SpawnOptions) => SpawnOptions,
}
export interface LLVMPackageOptions {
src: string;
installPrefix: string;
@@ -19,39 +29,24 @@ export interface LLVMPackageOptions {
libpgmath: string;
};
/**
* Misc toolchain settings for compiling LLVM.
*/
toolchains: {
llvm: {
CC: string;
CXX: string;
};
};
cmakeDefinitionOverrides?: {
llvm?: Object,
libpgmath?: Object,
cflang?: Object,
};
platform: PackagePlatform;
};
export function llvmPackages({
src,
installPrefix,
toolchains,
platform,
buildDirs,
cmakeDefinitionOverrides,
}: LLVMPackageOptions): PackageTask[] {
spawnOverrides,
}: LLVMPackageOptions & LLVMPackageOverrides): PackageTask[] {
const rm = "rm";
const cmake = "cmake";
const llvmVar: LLVMVariable = {
LLVM_ENABLE_PROJECTS: ["clang", "clang-tools-extra", "lld", "openmp"],
LLVM_TARGETS_TO_BUILD: ["Sw64"],
LLVM_ENABLE_CLASSIC_FLANG: true,
LIBOMP_ARCH: "Sw64",
LIBOMP_USE_ITT_NOTIFY: false,
};
@@ -66,11 +61,11 @@ export function llvmPackages({
MAKEFLAGS: ["-j", os.cpus().length].join(" "),
};
const spawnOptions: SpawnOptions = {
const spawnOptions: SpawnOptions = (spawnOverrides || (o => o))({
stdio: "inherit",
env,
cwd: src,
};
});
const mkBuildPhase = (build: string) => (async () => {
await promisifySpawn(spawn(cmake, ["--build", build], spawnOptions));
@@ -102,8 +97,6 @@ export function llvmPackages({
definitions: variable({
...llvmVar,
...general,
CMAKE_C_COMPILER: toolchains.llvm.CC,
CMAKE_CXX_COMPILER: toolchains.llvm.CXX,
...cmakeDefinitionOverrides?.llvm || {},
}),
generator: "Ninja",
@@ -156,7 +149,6 @@ export function llvmPackages({
// Configure cflang.
await promisifySpawn(spawn(cmake, command({
definitions: variable({
...llvmVar,
...general,
...{
CMAKE_C_COMPILER: path.join(installPrefix, "bin", "clang"),
@@ -184,4 +176,3 @@ export function llvmPackages({
return [mkLLVMPackage(), mkLibpgmathPackage(), mkCflangPackage()];
}