diff options
Diffstat (limited to 'lib/compilers/argument-parsers.js')
-rw-r--r-- | lib/compilers/argument-parsers.js | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/lib/compilers/argument-parsers.js b/lib/compilers/argument-parsers.js index 78f868ef1..e98b8be3b 100644 --- a/lib/compilers/argument-parsers.js +++ b/lib/compilers/argument-parsers.js @@ -127,6 +127,31 @@ class ClangParser extends BaseParser { } } +class PascalParser extends BaseParser { + static parse(compiler) { + return PascalParser.getOptions(compiler, "-help"); + } +} + +class ISPCParser extends BaseParser { + static parse(compiler) { + return ISPCParser.getOptions(compiler, "--help"); + } + + static getOptions(compiler, helpArg) { + return compiler.exec(compiler.compiler.exe, [helpArg]).then(result => { + let options = {}; + if (result.code === 0) { + const optionFinder = /^\s*\[(--?[a-z0-9=+,{}\s[\]<>|-]*)\]\s*(.*)/i; + + options = BaseParser.parseLines(result.stdout + result.stderr, optionFinder); + } + compiler.possibleArguments.populateOptions(options); + return options; + }); + } +} + class VCParser extends BaseParser { static parse(compiler) { return Promise.all([ @@ -209,5 +234,7 @@ module.exports = { Base: BaseParser, Clang: ClangParser, GCC: GCCParser, - VC: VCParser + VC: VCParser, + Pascal: PascalParser, + ISPC: ISPCParser }; |