123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- module.exports = exports = build
- var fs = require('graceful-fs')
- , rm = require('rimraf')
- , path = require('path')
- , glob = require('glob')
- , log = require('npmlog')
- , which = require('which')
- , exec = require('child_process').exec
- , processRelease = require('./process-release')
- , win = process.platform === 'win32'
- exports.usage = 'Invokes `' + (win ? 'msbuild' : 'make') + '` and builds the module'
- function build (gyp, argv, callback) {
- var platformMake = 'make'
- if (process.platform === 'aix') {
- platformMake = 'gmake'
- } else if (process.platform.indexOf('bsd') !== -1) {
- platformMake = 'gmake'
- } else if (win && argv.length > 0) {
- argv = argv.map(function(target) {
- return '/t:' + target
- })
- }
- var release = processRelease(argv, gyp, process.version, process.release)
- , makeCommand = gyp.opts.make || process.env.MAKE || platformMake
- , command = win ? 'msbuild' : makeCommand
- , buildDir = path.resolve('build')
- , configPath = path.resolve(buildDir, 'config.gypi')
- , jobs = gyp.opts.jobs || process.env.JOBS
- , buildType
- , config
- , arch
- , nodeDir
- loadConfigGypi()
-
- function loadConfigGypi () {
- fs.readFile(configPath, 'utf8', function (err, data) {
- if (err) {
- if (err.code == 'ENOENT') {
- callback(new Error('You must run `node-gyp configure` first!'))
- } else {
- callback(err)
- }
- return
- }
- config = JSON.parse(data.replace(/\#.+\n/, ''))
-
- buildType = config.target_defaults.default_configuration
- arch = config.variables.target_arch
- nodeDir = config.variables.nodedir
- if ('debug' in gyp.opts) {
- buildType = gyp.opts.debug ? 'Debug' : 'Release'
- }
- if (!buildType) {
- buildType = 'Release'
- }
- log.verbose('build type', buildType)
- log.verbose('architecture', arch)
- log.verbose('node dev dir', nodeDir)
- if (win) {
- findSolutionFile()
- } else {
- doWhich()
- }
- })
- }
-
|