diff --git a/app.js b/app.js index 831c91e3..0fc90944 100755 --- a/app.js +++ b/app.js @@ -142,6 +142,7 @@ function clientOptionsHandler(compilers, fileSources) { compilers: compilers, defaultCompiler: compilerProps('defaultCompiler', ''), compileOptions: compilerProps("options"), + supportsBinary: !!compilerProps("supportsBinary"), sources: sources }; var text = "var OPTIONS = " + JSON.stringify(options) + ";"; @@ -270,8 +271,7 @@ function configuredCompilers() { alias: compilerProps(base + ".alias"), versionFlag: compilerProps(base + ".versionFlag"), is6g: !!compilerProps(base + ".is6g", false), - intelAsm: compilerProps(base + ".intelAsm", ""), - supportsBinary: !!compilerProps(base + ".supportsBinary", false) + intelAsm: compilerProps(base + ".intelAsm", "") }); })); } diff --git a/etc/config/c++.defaults.properties b/etc/config/c++.defaults.properties index ef127601..029c842e 100644 --- a/etc/config/c++.defaults.properties +++ b/etc/config/c++.defaults.properties @@ -4,6 +4,7 @@ compileFilename=example.cpp postProcess=c++filt #androidNdk=/opt/google/android-ndk-r9c options=-O2 +supportsBinary=true binaryHideFuncRe=^(_.*|(de)?register_tm_clones|frame_dummy)$ stubRe=\bmain\b stubText=int main(int,char**){/*stub provided by Compiler Explorer*/} diff --git a/etc/config/d.defaults.properties b/etc/config/d.defaults.properties index d646205f..3a91328d 100644 --- a/etc/config/d.defaults.properties +++ b/etc/config/d.defaults.properties @@ -1,3 +1,4 @@ compilers=/usr/bin/gdc:/usr/bin/gdc-4.4:/usr/bin/gdc-4.6 compileFilename=example.d postProcess=d/demangle +supportsBinary=false diff --git a/etc/config/go.defaults.properties b/etc/config/go.defaults.properties index 714a7824..d42ad193 100644 --- a/etc/config/go.defaults.properties +++ b/etc/config/go.defaults.properties @@ -1,4 +1,5 @@ compileFilename=file.go +supportsBinary=true binaryHideFuncRe=^(_.*|(de)?register_tm_clones|frame_dummy|.*@plt)$ stubRe=\bfunc\s+main\b stubText=func main() {/*stub provided by Compiler Explorer*/} diff --git a/etc/config/rust.defaults.properties b/etc/config/rust.defaults.properties index 2db38963..ab9debd9 100644 --- a/etc/config/rust.defaults.properties +++ b/etc/config/rust.defaults.properties @@ -2,6 +2,7 @@ compilers=/usr/local/bin/rustc options=-O --crate-type staticlib compileFilename=example.rs compileToAsm=--emit asm --crate-type staticlib +supportsBinary=true stubRe=\bmain\b stubText=pub fn main() {/*stub provided by Compiler Explorer*/} binaryHideFuncRe=^(_.*|(de)?register_tm_clones|frame_dummy|.*@plt.*)$ \ No newline at end of file diff --git a/static/compiler.js b/static/compiler.js index 89138de2..1cdc9db6 100644 --- a/static/compiler.js +++ b/static/compiler.js @@ -43,6 +43,12 @@ function clearBackground(cm) { } } +function patchUpFilters(filters) { + if (!OPTIONS.supportsBinary && filters.binary) + filters.binary = false; + return filters; +} + const NumRainbowColours = 12; function Compiler(domRoot, origFilters, windowLocalPrefix, onChangeCallback, lang) { @@ -53,7 +59,7 @@ function Compiler(domRoot, origFilters, windowLocalPrefix, onChangeCallback, lan var cppEditor = null; var lastRequest = null; var currentAssembly = null; - var filters = origFilters; + var filters = patchUpFilters(origFilters); var ignoreChanges = true; // Horrible hack to avoid onChange doing anything on first starting, ie before we've set anything up. var cmMode; @@ -343,7 +349,7 @@ function Compiler(domRoot, origFilters, windowLocalPrefix, onChangeCallback, lan var compiler = compilersById[$('.compiler').val()]; if (compiler === undefined) return; - var supportsIntel = compiler.asm || filters.binary; // TODO: separate binary so it has its own buttons and then this problem goes away + var supportsIntel = compiler.asm || (filters.binary); // TODO: separate binary so it has its own buttons and then this problem goes away domRoot.find('.filter button.btn[value="intel"]').toggleClass("disabled", !supportsIntel); $(".compilerVersion").text(compiler.name + " (" + compiler.version + ")"); } @@ -376,7 +382,7 @@ function Compiler(domRoot, origFilters, windowLocalPrefix, onChangeCallback, lan } function setFilters(f) { - filters = f; + filters = patchUpFilters(f); onChange(); } diff --git a/static/index.html b/static/index.html index 3768f61c..82cc349f 100644 --- a/static/index.html +++ b/static/index.html @@ -115,12 +115,12 @@
Filter: |
+
-
|