diff --git a/app.js b/app.js index 809bc030..9989b2c8 100755 --- a/app.js +++ b/app.js @@ -146,7 +146,8 @@ function compile(req, res) { if (filters["intel"] == "true") syntax = '-masm=intel'; options = options.concat([syntax]); } - options = options.concat(['-g', '-o', outputFilename, '-S', inputFilename]); + var compileToAsm = props.get("gcc-explorer", "compileToAsm", "-S").split(" "); + options = options.concat(['-g', '-o', outputFilename]).concat(compileToAsm).concat([inputFilename]); var file = fs.openSync(inputFilename, "w"); fs.writeSync(file, source); fs.closeSync(file); diff --git a/etc/config/builtin.rust.properties b/etc/config/builtin.rust.properties new file mode 100644 index 00000000..c61faaa7 --- /dev/null +++ b/etc/config/builtin.rust.properties @@ -0,0 +1,2 @@ +sourcepath=./examples/rust/ +extensionRe=.*\.rs$ diff --git a/etc/config/gcc-explorer.lud-ldnmg01.properties b/etc/config/gcc-explorer.lud-ldnmg01.properties index f42e987b..7e8c3f3b 100644 --- a/etc/config/gcc-explorer.lud-ldnmg01.properties +++ b/etc/config/gcc-explorer.lud-ldnmg01.properties @@ -1,7 +1,7 @@ # Default settings for GCC Explorer. -port=10240 +#port=10240 compileTimeoutMs=5000 -compilers=/usr/bin/g++-4.4:/usr/bin/g++-4.5:/usr/bin/g++-4.6:/usr/bin/g++-4.7:/usr/bin/clang++:/home/mgodbolt/apps/intel-icc-oss/bin/icc:/site/apps/gcc-4.7.2-drw.patched.6/bin/g++:/site/apps/gcc-4.8.0-drw.1/bin/g++ +#compilers=/usr/bin/g++-4.4:/usr/bin/g++-4.5:/usr/bin/g++-4.6:/usr/bin/g++-4.7:/usr/bin/clang++:/home/mgodbolt/apps/intel-icc-oss/bin/icc:/site/apps/gcc-4.7.2-drw.patched.6/bin/g++:/site/apps/gcc-4.8.0-drw.1/bin/g++ #compiler-wrapper=./c-preload/compiler-wrapper #compilers=/usr/bin/gdc:/usr/bin/gdc-4.4:/usr/bin/gdc-4.6 #compileFilename=example.d diff --git a/etc/config/gcc-explorer.rust.properties b/etc/config/gcc-explorer.rust.properties new file mode 100644 index 00000000..9f5d9c64 --- /dev/null +++ b/etc/config/gcc-explorer.rust.properties @@ -0,0 +1,8 @@ +port=10242 +compileTimeoutMs=1500 +compilers=/usr/local/bin/rustc +compileFilename=example.rs +compileToAsm=--emit asm --crate-type staticlib +#compiler-wrapper=./c-preload/compiler-wrapper +#max-asm-size=262144 +#cacheMb=100 diff --git a/examples/max_array.cpp b/examples/c++/max_array.cpp similarity index 100% rename from examples/max_array.cpp rename to examples/c++/max_array.cpp diff --git a/examples/max_array_opt.cpp b/examples/c++/max_array_opt.cpp similarity index 100% rename from examples/max_array_opt.cpp rename to examples/c++/max_array_opt.cpp diff --git a/examples/sum_over_array.cpp b/examples/c++/sum_over_array.cpp similarity index 100% rename from examples/sum_over_array.cpp rename to examples/c++/sum_over_array.cpp diff --git a/examples/sum_over_array_opt.cpp b/examples/c++/sum_over_array_opt.cpp similarity index 100% rename from examples/sum_over_array_opt.cpp rename to examples/c++/sum_over_array_opt.cpp diff --git a/examples/rust/max_array.rs b/examples/rust/max_array.rs new file mode 100644 index 00000000..990e8bd7 --- /dev/null +++ b/examples/rust/max_array.rs @@ -0,0 +1,7 @@ +pub fn maxArray(x: &mut[int, ..65536], y: &[int, ..65536]) { + for i in range(0u, 65536) { + if y[i] > x[i] { + x[i] = y[i]; + } + } +} diff --git a/lib/properties.js b/lib/properties.js index 8b2f0c04..415341e4 100644 --- a/lib/properties.js +++ b/lib/properties.js @@ -34,7 +34,7 @@ function findProps(base, elem) { } function debug(string) { - //console.log("prop: " + string); + console.log("prop: " + string); } function get(base, property, defaultValue) { diff --git a/lib/sources/builtin.js b/lib/sources/builtin.js index bb39770d..f830eb37 100644 --- a/lib/sources/builtin.js +++ b/lib/sources/builtin.js @@ -4,9 +4,10 @@ var props = require('../properties.js'), path = require('path'), fs = require('fs'); -var sourcePath = props.get('builtin', 'sourcepath', './examples'); +var sourcePath = props.get('builtin', 'sourcepath', './examples/c++'); +var sourceMatch = new RegExp(props.get('builtin', 'extensionRe', '.*\.cpp$')); var examples = fs.readdirSync(sourcePath) - .filter(function(file) { return file.match(/.*\.cpp$/); }) + .filter(function(file) { return file.match(sourceMatch); }) .map(function(file) { var nicename = file.replace(/\.cpp$/, ''); return { urlpart: nicename, name: nicename.replace(/_/g, ' '), path: path.join(sourcePath, file) };