Attempt at fixing multiarch. Should fix #102

dev/git-series/gccdum
Matt Godbolt 7 years ago
parent 1d028a990f
commit 77756b6a69

@ -242,6 +242,7 @@ function configuredCompilers() {
versionFlag: props("versionFlag"),
is6g: !!props("is6g", false),
intelAsm: props("intelAsm", ""),
needsMulti: !!props("needsMulti", true),
supportsBinary: !!props("supportsBinary", true)
});
}));

@ -37,6 +37,7 @@ compiler.clang371.intelAsm=-masm=intel
compiler.ppcg48.exe=/usr/bin/powerpc-linux-gnu-g++-4.8
compiler.ppcg48.name=PowerPC gcc 4.8
compiler.ppcg48.supportsBinary=false
compiler.ppcg48.needsMulti=false
###############################
# GCC for ARM
@ -46,3 +47,5 @@ compiler.armhfg482.exe=/usr/bin/arm-linux-gnueabihf-g++
compiler.armhfg482.name=ARM gcc 4.8.2
compiler.armhfg482.supportsBinary=false
compiler.aarchg48.supportsBinary=false
compiler.armhfg482.needsMulti=false
compiler.aarchg48.needsMulti=false

@ -62,10 +62,12 @@ compiler.armg453.exe=/usr/bin/arm-linux-gnueabi-g++-4.5
compiler.armg453.alias=/usr/bin/arm-linux-gnueabi-g++-4.5
compiler.armg453.name=ARM gcc 4.5.3
compiler.armg453.supportsBinary=false
compiler.armg453.needsMulti=false
compiler.armg463.exe=/usr/bin/arm-linux-gnueabi-g++-4.6
compiler.armg463.alias=/usr/bin/arm-linux-gnueabi-g++-4.6
compiler.armg463.name=ARM gcc 4.6.3
compiler.armg463.supportsBinary=false
compiler.armg463.needsMulti=false
################################
# MSP and AVR
@ -73,7 +75,9 @@ compiler.avrg453.exe=/usr/bin/avr-g++
compiler.avrg453.alias=/usr/bin/avr-g++
compiler.avrg453.name=AVR gcc 4.5.3
compiler.avrg453.supportsBinary=false
compiler.avrg453.needsMulti=false
compiler.msp430g453.exe=/usr/bin/msp430-g++
compiler.msp430g453.alias=/usr/bin/msp430-g++
compiler.msp430g453.name=MSP430 gcc 4.5.3
compiler.msp430g453.supportsBinary=false
compiler.msp430g453.needsMulti=false

@ -74,6 +74,7 @@ function Compile(compilers) {
this.cacheHits = 0;
this.cacheMisses = 0;
this.compileQueue = new Queue(gccProps("maxConcurrentCompiles", 1), Infinity);
this.multiarch = null;
}
Compile.prototype.newTempDir = function () {
@ -123,12 +124,18 @@ Compile.prototype.getRemote = function (compiler) {
return false;
};
Compile.prototype.runCompiler = function (compiler, options) {
Compile.prototype.runCompiler = function (compiler, options, needsMulti) {
var okToCache = true;
var env = {};
if (needsMulti && this.multiarch) {
env.LIBRARY_PATH = '/usr/lib/' + this.multiarch;
env.C_INCLUDE_PATH = '/usr/include/' + this.multiarch;
env.CPLUS_INCLUDE_PATH = '/usr/include/' + this.multiarch;
}
var child = child_process.spawn(
compiler,
options,
{detached: true}
{detached: true, env: env}
);
var stdout = "";
var stderr = "";
@ -180,9 +187,7 @@ Compile.prototype.getMultiarch = function () {
var multi = child_process.execSync("gcc -print-multiarch").toString().trim();
if (multi) {
console.log("Multiarch: " + multi);
process.env.LIBRARY_PATH = '/usr/lib/' + multi;
process.env.C_INCLUDE_PATH = '/usr/include/' + multi;
process.env.CPLUS_INCLUDE_PATH = '/usr/include/' + multi;
this.multiarch = multi;
} else {
console.log("No multiarch");
}
@ -265,7 +270,7 @@ Compile.prototype.compile = function (source, compiler, options, filters) {
compilerExe = compilerWrapper;
}
var maxSize = gccProps("max-asm-size", 8 * 1024 * 1024);
return self.runCompiler(compilerExe, options).then(function (result) {
return self.runCompiler(compilerExe, options, compilerInfo.needsMulti).then(function (result) {
result.dirPath = dirPath;
if (result.code !== 0) {
result.asm = "<Compilation failed>";

Loading…
Cancel
Save