aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/c.py
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild/compilers/c.py')
-rw-r--r--mesonbuild/compilers/c.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index af3e2c4..aae98cb 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -898,12 +898,14 @@ class CCompiler(Compiler):
return f
return None
- def find_library_real(self, libname, env, extra_dirs, code, libtype):
+ def find_library_real(self, libname, env, extra_dirs, code, extra_args, libtype):
+ if not isinstance(extra_args, list):
+ extra_args = [extra_args]
# First try if we can just add the library as -l.
# Gcc + co seem to prefer builtin lib dirs to -L dirs.
# Only try to find std libs if no extra dirs specified.
if not extra_dirs:
- args = ['-l' + libname]
+ args = extra_args + ['-l' + libname]
if self.links(code, env, extra_args=args):
return args
# Not found or we want to use a specific libtype? Try to find the
@@ -936,19 +938,19 @@ class CCompiler(Compiler):
# symbols from the main C file.
extra_link_args = self.get_link_whole_for([trial])
extra_link_args = self.linker_to_compiler_args(extra_link_args)
- if self.links(code, env, extra_args=extra_link_args):
+ if self.links(code, env, extra_args=(extra_args + extra_link_args)):
return [trial]
return None
- def find_library_impl(self, libname, env, extra_dirs, code, libtype):
+ def find_library_impl(self, libname, env, extra_dirs, code, extra_args, libtype):
# These libraries are either built-in or invalid
if libname in self.ignore_libs:
return []
if isinstance(extra_dirs, str):
extra_dirs = [extra_dirs]
- key = (tuple(self.exelist), libname, tuple(extra_dirs), code, libtype)
+ key = (tuple(self.exelist), libname, tuple(extra_dirs), code, tuple(extra_args), libtype)
if key not in self.find_library_cache:
- value = self.find_library_real(libname, env, extra_dirs, code, libtype)
+ value = self.find_library_real(libname, env, extra_dirs, code, extra_args, libtype)
self.find_library_cache[key] = value
else:
value = self.find_library_cache[key]
@@ -956,9 +958,9 @@ class CCompiler(Compiler):
return None
return value[:]
- def find_library(self, libname, env, extra_dirs, libtype='default'):
+ def find_library(self, libname, env, extra_dirs, extra_args, libtype='default'):
code = 'int main(int argc, char **argv) { return 0; }'
- return self.find_library_impl(libname, env, extra_dirs, code, libtype)
+ return self.find_library_impl(libname, env, extra_dirs, code, extra_args, libtype)
def thread_flags(self, env):
if for_haiku(self.is_cross, env):