Skip to content

Commit

Permalink
build, win: use target_arch to link with node.lib
Browse files Browse the repository at this point in the history
Using `target_arch` in addon.gypi to link against Node.js library. This
variable was written into build/config.gypi on the `configure` stage.

Do not copy node.lib into node_root_dir/Release or node_root_dir/Debug
on Windows, link it from node_root_dir/target_arch directory.

PR-URL: #964
Reviewed-By: João Reis <[email protected]>
  • Loading branch information
pmed authored and joaocgreis committed May 15, 2017
1 parent c307b30 commit 0913b2d
Show file tree
Hide file tree
Showing 3 changed files with 3 additions and 33 deletions.
2 changes: 1 addition & 1 deletion addon.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@
'-luuid.lib',
'-lodbc32.lib',
'-lDelayImp.lib',
'-l"<(node_root_dir)/$(ConfigurationName)/<(node_lib_file)"'
'-l"<(node_root_dir)/<(target_arch)/<(node_lib_file)"'
],
'msvs_disabled_warnings': [
# warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent<T>'
Expand Down
31 changes: 2 additions & 29 deletions lib/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ var fs = require('graceful-fs')
, glob = require('glob')
, log = require('npmlog')
, which = require('which')
, mkdirp = require('mkdirp')
, exec = require('child_process').exec
, processRelease = require('./process-release')
, win = process.platform === 'win32'
Expand All @@ -36,7 +35,6 @@ function build (gyp, argv, callback) {
, config
, arch
, nodeDir
, copyDevLib

loadConfigGypi()

Expand All @@ -60,7 +58,6 @@ function build (gyp, argv, callback) {
buildType = config.target_defaults.default_configuration
arch = config.variables.target_arch
nodeDir = config.variables.nodedir
copyDevLib = config.variables.copy_dev_lib == 'true'

if ('debug' in gyp.opts) {
buildType = gyp.opts.debug ? 'Debug' : 'Release'
Expand Down Expand Up @@ -115,7 +112,7 @@ function build (gyp, argv, callback) {
return
}
log.verbose('`which` succeeded for `' + command + '`', execPath)
copyNodeLib()
doBuild()
})
}

Expand Down Expand Up @@ -180,36 +177,12 @@ function build (gyp, argv, callback) {
return
}
command = msbuildPath
copyNodeLib()
doBuild()
})
})()
})
}

/**
* Copies the node.lib file for the current target architecture into the
* current proper dev dir location.
*/

function copyNodeLib () {
if (!win || !copyDevLib) return doBuild()

var buildDir = path.resolve(nodeDir, buildType)
, archNodeLibPath = path.resolve(nodeDir, arch, release.name + '.lib')
, buildNodeLibPath = path.resolve(buildDir, release.name + '.lib')

mkdirp(buildDir, function (err, isNew) {
if (err) return callback(err)
log.verbose('"' + buildType + '" dir needed to be created?', isNew)
var rs = fs.createReadStream(archNodeLibPath)
, ws = fs.createWriteStream(buildNodeLibPath)
log.verbose('copying "' + release.name + '.lib" for ' + arch, buildNodeLibPath)
rs.pipe(ws)
rs.on('error', callback)
ws.on('error', callback)
rs.on('end', doBuild)
})
}

/**
* Actually spawn the process and compile the module.
Expand Down
3 changes: 0 additions & 3 deletions lib/configure.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,9 +144,6 @@ function configure (gyp, argv, callback) {
// set the node development directory
variables.nodedir = nodeDir

// don't copy dev libraries with nodedir option
variables.copy_dev_lib = !gyp.opts.nodedir

// disable -T "thin" static archives by default
variables.standalone_static_library = gyp.opts.thin ? 0 : 1

Expand Down

0 comments on commit 0913b2d

Please sign in to comment.