diff options
Diffstat (limited to 'lib/compilers')
-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; } |