aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers')
-rw-r--r--lib/compilers/argument-parsers.js37
1 files changed, 18 insertions, 19 deletions
diff --git a/lib/compilers/argument-parsers.js b/lib/compilers/argument-parsers.js
index 2ff065a59..1047677ce 100644
--- a/lib/compilers/argument-parsers.js
+++ b/lib/compilers/argument-parsers.js
@@ -24,7 +24,7 @@
import _ from 'underscore';
-import { logger } from '../logger';
+import {logger} from '../logger';
import * as utils from '../utils';
export class BaseParser {
@@ -39,14 +39,13 @@ export class BaseParser {
utils.eachLine(stdout, line => {
const match = line.match(optionRegex);
if (!match) {
- if (previousOption && (line.trim().length > 0)) {
+ if (previousOption && line.trim().length > 0) {
if (options[previousOption].description.endsWith('-'))
options[previousOption].description += line.trim();
else {
if (options[previousOption].description.length > 0)
options[previousOption].description += ' ' + line.trim();
- else
- options[previousOption].description = line.trim();
+ else options[previousOption].description = line.trim();
}
} else {
previousOption = false;
@@ -69,8 +68,7 @@ export class BaseParser {
static async getOptions(compiler, helpArg) {
const optionFinder = /^\s*(--?[\d+,<=>[\]a-z|-]*)\s*(.*)/i;
const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]);
- const options = result.code === 0
- ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {};
+ const options = result.code === 0 ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {};
compiler.possibleArguments.populateOptions(options);
return options;
}
@@ -86,8 +84,11 @@ export class GCCParser extends BaseParser {
logger.debug(`gcc-like compiler options: ${keys.join(' ')}`);
if (BaseParser.hasSupport(options, '-masm=')) {
// -masm= may be available but unsupported by the compiler.
- const res = await compiler.execCompilerCached(compiler.compiler.exe,
- ['-fsyntax-only', '--target-help', '-masm=intel']);
+ const res = await compiler.execCompilerCached(compiler.compiler.exe, [
+ '-fsyntax-only',
+ '--target-help',
+ '-masm=intel',
+ ]);
if (res.code === 0) {
compiler.compiler.intelAsm = '-masm=intel';
compiler.compiler.supportsIntel = true;
@@ -110,8 +111,10 @@ export class GCCParser extends BaseParser {
static async parse(compiler) {
const results = await Promise.all([
+ GCCParser.getOptions(compiler, '-fsyntax-only --help'),
GCCParser.getOptions(compiler, '-fsyntax-only --target-help'),
GCCParser.getOptions(compiler, '-fsyntax-only --help=common'),
+ GCCParser.getOptions(compiler, '-fsyntax-only --help=warnings'),
GCCParser.getOptions(compiler, '-fsyntax-only --help=optimizers'),
]);
const options = Object.assign({}, ...results);
@@ -122,8 +125,7 @@ export class GCCParser extends BaseParser {
static async getOptions(compiler, helpArg) {
const optionFinder = /^\s*(--?[\d+,<=>[\]a-z|-]*)\s*(.*)/i;
const result = await compiler.execCompilerCached(compiler.compiler.exe, helpArg.split(' '));
- const options = result.code === 0
- ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {};
+ const options = result.code === 0 ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {};
compiler.possibleArguments.populateOptions(options);
return options;
}
@@ -188,8 +190,7 @@ export class ISPCParser extends BaseParser {
static async getOptions(compiler, helpArg) {
const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]);
const optionFinder = /^\s*\[(--?[\d\s()+,/<=>a-z{|}-]*)]\s*(.*)/i;
- const options = result.code === 0
- ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {};
+ const options = result.code === 0 ? BaseParser.parseLines(result.stdout + result.stderr, optionFinder) : {};
compiler.possibleArguments.populateOptions(options);
return options;
}
@@ -226,19 +227,18 @@ export class VCParser extends BaseParser {
let previousOption = false;
let options = {};
- const matchLine = (line) => {
+ const matchLine = line => {
if (line.startsWith('/?')) return;
const match = line.match(optionRegex);
if (!match) {
- if (previousOption && (line.trim().length > 0)) {
+ if (previousOption && line.trim().length > 0) {
if (options[previousOption].description.endsWith(':'))
options[previousOption].description += ' ' + line.trim();
else {
if (options[previousOption].description.length > 0)
options[previousOption].description += ', ' + line.trim();
- else
- options[previousOption].description = line.trim();
+ else options[previousOption].description = line.trim();
}
} else {
previousOption = false;
@@ -262,7 +262,7 @@ export class VCParser extends BaseParser {
let col1;
let col2;
- if ((line.length > 39) && (line[40] === '/')) {
+ if (line.length > 39 && line[40] === '/') {
col1 = line.substr(0, 39);
col2 = line.substr(40);
} else {
@@ -280,8 +280,7 @@ export class VCParser extends BaseParser {
static async getOptions(compiler, helpArg) {
const result = await compiler.execCompilerCached(compiler.compiler.exe, [helpArg]);
const optionFinder = /^\s*(\/[\w#+,.:<=>[\]{|}-]*)\s*(.*)/i;
- const options = result.code === 0
- ? this.parseLines(result.stdout, optionFinder) : {};
+ const options = result.code === 0 ? this.parseLines(result.stdout, optionFinder) : {};
compiler.possibleArguments.populateOptions(options);
return options;
}