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