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.
53 lines
1.2 KiB
53 lines
1.2 KiB
5 years ago
|
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
|