Skip to content

Commit

Permalink
gyp,build: consistent shared library location
Browse files Browse the repository at this point in the history
  • Loading branch information
rvagg committed Oct 13, 2020
1 parent 44a66ad commit 86281ab
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 19 deletions.
8 changes: 3 additions & 5 deletions test/common/shared-lib-util.js
Expand Up @@ -17,11 +17,11 @@ function addLibraryPath(env) {

env.LD_LIBRARY_PATH =
(env.LD_LIBRARY_PATH ? env.LD_LIBRARY_PATH + path.delimiter : '') +
path.join(kExecPath, 'lib.target');
kExecPath;
// For AIX.
env.LIBPATH =
(env.LIBPATH ? env.LIBPATH + path.delimiter : '') +
path.join(kExecPath, 'lib.target');
kExecPath;
// For Mac OSX.
env.DYLD_LIBRARY_PATH =
(env.DYLD_LIBRARY_PATH ? env.DYLD_LIBRARY_PATH + path.delimiter : '') +
Expand All @@ -34,10 +34,8 @@ function addLibraryPath(env) {
function getSharedLibPath() {
if (common.isWindows) {
return path.join(kExecPath, 'node.dll');
} else if (common.isOSX) {
return path.join(kExecPath, `libnode.${kShlibSuffix}`);
}
return path.join(kExecPath, 'lib.target', `libnode.${kShlibSuffix}`);
return path.join(kExecPath, `libnode.${kShlibSuffix}`);
}

// Get the binary path of stack frames.
Expand Down
20 changes: 10 additions & 10 deletions tools/gyp/pylib/gyp/generator/make.py
Expand Up @@ -1621,10 +1621,8 @@ def WriteTarget(
if any(dep.endswith(".so") or ".so." in dep for dep in deps):
# We want to get the literal string "$ORIGIN"
# into the link command, so we need lots of escaping.
ldflags.append(r"-Wl,-rpath=\$$ORIGIN/lib.%s/" % self.toolset)
ldflags.append(
r"-Wl,-rpath-link=\$(builddir)/lib.%s/" % self.toolset
)
ldflags.append(r"-Wl,-rpath=\$$ORIGIN/")
ldflags.append(r"-Wl,-rpath-link=\$(builddir)/")
library_dirs = config.get("library_dirs", [])
ldflags += [("-L%s" % library_dir) for library_dir in library_dirs]
self.WriteList(ldflags, "LDFLAGS_%s" % configname)
Expand Down Expand Up @@ -2172,14 +2170,16 @@ def ExpandInputRoot(self, template, expansion, dirname):

def _InstallableTargetInstallPath(self):
"""Returns the location of the final output for an installable target."""
# Functionality removed for all platforms to match Xcode and hoist
# shared libraries into PRODUCT_DIR for users:
# Xcode puts shared_library results into PRODUCT_DIR, and some gyp files
# rely on this. Emulate this behavior for mac.
if self.type == "shared_library" and (
self.flavor != "mac" or self.toolset != "target"
):
# Install all shared libs into a common directory (per toolset) for
# convenient access with LD_LIBRARY_PATH.
return "$(builddir)/lib.%s/%s" % (self.toolset, self.alias)
# if self.type == "shared_library" and (
# self.flavor != "mac" or self.toolset != "target"
# ):
# # Install all shared libs into a common directory (per toolset) for
# # convenient access with LD_LIBRARY_PATH.
# return "$(builddir)/lib.%s/%s" % (self.toolset, self.alias)
return "$(builddir)/" + self.alias


Expand Down
4 changes: 0 additions & 4 deletions tools/install.py
Expand Up @@ -132,10 +132,6 @@ def files(action):
output_file += '.dll'
else:
output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix')
# GYP will output to lib.target except on OS X, this is hardcoded
# in its source - see the _InstallableTargetInstallPath function.
if sys.platform != 'darwin':
output_prefix += 'lib.target/'

if 'false' == variables.get('node_shared'):
action([output_prefix + output_file], 'bin/' + output_file)
Expand Down

0 comments on commit 86281ab

Please sign in to comment.