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