aboutsummaryrefslogtreecommitdiff
path: root/lib/compilers/argument-parsers.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/compilers/argument-parsers.js')
-rw-r--r--lib/compilers/argument-parsers.js29
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
};