You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.2 KiB
52 lines
1.2 KiB
var gyp = require('./gyp') |
|
var util = require('./util') |
|
|
|
function runGyp (opts, version, cb) { |
|
var log = opts.log |
|
if (!opts.preinstall) return run() |
|
|
|
log.verbose('executing preinstall') |
|
util.exec(opts.preinstall, function (err) { |
|
if (err) return cb(err) |
|
run() |
|
}) |
|
|
|
function run () { |
|
var args = ['node', 'index.js'] |
|
if (opts.backend === 'node-ninja') { |
|
args.push('configure') |
|
args.push('build') |
|
args.push('--builddir=build/' + version) |
|
} else { |
|
args.push('rebuild') |
|
} |
|
args.push('--target=' + version) |
|
args.push('--target_arch=' + opts.arch) |
|
if (opts.debug) args.push('--debug') |
|
|
|
gyp({ |
|
gyp: opts.gyp, |
|
backend: opts.backend, |
|
log: opts.log, |
|
args: args, |
|
version: version, |
|
filter: function (command) { |
|
if (command.name === 'configure') { |
|
return configurePreGyp(command, opts) |
|
} |
|
} |
|
}, cb) |
|
} |
|
} |
|
|
|
function configurePreGyp (command, opts) { |
|
var binary = opts.pkg.binary |
|
if (binary && binary.module_name) { |
|
command.args.push('-Dmodule_name=' + binary.module_name) |
|
} |
|
if (binary && binary.module_path) { |
|
command.args.push('-Dmodule_path=' + binary.module_path) |
|
} |
|
} |
|
|
|
module.exports = runGyp
|
|
|