diff --git a/src/build/llvmPackages.ts b/src/build/llvmPackages.ts index f3998c5..873e798 100644 --- a/src/build/llvmPackages.ts +++ b/src/build/llvmPackages.ts @@ -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()]; } -