build/llvmPackages: more dedicated overrides
This commit is contained in:
@@ -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()];
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user