aboutsummaryrefslogtreecommitdiffstats
path: root/compiler-explorer
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-explorer')
-rw-r--r--compiler-explorer/ceconfig.json14
-rw-r--r--compiler-explorer/index.js21
-rw-r--r--compiler-explorer/main.js45
-rw-r--r--compiler-explorer/package.json14
4 files changed, 94 insertions, 0 deletions
diff --git a/compiler-explorer/ceconfig.json b/compiler-explorer/ceconfig.json
new file mode 100644
index 0000000..386a2cc
--- /dev/null
+++ b/compiler-explorer/ceconfig.json
@@ -0,0 +1,14 @@
+{"userArguments":"-O3",
+ "filters":{
+ "binary":false,
+ "commentOnly":true,
+ "demangle":true,
+ "directives":true,
+ "execute":false,
+ "intel":true,
+ "labels":true,
+ "lables":true,
+ "libraryCode":false,
+ "trim":false
+ }
+}
diff --git a/compiler-explorer/index.js b/compiler-explorer/index.js
new file mode 100644
index 0000000..fae05b7
--- /dev/null
+++ b/compiler-explorer/index.js
@@ -0,0 +1,21 @@
+
+const fetch = require('node-fetch')
+const fs = require("fs")
+const util = require("util")
+const readFile = util.promisify(fs.readFile)
+
+async function JSON_POST_req(data,options) {
+ var dummy = {"source": data.toString(), "options":"{}"}
+ return await {method:"POST", body:JSON.stringify(dummy), headers:{"Content-Type":"application/json"}}
+}
+
+function compiler_explorer(data, options) {
+ JSON_POST_req(data, options).then(post_arg=>
+ fetch("https://godbolt.org/api/compiler/g92/compile?options=-O3", post_arg)).then(res=>
+ res.text()).then(body=>
+ console.log(body.split("\n").slice(1,body.split("\n").length).join("\n"))).catch(error=>
+ console.log(error))
+}
+
+const config = JSON.parse(fs.readFileSync("./ceconfig.json"))
+compiler_explorer(process.argv[2], config)
diff --git a/compiler-explorer/main.js b/compiler-explorer/main.js
new file mode 100644
index 0000000..1b142c3
--- /dev/null
+++ b/compiler-explorer/main.js
@@ -0,0 +1,45 @@
+
+const fetch = require('node-fetch')
+const fs = require("fs")
+const util = require("util")
+const readFile = util.promisify(fs.readFile)
+const path = require("path")
+const defaultOpts = {
+"userArguments":"-O3", "filters":
+ {"binary":false,
+ "commentOnly":true,
+ "demangle":true,
+ "directives":true,
+ "execute":false,
+ "intel":true,
+ "labels":true,
+ "lables":true,
+ "libraryCode":false,
+ "trim":false
+ }
+}
+
+async function read_C_source(path) {
+ return await readFile(path, "utf-8")
+}
+
+function JSON_POST_req(data, options) {
+ const config = fs.readFileSync(options, "utf-8")
+ var dummy = {"source": data, "options": JSON.parse(config)}
+ /* if no config found, then run default
+ var dummy = {"source": data, "options": defaultOpts}
+ */
+ return {method:"POST", body:JSON.stringify(dummy), headers:{"Content-Type":"application/json"}}
+}
+
+function compiler_explorer(path, options) {
+ read_C_source(path).then(data=>
+ JSON_POST_req(data, options)).then(post_arg=>
+ fetch("https://godbolt.org/api/compiler/g92/compile", post_arg)).then(res=>
+ res.text()).then(body=>
+ console.log(body.split("\n").slice(1,body.split("\n").length).join("\n"))).catch(error=>
+ console.log(error))
+}
+
+if (process.argv.length < 3) {console.log("you did not specify enough args. needs two. path to source code and path to options to pass to compiler explorer.")}
+else {compiler_explorer(process.argv[2], process.argv[3])}
diff --git a/compiler-explorer/package.json b/compiler-explorer/package.json
new file mode 100644
index 0000000..1b60c79
--- /dev/null
+++ b/compiler-explorer/package.json
@@ -0,0 +1,14 @@
+{
+ "name": "compiler-explorer",
+ "version": "1.0.0",
+ "description": "",
+ "main": "main.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "Farzad Sadeghi",
+ "license": "GPL-3.0-or-later",
+ "dependencies": {
+ "node-fetch": ">=2.1.2"
+ }
+}