mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 09:23:52 -05:00
Unify CompileChildLibraries and SelectedVersionLibraries (#7022)
This commit is contained in:
@@ -45,7 +45,6 @@ import {
|
||||
CompilationCacheKey,
|
||||
CompilationInfo,
|
||||
CompilationResult,
|
||||
CompileChildLibraries,
|
||||
ExecutionOptions,
|
||||
ExecutionOptionsWithEnv,
|
||||
ExecutionParams,
|
||||
@@ -825,7 +824,7 @@ export class BaseCompiler implements ICompiler {
|
||||
};
|
||||
}
|
||||
|
||||
getSortedStaticLibraries(libraries: CompileChildLibraries[]) {
|
||||
getSortedStaticLibraries(libraries: SelectedLibraryVersion[]) {
|
||||
const dictionary: Record<string, VersionInfo> = {};
|
||||
const links = unique(
|
||||
libraries
|
||||
@@ -909,7 +908,7 @@ export class BaseCompiler implements ICompiler {
|
||||
return sortedlinks;
|
||||
}
|
||||
|
||||
getStaticLibraryLinks(libraries: CompileChildLibraries[], libPaths: string[] = []): string[] {
|
||||
getStaticLibraryLinks(libraries: SelectedLibraryVersion[], libPaths: string[] = []): string[] {
|
||||
const linkFlag = this.compiler.linkFlag || '-l';
|
||||
|
||||
return this.getSortedStaticLibraries(libraries)
|
||||
@@ -917,7 +916,7 @@ export class BaseCompiler implements ICompiler {
|
||||
.map(lib => linkFlag + lib);
|
||||
}
|
||||
|
||||
getSharedLibraryLinks(libraries: CompileChildLibraries[]): string[] {
|
||||
getSharedLibraryLinks(libraries: SelectedLibraryVersion[]): string[] {
|
||||
const linkFlag = this.compiler.linkFlag || '-l';
|
||||
|
||||
return libraries
|
||||
@@ -936,7 +935,7 @@ export class BaseCompiler implements ICompiler {
|
||||
.filter(Boolean) as string[];
|
||||
}
|
||||
|
||||
getSharedLibraryPaths(libraries: CompileChildLibraries[], dirPath?: string): string[] {
|
||||
getSharedLibraryPaths(libraries: SelectedLibraryVersion[], dirPath?: string): string[] {
|
||||
return libraries.flatMap(selectedLib => {
|
||||
const foundVersion = this.findLibVersion(selectedLib);
|
||||
if (!foundVersion) return [];
|
||||
@@ -950,7 +949,7 @@ export class BaseCompiler implements ICompiler {
|
||||
}
|
||||
|
||||
protected getSharedLibraryPathsAsArguments(
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
libDownloadPath: string | undefined,
|
||||
toolchainPath: string | undefined,
|
||||
dirPath: string,
|
||||
@@ -977,7 +976,7 @@ export class BaseCompiler implements ICompiler {
|
||||
);
|
||||
}
|
||||
|
||||
protected getSharedLibraryPathsAsLdLibraryPaths(libraries: CompileChildLibraries[], dirPath?: string): string[] {
|
||||
protected getSharedLibraryPathsAsLdLibraryPaths(libraries: SelectedLibraryVersion[], dirPath?: string): string[] {
|
||||
let paths = '';
|
||||
if (!this.alwaysResetLdPath) {
|
||||
paths = process.env.LD_LIBRARY_PATH || '';
|
||||
@@ -989,7 +988,7 @@ export class BaseCompiler implements ICompiler {
|
||||
);
|
||||
}
|
||||
|
||||
getSharedLibraryPathsAsLdLibraryPathsForExecution(libraries: CompileChildLibraries[], dirPath: string): string[] {
|
||||
getSharedLibraryPathsAsLdLibraryPathsForExecution(libraries: SelectedLibraryVersion[], dirPath: string): string[] {
|
||||
let paths = '';
|
||||
if (!this.alwaysResetLdPath) {
|
||||
paths = process.env.LD_LIBRARY_PATH || '';
|
||||
@@ -1137,7 +1136,7 @@ export class BaseCompiler implements ICompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
let options = this.optionsForFilter(filters, outputFilename, userOptions);
|
||||
@@ -1772,7 +1771,7 @@ export class BaseCompiler implements ICompiler {
|
||||
return maskedArgs;
|
||||
}
|
||||
|
||||
async getRequiredLibraryVersions(libraries): Promise<Record<string, VersionInfo>> {
|
||||
async getRequiredLibraryVersions(libraries: SelectedLibraryVersion[]): Promise<Record<string, VersionInfo>> {
|
||||
const libraryDetails: Record<string, VersionInfo> = {};
|
||||
_.each(libraries, selectedLib => {
|
||||
const foundVersion = this.findLibVersion(selectedLib);
|
||||
@@ -2122,21 +2121,12 @@ export class BaseCompiler implements ICompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
filters: ParseFiltersAndOutputOptions,
|
||||
tools: ActiveTool[],
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
files: FiledataPair[],
|
||||
): CacheKey {
|
||||
return {compiler: this.compiler, source, options, backendOptions, filters, tools, libraries, files};
|
||||
}
|
||||
|
||||
// source: string;
|
||||
// options: string[];
|
||||
// backendOptions: Record<string, any>;
|
||||
// filters: ParseFiltersAndOutputOptions;
|
||||
// bypassCache: BypassCache;
|
||||
// tools: any;
|
||||
// executeParameters: ExecutionParams;
|
||||
// libraries: CompileChildLibraries[];
|
||||
|
||||
getCmakeCacheKey(key: ParsedRequest, files: FiledataPair[]): CmakeCacheKey {
|
||||
const cacheKey: CmakeCacheKey = {
|
||||
source: key.source,
|
||||
@@ -2242,7 +2232,7 @@ export class BaseCompiler implements ICompiler {
|
||||
options: string[],
|
||||
filters: ParseFiltersAndOutputOptions,
|
||||
backendOptions: Record<string, any>,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
tools: ActiveTool[],
|
||||
): Promise<[any, LLVMOptInfo[], StackUsage.StackUsageInfo[]]> {
|
||||
const inputFilenameSafe = this.filename(inputFilename);
|
||||
@@ -2764,7 +2754,7 @@ export class BaseCompiler implements ICompiler {
|
||||
bypassCache: BypassCache,
|
||||
tools: ActiveTool[],
|
||||
executeParameters: ExecutionParams,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
files: FiledataPair[],
|
||||
) {
|
||||
const optionsError = this.checkOptions(options);
|
||||
|
||||
@@ -25,10 +25,10 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {unwrap} from '../assert.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
@@ -87,7 +87,7 @@ export class AdaCompiler extends BaseCompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
backendOptions = backendOptions || {};
|
||||
|
||||
@@ -27,13 +27,10 @@ import path from 'path';
|
||||
import fs from 'fs-extra';
|
||||
import _ from 'underscore';
|
||||
|
||||
import type {
|
||||
CompilationResult,
|
||||
CompileChildLibraries,
|
||||
ExecutionOptions,
|
||||
} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {CompilationResult, ExecutionOptions} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {ArtifactType} from '../../types/tool.interfaces.js';
|
||||
import {addArtifactToResult} from '../artifact-utils.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
@@ -53,7 +50,7 @@ export class Cc65Compiler extends BaseCompiler {
|
||||
this.toolchainPath = path.resolve(path.dirname(compilerInfo.exe), '..');
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
const libPathFlag = this.compiler.libpathFlag || '-L';
|
||||
|
||||
if (!libDownloadPath) {
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
import {AsmParserCpp} from '../parsers/asm-parser-cpp.js';
|
||||
@@ -51,7 +51,7 @@ export class CppFrontCompiler extends BaseCompiler {
|
||||
return [];
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -26,10 +26,10 @@ import path from 'path';
|
||||
|
||||
import Semver from 'semver';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
import {DartAsmParser} from '../parsers/asm-parser-dart.js';
|
||||
@@ -53,7 +53,7 @@ export class DartCompiler extends BaseCompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
let options = this.optionsForFilter(filters, outputFilename, userOptions);
|
||||
|
||||
@@ -24,14 +24,10 @@
|
||||
|
||||
import _ from 'underscore';
|
||||
|
||||
import {
|
||||
BypassCache,
|
||||
CompileChildLibraries,
|
||||
ExecutionParams,
|
||||
FiledataPair,
|
||||
} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {BypassCache, ExecutionParams, FiledataPair} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ICompiler, PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {CompilerArguments} from '../compiler-arguments.js';
|
||||
|
||||
export class FakeCompiler implements ICompiler {
|
||||
@@ -87,7 +83,7 @@ export class FakeCompiler implements ICompiler {
|
||||
bypassCache: BypassCache,
|
||||
tools,
|
||||
executeParameters: ExecutionParams,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
files?: FiledataPair[],
|
||||
) {
|
||||
const inputBody = {
|
||||
|
||||
@@ -22,10 +22,10 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
@@ -61,7 +61,7 @@ export class FlangFC1Compiler extends BaseCompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
let options = ['-fc1'];
|
||||
|
||||
@@ -25,11 +25,7 @@
|
||||
import * as fs from 'fs';
|
||||
import path from 'path';
|
||||
|
||||
import type {
|
||||
CompilationResult,
|
||||
CompileChildLibraries,
|
||||
ExecutionOptionsWithEnv,
|
||||
} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {CompilationResult, ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import * as utils from '../utils.js';
|
||||
@@ -65,7 +61,7 @@ export class FortranCompiler extends BaseCompiler {
|
||||
return '';
|
||||
}
|
||||
|
||||
override getStaticLibraryLinks(libraries: CompileChildLibraries[], libPaths: string[] = []) {
|
||||
override getStaticLibraryLinks(libraries: SelectedLibraryVersion[], libPaths: string[] = []) {
|
||||
return this.getSortedStaticLibraries(libraries)
|
||||
.filter(Boolean)
|
||||
.map(lib => this.getExactStaticLibNameAndPath(lib, libPaths));
|
||||
|
||||
@@ -24,9 +24,10 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import type {CompileChildLibraries, ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
@@ -122,7 +123,7 @@ export class GnuCobolCompiler extends BaseCompiler {
|
||||
return path.join(dirPath, outputFilebase);
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
@@ -73,7 +73,7 @@ export class HaskellCompiler extends BaseCompiler {
|
||||
return options;
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[]) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[]) {
|
||||
const libPathFlag = this.compiler.libpathFlag || '-L';
|
||||
return [libPathFlag + '.', ...this.getSharedLibraryPaths(libraries).map(path => libPathFlag + path)];
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
|
||||
export class HyloCompiler extends BaseCompiler {
|
||||
@@ -8,7 +8,7 @@ export class HyloCompiler extends BaseCompiler {
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
libDownloadPath?: string,
|
||||
toolchainPath?: string,
|
||||
) {
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
@@ -85,7 +85,7 @@ export class JaktCompiler extends BaseCompiler {
|
||||
}
|
||||
|
||||
// We have no dynamic linking in Jakt
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
|
||||
import {AssemblyCompiler} from './assembly.js';
|
||||
|
||||
@@ -39,7 +39,7 @@ export class NasmCompiler extends AssemblyCompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
let options = super.prepareArguments(
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
@@ -18,7 +18,7 @@ export class PythranCompiler extends BaseCompiler {
|
||||
this.cpp_compiler_root = this.compilerProps<string>(`compiler.${this.compiler.id}.cpp_compiler_root`);
|
||||
}
|
||||
|
||||
override getSharedLibraryPaths(libraries: CompileChildLibraries[], dirPath?: string): string[] {
|
||||
override getSharedLibraryPaths(libraries: SelectedLibraryVersion[], dirPath?: string): string[] {
|
||||
let ldpath = super.getSharedLibraryPaths(libraries, dirPath);
|
||||
if (this.cpp_compiler_root) {
|
||||
ldpath = ldpath.concat(
|
||||
|
||||
@@ -28,7 +28,6 @@ import fs from 'fs-extra';
|
||||
|
||||
import type {
|
||||
CompilationResult,
|
||||
CompileChildLibraries,
|
||||
ExecutionOptions,
|
||||
ExecutionOptionsWithEnv,
|
||||
} from '../../types/compilation/compilation.interfaces.js';
|
||||
@@ -38,6 +37,7 @@ import type {
|
||||
} from '../../types/compilation/opt-pipeline-output.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
import {logger} from '../logger.js';
|
||||
@@ -95,7 +95,7 @@ export class RacketCompiler extends BaseCompiler {
|
||||
return true;
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string): string[] {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string): string[] {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ import path from 'path';
|
||||
import {SemVer} from 'semver';
|
||||
import _ from 'underscore';
|
||||
|
||||
import {CompileChildLibraries, ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {CompilerOverrideType, ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import {LLVMIrBackendOptions} from '../../types/compilation/ir.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
@@ -136,7 +136,7 @@ export class RustCompiler extends BaseCompiler {
|
||||
await super.populatePossibleOverrides();
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
import {RustCompiler} from './rust.js';
|
||||
@@ -52,7 +52,7 @@ export class RustcCgGCCCompiler extends RustCompiler {
|
||||
this.compiler.removeEmptyGccDump = false;
|
||||
}
|
||||
|
||||
override getSharedLibraryPaths(libraries: CompileChildLibraries[], dirPath?: string): string[] {
|
||||
override getSharedLibraryPaths(libraries: SelectedLibraryVersion[], dirPath?: string): string[] {
|
||||
let ldpath = super.getSharedLibraryPaths(libraries, dirPath);
|
||||
const toolroot = path.resolve(path.dirname(this.compiler.exe), '..');
|
||||
ldpath = ldpath.concat(path.join(toolroot, 'lib'));
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
import _ from 'underscore';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {unwrap} from '../assert.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
@@ -53,7 +53,7 @@ export class SnowballCompiler extends BaseCompiler {
|
||||
this.linker = this.compilerProps<string>('linker');
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -24,11 +24,12 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import type {CompileChildLibraries, ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import {LLVMIrBackendOptions} from '../../types/compilation/ir.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {ResultLine} from '../../types/resultline/resultline.interfaces.js';
|
||||
import {unwrap} from '../assert.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
@@ -60,7 +61,7 @@ export class SPIRVCompiler extends BaseCompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
let options = this.optionsForFilter(filters, outputFilename);
|
||||
|
||||
@@ -22,9 +22,9 @@
|
||||
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
// POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
@@ -53,7 +53,7 @@ export class ToitCompiler extends BaseCompiler {
|
||||
return [outputFilename];
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
override getArgumentParserClass() {
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {logger} from '../logger.js';
|
||||
|
||||
import {TurboCParser} from './argument-parsers.js';
|
||||
@@ -39,7 +39,7 @@ export class TurboCCompiler extends DosboxCompiler {
|
||||
return ['-B'];
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -24,12 +24,9 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {
|
||||
CompilationResult,
|
||||
CompileChildLibraries,
|
||||
ExecutionOptionsWithEnv,
|
||||
} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {CompilationResult, ExecutionOptionsWithEnv} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {unwrap} from '../assert.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
|
||||
@@ -85,7 +82,7 @@ export class VCompiler extends BaseCompiler {
|
||||
}
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath?: string) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[], libDownloadPath?: string) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,9 @@
|
||||
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
|
||||
@@ -97,7 +97,10 @@ export class ValaCompiler extends BaseCompiler {
|
||||
return objdumpResult;
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[], libDownloadPath: string | undefined) {
|
||||
override getSharedLibraryPathsAsArguments(
|
||||
libraries: SelectedLibraryVersion[],
|
||||
libDownloadPath: string | undefined,
|
||||
) {
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
@@ -26,14 +26,11 @@ import path from 'path';
|
||||
|
||||
import _ from 'underscore';
|
||||
|
||||
import type {
|
||||
CacheKey,
|
||||
CompileChildLibraries,
|
||||
ExecutionOptions,
|
||||
} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {CacheKey, ExecutionOptions} from '../../types/compilation/compilation.interfaces.js';
|
||||
import type {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import type {PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import type {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {unwrap} from '../assert.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
@@ -67,7 +64,7 @@ export class Win32Compiler extends BaseCompiler {
|
||||
return this.getExecutableFilename(path.dirname(defaultOutputFilename), 'output');
|
||||
}
|
||||
|
||||
override getSharedLibraryPathsAsArguments(libraries: CompileChildLibraries[]) {
|
||||
override getSharedLibraryPathsAsArguments(libraries: SelectedLibraryVersion[]) {
|
||||
const libPathFlag = this.compiler.libpathFlag || '/LIBPATH:';
|
||||
|
||||
return this.getSharedLibraryPaths(libraries).map(path => libPathFlag + path);
|
||||
@@ -85,7 +82,7 @@ export class Win32Compiler extends BaseCompiler {
|
||||
);
|
||||
}
|
||||
|
||||
override getStaticLibraryLinks(libraries: CompileChildLibraries[]) {
|
||||
override getStaticLibraryLinks(libraries: SelectedLibraryVersion[]) {
|
||||
return super.getSortedStaticLibraries(libraries).map(lib => {
|
||||
return '"' + lib + '.lib"';
|
||||
});
|
||||
@@ -97,7 +94,7 @@ export class Win32Compiler extends BaseCompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
let options = this.optionsForFilter(filters, outputFilename, userOptions);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import path from 'path';
|
||||
|
||||
import {CompileChildLibraries} from '../../types/compilation/compilation.interfaces.js';
|
||||
import {ConfiguredOverrides} from '../../types/compilation/compiler-overrides.interfaces.js';
|
||||
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {unwrap} from '../assert.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import * as utils from '../utils.js';
|
||||
@@ -28,7 +28,7 @@ export class YLCCompiler extends BaseCompiler {
|
||||
backendOptions: Record<string, any>,
|
||||
inputFilename: string,
|
||||
outputFilename: string,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
overrides: ConfiguredOverrides,
|
||||
) {
|
||||
let options = this.optionsForFilter(filters, outputFilename, userOptions);
|
||||
|
||||
@@ -39,7 +39,6 @@ import {remove} from '../../shared/common-utils.js';
|
||||
import {
|
||||
ActiveTool,
|
||||
BypassCache,
|
||||
CompileChildLibraries,
|
||||
ExecutionParams,
|
||||
FiledataPair,
|
||||
} from '../../types/compilation/compilation.interfaces.js';
|
||||
@@ -47,6 +46,7 @@ import {CompilerOverrideOptions} from '../../types/compilation/compiler-override
|
||||
import {CompilerInfo, PreliminaryCompilerInfo} from '../../types/compiler.interfaces.js';
|
||||
import {ParseFiltersAndOutputOptions} from '../../types/features/filters.interfaces.js';
|
||||
import {LanguageKey} from '../../types/languages.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../../types/libraries/libraries.interfaces.js';
|
||||
import {ResultLine} from '../../types/resultline/resultline.interfaces.js';
|
||||
import {BaseCompiler} from '../base-compiler.js';
|
||||
import {CompilationEnvironment} from '../compilation-env.js';
|
||||
@@ -103,7 +103,7 @@ export type ParsedRequest = {
|
||||
bypassCache: BypassCache;
|
||||
tools: ActiveTool[];
|
||||
executeParameters: ExecutionParams;
|
||||
libraries: CompileChildLibraries[];
|
||||
libraries: SelectedLibraryVersion[];
|
||||
};
|
||||
|
||||
export class CompileHandler implements ICompileHandler {
|
||||
|
||||
@@ -25,8 +25,9 @@
|
||||
import {StorageClass} from '@aws-sdk/client-s3';
|
||||
import ems from 'enhanced-ms';
|
||||
|
||||
import {CompileChildLibraries, FiledataPair} from '../types/compilation/compilation.interfaces.js';
|
||||
import {FiledataPair} from '../types/compilation/compilation.interfaces.js';
|
||||
import {ConfiguredRuntimeTool} from '../types/execution/execution.interfaces.js';
|
||||
import {SelectedLibraryVersion} from '../types/libraries/libraries.interfaces.js';
|
||||
|
||||
import {ParsedRequest} from './handlers/compile.js';
|
||||
import {logger} from './logger.js';
|
||||
@@ -100,7 +101,7 @@ export function makeSafe(
|
||||
),
|
||||
).map(item => `${item[0]}=${item[1] ? '1' : '0'}`),
|
||||
bypassCache: !!request.bypassCache,
|
||||
libraries: (request.libraries || []).map((lib: CompileChildLibraries) => lib.id + '/' + lib.version),
|
||||
libraries: (request.libraries || []).map((lib: SelectedLibraryVersion) => lib.id + '/' + lib.version),
|
||||
tools: (request.tools || []).map(tool => tool.id),
|
||||
overrides: (request.backendOptions.overrides || [])
|
||||
.filter(item => item.name !== 'env' && item.value)
|
||||
|
||||
@@ -44,6 +44,7 @@ import {Lib} from '../widgets/libs-widget.interfaces.js';
|
||||
import {SourceAndFiles} from '../download-service.js';
|
||||
import {escapeHTML, unique} from '../../shared/common-utils.js';
|
||||
import {unwrapString} from '../assert.js';
|
||||
import {SelectedLibraryVersion} from '../libraries/libraries.interfaces.js';
|
||||
|
||||
type CompilerEntry = {
|
||||
parent: JQuery<HTMLElement>;
|
||||
@@ -53,11 +54,6 @@ type CompilerEntry = {
|
||||
prependOptions: JQuery<HTMLElement> | null;
|
||||
};
|
||||
|
||||
type CompileChildLibraries = {
|
||||
id: string;
|
||||
version: string;
|
||||
};
|
||||
|
||||
type AddCompilerPickerConfig = {
|
||||
compilerId: string;
|
||||
options: string | number | string[];
|
||||
@@ -409,7 +405,7 @@ export class Conformance extends Pane<ConformanceViewState> {
|
||||
userArguments: compilerEntry.optionsField.val() || '',
|
||||
filters: {},
|
||||
compilerOptions: {produceAst: false, produceOptInfo: false, skipAsm: true},
|
||||
libraries: [] as CompileChildLibraries[],
|
||||
libraries: [] as SelectedLibraryVersion[],
|
||||
},
|
||||
lang: this.langId,
|
||||
files: expanded.files,
|
||||
|
||||
@@ -33,6 +33,7 @@ import {CompilerInfo} from '../compiler.interfaces.js';
|
||||
import {BasicExecutionResult, ConfiguredRuntimeTools} from '../execution/execution.interfaces.js';
|
||||
import {ParseFiltersAndOutputOptions} from '../features/filters.interfaces.js';
|
||||
import {InstructionSet} from '../instructionsets.js';
|
||||
import {SelectedLibraryVersion} from '../libraries/libraries.interfaces.js';
|
||||
import {ResultLine} from '../resultline/resultline.interfaces.js';
|
||||
import {Artifact, ToolResult} from '../tool.interfaces.js';
|
||||
|
||||
@@ -53,13 +54,8 @@ export type ExecutionParams = {
|
||||
runtimeTools?: ConfiguredRuntimeTools;
|
||||
};
|
||||
|
||||
export type CompileChildLibraries = {
|
||||
id: string;
|
||||
version: string;
|
||||
};
|
||||
|
||||
export type LibsAndOptions = {
|
||||
libraries: CompileChildLibraries[];
|
||||
libraries: SelectedLibraryVersion[];
|
||||
options: string[];
|
||||
};
|
||||
|
||||
@@ -116,7 +112,7 @@ export type CompilationRequestOptions = {
|
||||
executeParameters: ExecutionParams;
|
||||
filters: ParseFiltersAndOutputOptions;
|
||||
tools: ActiveTool[];
|
||||
libraries: CompileChildLibraries[];
|
||||
libraries: SelectedLibraryVersion[];
|
||||
};
|
||||
|
||||
// Carefully chosen for backwards compatibility
|
||||
@@ -286,7 +282,7 @@ export type SingleFileCacheKey = {
|
||||
backendOptions: any;
|
||||
filters?: any;
|
||||
tools: any[];
|
||||
libraries: any[];
|
||||
libraries: SelectedLibraryVersion[];
|
||||
files: any[];
|
||||
};
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ import {
|
||||
ActiveTool,
|
||||
BypassCache,
|
||||
CompilationResult,
|
||||
CompileChildLibraries,
|
||||
ExecutionParams,
|
||||
FiledataPair,
|
||||
} from './compilation/compilation.interfaces.js';
|
||||
@@ -36,7 +35,7 @@ import {PossibleRuntimeTools} from './execution/execution.interfaces.js';
|
||||
import {ParseFiltersAndOutputOptions} from './features/filters.interfaces.js';
|
||||
import {InstructionSet} from './instructionsets.js';
|
||||
import {Language, LanguageKey} from './languages.interfaces.js';
|
||||
import {Library} from './libraries/libraries.interfaces.js';
|
||||
import {Library, SelectedLibraryVersion} from './libraries/libraries.interfaces.js';
|
||||
import {Tool, ToolInfo} from './tool.interfaces.js';
|
||||
|
||||
export type Remote = {
|
||||
@@ -180,7 +179,7 @@ export interface ICompiler {
|
||||
bypassCache: BypassCache,
|
||||
tools: ActiveTool[],
|
||||
executeParameters: ExecutionParams,
|
||||
libraries: CompileChildLibraries[],
|
||||
libraries: SelectedLibraryVersion[],
|
||||
files: FiledataPair[],
|
||||
): Promise<any>;
|
||||
cmake(files: FiledataPair[], key, bypassCache: BypassCache): Promise<CompilationResult>;
|
||||
|
||||
Reference in New Issue
Block a user