aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/compilers.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-11-12 23:31:45 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2017-11-26 17:34:01 +0200
commitfa6f01d096fbf3d84d68070d6592cd8d5b761e1b (patch)
treefcf1cde46fafacf70fcd720497166315fb1bc4dd /mesonbuild/compilers/compilers.py
parent655137a74b366a3c03df24cedeafa747787f15f5 (diff)
downloadmeson-fa6f01d096fbf3d84d68070d6592cd8d5b761e1b.zip
meson-fa6f01d096fbf3d84d68070d6592cd8d5b761e1b.tar.gz
meson-fa6f01d096fbf3d84d68070d6592cd8d5b761e1b.tar.bz2
Use absolute paths for rpaths on OSX.
Diffstat (limited to 'mesonbuild/compilers/compilers.py')
-rw-r--r--mesonbuild/compilers/compilers.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 032ca69..c2dbad7 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -817,6 +817,16 @@ class Compiler:
def get_instruction_set_args(self, instruction_set):
return None
+ def build_osx_rpath_args(self, build_dir, rpath_paths, build_rpath):
+ if not rpath_paths and not build_rpath:
+ return []
+ # On OSX, rpaths must be absolute.
+ abs_rpaths = [os.path.join(build_dir, p) for p in rpath_paths]
+ if build_rpath != '':
+ abs_rpaths.append(build_rpath)
+ args = ['-Wl,-rpath,' + rp for rp in abs_rpaths]
+ return args
+
def build_unix_rpath_args(self, build_dir, from_dir, rpath_paths, build_rpath, install_rpath):
if not rpath_paths and not install_rpath and not build_rpath:
return []
@@ -879,7 +889,11 @@ def get_gcc_soname_args(gcc_type, prefix, shlib_name, suffix, path, soversion, i
elif gcc_type == GCC_OSX:
if is_shared_module:
return []
- return ['-install_name', os.path.join(path, 'lib' + shlib_name + '.dylib')]
+ install_name = prefix + shlib_name
+ if soversion is not None:
+ install_name += '.' + soversion
+ install_name += '.dylib'
+ return ['-install_name', os.path.join('@rpath', install_name)]
else:
raise RuntimeError('Not implemented yet.')