diff options
author | Patrick Quist <partouf@gmail.com> | 2021-10-15 18:22:33 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-15 18:22:33 +0200 |
commit | 1ca884c3670f5a12d2918fc1849e25d4570136f7 (patch) | |
tree | 83e27effdd48eab51898b297b3185813e5a38dd8 /lib/compilers/argument-parsers.js | |
parent | 60217a8e61269df7aab0220ed754f19846f6cd71 (diff) | |
download | compiler-explorer-1ca884c3670f5a12d2918fc1849e25d4570136f7.tar.gz compiler-explorer-1ca884c3670f5a12d2918fc1849e25d4570136f7.zip |
Seperate compiler finding process (#3022)gh-1168
Diffstat (limited to 'lib/compilers/argument-parsers.js')
-rw-r--r-- | lib/compilers/argument-parsers.js | 46 |
1 files changed, 31 insertions, 15 deletions
diff --git a/lib/compilers/argument-parsers.js b/lib/compilers/argument-parsers.js index a7fd8d822..6c05a4d12 100644 --- a/lib/compilers/argument-parsers.js +++ b/lib/compilers/argument-parsers.js @@ -81,13 +81,7 @@ export class BaseParser { } export class GCCParser extends BaseParser { - static async parse(compiler) { - const results = await Promise.all([ - GCCParser.getOptions(compiler, '-fsyntax-only --target-help'), - GCCParser.getOptions(compiler, '-fsyntax-only --help=common'), - GCCParser.getOptions(compiler, '-fsyntax-only --help=optimizers'), - ]); - const options = Object.assign({}, ...results); + static async setCompilerSettingsFromOptions(compiler, options) { const keys = _.keys(options); logger.debug(`gcc-like compiler options: ${keys.join(' ')}`); if (BaseParser.hasSupport(options, '-masm=')) { @@ -107,6 +101,16 @@ export class GCCParser extends BaseParser { if (_.find(keys, key => key.startsWith('-fdump-'))) { compiler.compiler.supportsGccDump = true; } + } + + static async parse(compiler) { + const results = await Promise.all([ + GCCParser.getOptions(compiler, '-fsyntax-only --target-help'), + GCCParser.getOptions(compiler, '-fsyntax-only --help=common'), + GCCParser.getOptions(compiler, '-fsyntax-only --help=optimizers'), + ]); + const options = Object.assign({}, ...results); + this.setCompilerSettingsFromOptions(compiler, options); return compiler; } @@ -121,8 +125,7 @@ export class GCCParser extends BaseParser { } export class ClangParser extends BaseParser { - static async parse(compiler) { - const options = await ClangParser.getOptions(compiler, '--help'); + static async setCompilerSettingsFromOptions(compiler, options) { logger.debug(`clang-like compiler options: ${_.keys(options).join(' ')}`); if (BaseParser.hasSupport(options, '-fsave-optimization-record')) { compiler.compiler.optArg = '-fsave-optimization-record'; @@ -140,6 +143,11 @@ export class ClangParser extends BaseParser { if (compiler.compiler.options) compiler.compiler.options += ' '; compiler.compiler.options += '-fno-crash-diagnostics'; } + } + + static async parse(compiler) { + const options = await ClangParser.getOptions(compiler, '--help'); + this.setCompilerSettingsFromOptions(compiler, options); return compiler; } } @@ -152,12 +160,16 @@ export class PascalParser extends BaseParser { } export class ISPCParser extends BaseParser { - static async parse(compiler) { - const options = await ISPCParser.getOptions(compiler, '--help'); + static async setCompilerSettingsFromOptions(compiler, options) { if (BaseParser.hasSupport(options, '--x86-asm-syntax')) { compiler.compiler.intelAsm = '--x86-asm-syntax=intel'; compiler.compiler.supportsIntel = true; } + } + + static async parse(compiler) { + const options = await ISPCParser.getOptions(compiler, '--help'); + this.setCompilerSettingsFromOptions(compiler, options); return compiler; } @@ -264,6 +276,13 @@ export class VCParser extends BaseParser { } export class RustParser extends BaseParser { + static async setCompilerSettingsFromOptions(compiler, options) { + if (BaseParser.hasSupport(options, '--color')) { + if (compiler.compiler.options) compiler.compiler.options += ' '; + compiler.compiler.options += '--color=always'; + } + } + static async parse(compiler) { const results = await Promise.all([ RustParser.getOptions(compiler, '--help'), @@ -271,10 +290,7 @@ export class RustParser extends BaseParser { RustParser.getOptions(compiler, '--help -v'), ]); const options = Object.assign({}, ...results); - if (BaseParser.hasSupport(options, '--color')) { - if (compiler.compiler.options) compiler.compiler.options += ' '; - compiler.compiler.options += '--color=always'; - } + this.setCompilerSettingsFromOptions(compiler, options); return compiler; } |