aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/linkers.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/linkers.py')
-rw-r--r--mesonbuild/linkers.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/mesonbuild/linkers.py b/mesonbuild/linkers.py
index 86e6aac..d8d2e65 100644
--- a/mesonbuild/linkers.py
+++ b/mesonbuild/linkers.py
@@ -1278,25 +1278,38 @@ class AIXDynamicLinker(PosixDynamicLinkerMixin, DynamicLinker):
id = 'ld.aix'
def get_always_args(self) -> T.List[str]:
- return self._apply_prefix(['-bsvr4', '-bnoipath', '-bbigtoc']) + super().get_always_args()
+ return self._apply_prefix(['-bnoipath', '-bbigtoc']) + super().get_always_args()
def no_undefined_args(self) -> T.List[str]:
- return self._apply_prefix(['-z', 'defs'])
+ return self._apply_prefix(['-bernotok'])
def get_allow_undefined_args(self) -> T.List[str]:
- return self._apply_prefix(['-z', 'nodefs'])
+ return self._apply_prefix(['-berok'])
def build_rpath_args(self, env: 'Environment', build_dir: str, from_dir: str,
rpath_paths: str, build_rpath: str,
install_rpath: str) -> T.Tuple[T.List[str], T.Set[bytes]]:
- all_paths = mesonlib.OrderedSet(['/opt/freeware/lib']) # for libgcc_s.a
- for p in rpath_paths:
- all_paths.add(os.path.join(build_dir, p))
- if build_rpath != '':
- all_paths.add(build_rpath)
+ all_paths = mesonlib.OrderedSet() # type: mesonlib.OrderedSet[str]
+ # install_rpath first, followed by other paths, and the system path last
if install_rpath != '':
all_paths.add(install_rpath)
- return (self._apply_prefix([x for p in all_paths for x in ('-R', p)]), set())
+ if build_rpath != '':
+ all_paths.add(build_rpath)
+ for p in rpath_paths:
+ all_paths.add(os.path.join(build_dir, p))
+ # We should consider allowing the $LIBPATH environment variable
+ # to override sys_path.
+ sys_path = env.get_compiler_system_dirs(self.for_machine)
+ if len(sys_path) == 0:
+ # get_compiler_system_dirs doesn't support our compiler.
+ # Use the default system library path
+ all_paths.update(['/usr/lib','/lib'])
+ else:
+ # Include the compiler's default library paths, but filter out paths that don't exist
+ for p in sys_path:
+ if os.path.isdir(p):
+ all_paths.add(p)
+ return (self._apply_prefix('-blibpath:' + ':'.join(all_paths)), set())
def thread_flags(self, env: 'Environment') -> T.List[str]:
return ['-pthread']