Example #1
0
File: utils.js Project: qt-labs/qbs
 BlackboxOutputArtifactTracker.prototype.artifacts = function (outputDirectory) {
     var process;
     var fakeOutputDirectory;
     try {
         fakeOutputDirectory = new TemporaryDir();
         if (!fakeOutputDirectory.isValid())
             throw "could not create temporary directory";
         process = new Process();
         if (this.commandEnvironmentFunction) {
             var env = this.commandEnvironmentFunction(fakeOutputDirectory.path());
             for (var key in env)
                 process.setEnv(key, env[key]);
         }
         process.exec(this.command, this.commandArgsFunction(fakeOutputDirectory.path()), true);
         var artifacts = [];
         if (this.fileTaggers) {
             var files = this.findFiles(fakeOutputDirectory.path());
             for (var i = 0; i < files.length; ++i)
                 artifacts.push(this.createArtifact(fakeOutputDirectory.path(), files[i]));
         }
         if (this.processStdOutFunction)
             artifacts = artifacts.concat(this.processStdOutFunction(process.readStdOut()));
         artifacts = this.fixArtifactPaths(artifacts, outputDirectory, fakeOutputDirectory.path());
         return artifacts;
     }
     finally {
         if (process)
             process.close();
         if (fakeOutputDirectory)
             fakeOutputDirectory.remove();
     }
 };
Example #2
0
File: sdcc.js Project: qt-labs/qbs
function dumpMacros(compilerFilePath, architecture) {
    var tempDir = new TemporaryDir();
    var fakeIn = new TextFile(tempDir.path() + "/empty-source.c", TextFile.WriteOnly);
    var args = [ fakeIn.filePath(), "-dM", "-E" ];

    var targetFlag = targetArchitectureFlag(architecture);
    if (targetFlag)
        args.push(targetFlag);

    var p = new Process();
    p.exec(compilerFilePath, args, true);
    var map = {};
    p.readStdOut().trim().split(/\r?\n/g).map(function (line) {
        var parts = line.split(" ", 3);
        map[parts[1]] = parts[2];
    });
    return map;
}